diff --git a/GenericKeywords.robot b/GenericKeywords.robot
index 79c22093562f3f22402903aa74aa914d299d7321..0a4a1226ba8c490b71dfdaa66294a2bbc28797ad 100644
--- a/GenericKeywords.robot
+++ b/GenericKeywords.robot
@@ -24,9 +24,10 @@ Check HTTP Response Body Json Schema Is
 Should Be Present In Json List
     [Arguments]     ${expr}   ${json_field}   ${json_value}
     Log    Check if ${json_field} is present in ${expr} with the value ${json_value}
-    :FOR  ${item}  IN  @{expr}
-    \  ${are_equal}=    Should Be Equal As Strings    ${item["${json_field}"]}    ${json_value}
-    \  Exit For Loop If    ${are_equal}
+    FOR  ${item}  IN  @{expr}
+      ${are_equal}=    Should Be Equal As Strings    ${item["${json_field}"]}    ${json_value}
+      Exit For Loop If    ${are_equal}
+    END
     Log    Item found ${item}
     [return]    ${item}
     
@@ -63,4 +64,12 @@ Check HTTP Response Contain Header with value
     Check HTTP Response Header Contains    ${HEADER_TOCHECK}
     Should Be Equal As Strings    ${value}    ${response['headers']['Content-Type']}    
 
+Get value entry from JSON file 
+    [Arguments]       ${filename}   ${key}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${filename}    .json
+    ${body}=    Get File    ${file}
+    ${data}=   Evaluate    ${body}
+    ${value_key}    Set Variable   ${data}[${key}]
+    [return]   ${value_key}
 
+        
\ No newline at end of file
diff --git a/MEC010p2/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot
index 15f350f64e7e6bf462a6278fd5887cdc8c85ca08..3c9fc0e3eec23888bb8b437b3f266b0a538b28a0 100644
--- a/MEC010p2/MEO/GRANT/Grant.robot
+++ b/MEC010p2/MEO/GRANT/Grant.robot
@@ -8,14 +8,18 @@ Library     REST    ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT}    ssl_verify=false
 Library     OperatingSystem
 
 
+Test Setup       Test Setup   ${GRANT_ID_PLACEHOLDER}   grantRequest      ${NO_ACTION}
+Test Teardown    Test TearDown    ${GRANT_ID_PLACEHOLDER}   grantRequest      ${NO_ACTION}
+
+
 *** Test Cases ***
 TC_MEC_MEC010p2_MEO_GRANT_001_OK
     [Documentation]   TP_MEC_MEC010p2_MEO_GRANT_001_OK
     ...  Check that MEO sends a synchronous grant response when a grant request is requested
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest)
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant)
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Create a GRANT request    grantRequest
     Check HTTP Response Status Code Is    201
@@ -25,8 +29,8 @@ TC_MEC_MEC010p2_MEO_GRANT_001_OK
 TC_MEC_MEC010p2_MEO_GRANT_001_BR
     [Documentation]   TP_MEC_MEC010p2_MEO_GRANT_001_BR
     ...  Check that MEO responds with an error when it receives a malformed request when a new grant request is performed
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.6.1.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant)
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Create a GRANT request    grantBadRequest
     Check HTTP Response Status Code Is    400
@@ -34,9 +38,9 @@ TC_MEC_MEC010p2_MEO_GRANT_001_BR
 TC_MEC_MEC010p2_MEO_GRANT_002_OK
     [Documentation]  TP_MEC_MEC010p2_MEO_GRANT_002_OK  
     ...  Check that MEO sends a synchronous grant response when a grant request is requested
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1        //GrantRequest
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1        //GrantRequest
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Create a GRANT request    grantRequest2
     Check HTTP Response Status Code Is    201
@@ -44,68 +48,106 @@ TC_MEC_MEC010p2_MEO_GRANT_002_OK
     Check HTTP Response Body Json Schema Is   Grant
     
 
-
 TC_MEC_MEC010p2_MEO_GRANT_003_OK
     [Documentation]   TP_MEC_MEC010p2_MEO_GRANT_003_OK
     ...  Check that MEO sends an asynchronous grant response when a grant request is requested
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest)
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest)
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant)
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    ${GRANT_ID_VALUE}   Get value entry from JSON file    grantRequestAsynchronous  id
     Create a GRANT request    grantRequestAsynchronous
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
 
 
-
 TC_MEC_MEC010p2_MEO_GRANT_004_OK
     [Documentation]  TP_MEC_MEC010p2_MEO_GRANT_004_OK 
     ...  Check that MEO sends an asynchronous grant response when a grant request is requested
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest)
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant)
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest)
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant)
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    ${GRANT_ID_VALUE}   Get value entry from JSON file    grantRequestAsynchronous2  id
     Create a GRANT request    grantRequestAsynchronous2
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
-    
+ 
 
 TC_MEC_MEC010p2_MEO_GRANT_005_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_GRANT_005_OK
     ...  Check that MEO sends the status of a grant request when a query on a granting ID is performed.
     ...  The process of creating the grant is ongoing, no grant is available yet 
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1  
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.2.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1  
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get an individual grant    ${GRANT_ID_ACCEPTED}
+    [Setup]      Test Setup   ${None}   grantRequestAsynchronous    ${REGISTER_ACTION}
+    ${GRANT_ID_VALUE}   Get value entry from JSON file    grantRequestAsynchronous  id
+    Get an individual grant    ${GRANT_ID_VALUE}
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
+    Check HTTP Response Body Json Schema Is   Grant
+
+    
     
 TC_MEC_MEC010p2_MEO_GRANT_006_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_GRANT_006_OK
     ...  Check that MEO sends the status of a grant request when a query on a granting ID is performed.
     ...  The process of creating the grant is ongoing, no grant is available yet 
-    ...  ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2
-    ...  ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1  
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.5.2.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1  
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get an individual grant    ${GRANT_ID}
+    [Setup]      Test Setup   ${None}   grantRequest    ${REGISTER_ACTION}
+    Get an individual grant     ${setup_response['body']['id']}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Header Contains    Location
     Check HTTP Response Body Json Schema Is   Grant
+
     
+
 TC_MEC_MEC010p2_MEO_GRANT_006_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_GRANT_006_NF
     ...  Check that MEO responds with an error when it receives 
     ...  a request for returning a grant referred with a wrong ID
     ...  ETSI GS MEC 010-2 2.1.1, clause 7.5.2.3.2
     [Tags]    PIC_GRANTS_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    ##No test setup can be applied because delete operation on grant is not supported (yet).
     Get an individual grant    ${NOT_EXISTING_GRANT_ID}
     Check HTTP Response Status Code Is    404
     
    
 
 *** Keywords ***
+
+Test Setup 
+    [Arguments]    ${grantId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}    allow_redirects=false
+       ${output}=    Output    response
+       Set Suite Variable    ${setup_response}    ${output}
+    END
+    
+Test Teardown  
+    [Arguments]     ${grantId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+        Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}    allow_redirects=false
+    END
+   
+   
+
 Create a GRANT request
     [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
diff --git a/MEC010p2/MEO/GRANT/environment/variables.txt b/MEC010p2/MEO/GRANT/environment/variables.txt
index 603052eed8800f22bef121a344833af0ff018205..e8ef3c681c82cdcedcbbe1d6a6b1462fae73dee7 100644
--- a/MEC010p2/MEO/GRANT/environment/variables.txt
+++ b/MEC010p2/MEO/GRANT/environment/variables.txt
@@ -10,8 +10,15 @@ ${apiRoot}
 ${apiName}        granting
 ${apiVersion}     v1
 
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+
+
 # Specific variables
 ${GRANT_ID}                        e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${GRANT_ID_PLACEHOLDER}            grantIdPlaceHolder
 ${GRANT_ID_ACCEPTED}               abcdee2b-6e50-4f33-ab09-8bf05850abcd
 ${NOT_EXISTING_GRANT_ID}           NOT_EXISTING_GRANT_ID
 ${APP_INSTANCE_ID}                 456
diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequest.json b/MEC010p2/MEO/GRANT/jsons/grantRequest.json
index 7c6b0e9f419a7d1fa783577143d8d8ec22552533..111af7a45d6ea764e52a56f7820ce876405b3896 100644
--- a/MEC010p2/MEO/GRANT/jsons/grantRequest.json
+++ b/MEC010p2/MEO/GRANT/jsons/grantRequest.json
@@ -1,6 +1,5 @@
 {
-	"id": "123",
-	"appInstanceId": "456",
+	"appInstanceId": "123",
 	"appLcmOpOccId": "789",
 	"appDId":"appDId",
 	"operation":"INSTANTIATE",
diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequest2.json b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json
index 4a9a1d48bc09742bdf760c7288e8d4a3541302cb..a70af24286889029277bdcfe45fa908868d0a94d 100644
--- a/MEC010p2/MEO/GRANT/jsons/grantRequest2.json
+++ b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json
@@ -1,8 +1,8 @@
 {
-	"id": "123",
-	"appInstanceId": "456",
+	"appInstanceId": "123",
 	"appLcmOpOccId": "789",
 	"operation": "OPERATE",
+	"appDId":"appDId",
 	"addResources": [
     {
       "resourceDefinitionId": "resourceDefinitionId",
diff --git a/MEC010p2/MEO/PKGM/AppPkgMgt.robot b/MEC010p2/MEO/PKGM/AppPkgMgt.robot
index 6c47a0d0fc10f4a6330f0c07efaf9de6e04ed973..67ab59a1c2f0da8befe00691135e244ad7eb23a8 100644
--- a/MEC010p2/MEO/PKGM/AppPkgMgt.robot
+++ b/MEC010p2/MEO/PKGM/AppPkgMgt.robot
@@ -7,33 +7,33 @@ Resource    ../../../GenericKeywords.robot
 Library     REST    ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT}    ssl_verify=false
 Library     BuiltIn
 Library     OperatingSystem
-#Library     MockServerLibrary
+Library      libraries/Server.py
+
+Test Setup       Test Setup   ${APP_PKG_ID_PLACEHOLDER}   AppPkgInfo      ${NO_ACTION}
+Test Teardown    Test TearDown    ${APP_PKG_ID_PLACEHOLDER}   AppPkgInfo      ${NO_ACTION}
 
 
 *** Test Cases ***
 TC_MEC_MEC010p2_MEO_PKGM_001_OK
     [Documentation]  TP_MEC_MEC010p2_MEO_PKGM_001_OK  
     ...  Check that MEO creates a new App Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo)
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg)
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo)
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.2.2-1 (AppPkg)
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Post Request to create new App Package Resource        CreateAppPackage.json
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is   AppPkgInfo
     Check HTTP Response Header Contains    Location
-    Should Be Equal As Strings  ${response['body']['appDVersion']}    ${APP_PKG_VERSION}
-    Should Be Equal As Strings  ${response['body']['checksum']['algorithm']}    ${CHECKSUM}
-    Should Be Equal As Strings  ${response['body']['operationalState']}    ${OPERATIONAL_STATE}
     Should Be Equal As Strings  ${response['body']['onboardingState']}    ${ONBOARDING_STATE}
-    Should Be Equal As Strings  ${response['body']['usageState']}     ${USAGE_STATE}
+    [Teardown]    Test TearDown     ${response['body']['id']}   ${None}      ${REMOVE_ACTION}
 
 
 TC_MEC_MEC010p2_MEO_PKGM_001_BR
     [Documentation]  TP_MEC_MEC010p2_MEO_PKGM_001_BR 
     ...  Check that MEO creates a new App Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg)
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.2.2-1 (AppPkg)
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Post Request to create new App Package Resource        CreateAppPackageBadRequest.json
     Check HTTP Response Status Code Is    400
@@ -43,36 +43,40 @@ TC_MEC_MEC010p2_MEO_PKGM_001_BR
 TC_MEC_MEC010p2_MEO_PKGM_002_01_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_002_01_OK
     ...    Check that MEO returns the list of App Packages when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET all app Packages
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
+    GET all app Packages 
     Check HTTP Response Status Code Is    200
     FOR    ${onBoardedAppPkgInfo}    IN    @{response['body']}
         Validate Json    AppPkgInfo.schema.json    ${onBoardedAppPkgInfo}
+        Should Be Equal As Strings  ${onBoardedAppPkgInfo['onboardingState']}    ${ONBOARDING_STATE}
     END
-
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
 
 
 TC_MEC_MEC010p2_MEO_PKGM_002_02_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_002_02_OK
     ...    Check that MEO returns the list of App Packages when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2 Note 3
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
     GET all onboarded app Packages
     Check HTTP Response Status Code Is    200
     FOR    ${onBoardedAppPkgInfo}    IN    @{response['body']}
         Validate Json    AppPkgInfo.schema.json    ${onBoardedAppPkgInfo}
+        Should Be Equal As Strings  ${onBoardedAppPkgInfo['onboardingState']}   ${ONBOARDING_STATE}
     END
-        
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
+       
+ 
 TC_MEC_MEC010p2_MEO_PKGM_002_BR
     [Documentation]    TP_MEC_MEO_PKGM_002_BR
     ...    Check that MEO responds with an error when it receives 
     ...    a malformed request for retrieving the list of existing App Packages
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     GET all APP Packages with filters    ${MALFORMED_FILTER_NAME}    ${FILTER_VALUE}
     Check HTTP Response Status Code Is    400
@@ -81,38 +85,39 @@ TC_MEC_MEC010p2_MEO_PKGM_002_BR
 TC_MEC_MEC010p2_MEO_PKGM_003_01_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_003_01_OK
     ...    Check that MEO returns the an App Package when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
     GET an app Package identified by    ${ON_BOARDED_APP_PKG_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   AppPkgInfo
     Should Be Equal As Strings  ${response['body']['id']}  ${ON_BOARDED_APP_PKG_ID}
-    Should Be Equal As Strings  ${response['body']['appName']}  ${APP_NAME}
-    
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
+
 
 
 TC_MEC_MEC010p2_MEO_PKGM_003_02_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_003_02_OK
     ...    Check that MEO returns the an onboarded App Package when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
     GET an onboarded app Package identified by    ${ON_BOARDED_APP_PKG_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   AppPkgInfo
     Should Be Equal As Strings  ${response['body']['id']}  ${ON_BOARDED_APP_PKG_ID}
-    Should Be Equal As Strings  ${response['body']['appName']}  ${APP_NAME}
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
 
-    
+
+        
 TC_MEC_MEC010p2_MEO_PKGM_003_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_003_NF
     ...    Check that MEO responds with an error when it receives 
     ...    a request for retrieving a App Package referred with a wrong ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     GET an APP Package identified by    ${NON_EXISTENT_APP_PKG_ID}
     Check HTTP Response Status Code Is    404
@@ -121,19 +126,22 @@ TC_MEC_MEC010p2_MEO_PKGM_003_NF
 TC_MEC_MEC010p2_MEO_PKGM_004_OK
     [Documentation]    TP_MEC_MEO_PKGM_004_OK
     ...    Check that MEO deletes an App Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.4
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Delete an individual APP Package identified by    ${ON_BOARDED_APP_PKG_ID}
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
+    Delete an individual APP Package identified by     ${setup_response['body']['id']}
     Check HTTP Response Status Code Is    204
     Check HTTP Response Body is Empty
+
     
 
 TC_MEC_MEC010p2_MEO_PKGM_004_NF
     [Documentation]    TP_MEC_MEO_PKGM_004_NF
     ...    Check that MEO responds with an error when it receives 
     ...    a request for deleting an App Package referred with a wrong ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.4
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${NON_EXISTENT_APP_PKG_ID}   ${None}      ${REMOVE_ACTION}
     Delete an individual APP Package identified by    ${NON_EXISTENT_APP_PKG_ID}
     Check HTTP Response Status Code Is    404
 
@@ -141,29 +149,36 @@ TC_MEC_MEC010p2_MEO_PKGM_004_NF
 TC_MEC_MEC010p2_MEO_PKGM_005_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_005_OK
     ...    Check that MEO updates the operational state of an individual application package resource
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2"  //AppPkgInfoModifications
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
     Update Operational State for an app Package    ${ON_BOARDED_APP_PKG_ID}    AppPkgInfoModifications.json
     Check HTTP Response Body Json Schema Is   AppPkgInfoModifications
     Check HTTP Response Status Code Is    200
     Should Be Equal As Strings  ${response['body']['operationalState']}  ${OPERATIONAL_STATE}
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
 
 
 TC_MEC_MEC010p2_MEO_PKGM_005_BR
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_005_BR
     ...    Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2"  //AppPkgInfoModifications
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup    ${None}   CreateAppPackage      ${REGISTER_ACTION}
     Update Operational State for an app Package    ${ON_BOARDED_APP_PKG_ID}      AppPkgInfoModificationsBadRequest.json
     Check HTTP Response Status Code Is    400
+    [Teardown]    Test TearDown     ${setup_response['body']['id']}   ${None}      ${REMOVE_ACTION}
 
 TC_MEC_MEC010p2_MEO_PKGM_005_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_005_NF
     ...   Check that MEO responds with an error when it receives 
     ...   a request for updating an App Package referred with a wrong ID
-    ...   ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5
-    ...   ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2"  //AppPkgInfoModifications
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]    Test Setup     ${NON_EXISTENT_APP_PKG_ID}   ${None}      ${REMOVE_ACTION}
     Update Operational State for an app Package    ${NON_EXISTENT_APP_PKG_ID}      AppPkgInfoModificationsBadRequest.json
     Check HTTP Response Status Code Is    404
 
@@ -171,68 +186,89 @@ TC_MEC_MEC010p2_MEO_PKGM_005_NF
 TC_MEC_MEC010p2_MEO_PKGM_006_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_006_OK
     ...    Check that MEO service returns an application package subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7  ##Type: AppPkgSubscription 
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4  ##Type: AppPkgSubscriptionInfo 
+    [Tags]   PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]  Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
     Send a request for a subscription    AppPkgSubscription.json
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    AppPkgSubscriptionInfo
     Should Be Equal As Strings  ${response['body']['subscriptionType']}     ${SUBSCRIPTION_TYPE}
     Should Be Equal As Strings  ${response['body']['callbackUri']}     ${CALLBACK_URI}
+    [TearDown]   Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
+
     
 TC_MEC_MEC010p2_MEO_PKGM_006_BR
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_006_BR
     ...    Check that MEO service sends an error when it receives a  malformed request for creating a new subscription on AppPackages
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.1",
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4",
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7  ##Type: AppPkgSubscription 
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4  ##Type: AppPkgSubscriptionInfo 
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Send a request for a subscription    AppPkgSubscriptionBadRequest.json
     Check HTTP Response Status Code Is    400
     
 
+TC_MEC_MEC010p2_MEO_PKGM_007_OK_01
+   [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_007_OK_01
+    ...    Check that MEO service returns the list of Application Package 
+    ...    Subscriptions when requested
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.5.2    ##AppPkgSubscriptionLinkList
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]  Send a request for a subscription    AppPkgSubscription.json
+    Get all APP Package subscriptions
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionLinkList
+    [TearDown]   Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
+
 
-TC_MEC_MEC010p2_MEO_PKGM_007_OK
-   [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_007_OK
-    ...    Check that MEO service returns the list of Application Package Subscriptions when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+TC_MEC_MEC010p2_MEO_PKGM_007_OK_02
+   [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_007_OK_02
+    ...    Check that MEO service returns the list of Application Package 
+    ...    Subscriptions when requested
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.5.2     ##AppPkgSubscriptionLinkList
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]  Send a request for a subscription    AppPkgSubscription.json
     Get all APP Package subscriptions
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    AppPkgSubscriptionLinkList
+    [TearDown]   Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
+
 
 
 TC_MEC_MEC010p2_MEO_PKGM_008_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_008_OK
     ...    Check that MEO service returns an Application Package Subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2   ##AppPkgSubscriptionInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]  Send a request for a subscription    AppPkgSubscription.json
     Get an individual APP Package subscriptions    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    AppPkgSubscriptionInfo
     Should Be Equal As Strings  ${response['body']['id']}  ${SUBSCRIPTION_ID}
+    [TearDown]   Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
 
 TC_MEC_MEC010p2_MEO_PKGM_008_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_008_NF
     ...    Check that MEO service sends an error when it receives a query for a subscription on AppPackages  with a wrong identifier
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2   ##AppPkgSubscriptionInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an App Package Subscription identified by    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Get an individual APP Package subscriptions    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
     
 
-
 TC_MEC_MEC010p2_MEO_PKGM_009_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_009_OK
     ...    Check that MEO service deletes an Application Package Subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]  Send a request for a subscription    AppPkgSubscription.json
     Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    204
     Check HTTP Response Body is Empty
@@ -242,29 +278,44 @@ TC_MEC_MEC010p2_MEO_PKGM_009_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_009_NF
     ...    Check that MEO service sends an error when it receives a deletion request for a subscription on AppPackages 
     ...    with a wrong identifier
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an App Package Subscription identified by    NON_EXISTENT_SUBSCRIPTION_ID
     Delete an App Package Subscription identified by    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
+
+TC_MEC_MEC010p2_MEO_PKGM_010_OK
+    [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_009_NF
+    ...    Check that the MEO service sends a application package notification 
+    ...    if the MEO service has an associated subscription and the event is generated
+    ...    "ETSI GS MEC 010-2 3.1.1, clause 7.3.5.3.1",
+    ...    "ETSI GS MEC 010-2 3.1.1, clause 6.2.3.6.2"   ##AppPkgNotification
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Send a request for a subscription    AppPkgSubscription.json
+    Spawn Notification Server        AppPkgNotification
+    Validate Json   AppPkgNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
+        
 TC_MEC_MEC010p2_MEO_PKGM_011_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_011_OK
     ...    Check that MEO reads the content of the AppD of on-boarded individual application package resources when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2.2  ##AppD
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Post Request to create new App Package Resource      CreateAppPackage.json
     Get an AppD from App Package identified by    ${ON_BOARDED_APP_PKG_ID}
     Check HTTP Response Status Code Is    200
-    
+    [TearDown]   Delete an individual APP Package identified by    ${ON_BOARDED_APP_PKG_ID}
 
+    
 TC_MEC_MEC010p2_MEO_PKGM_011_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_011_NF
     ...    Check that MEO responds with an error when it receives 
     ...    a request to retrieve an application descriptor referred with a wrong app package ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2",
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an individual APP Package identified by    ${NON_EXISTING_APPD_ID}
     Get an AppD from App Package identified by    ${NON_EXISTING_APPD_ID}
     Check HTTP Response Status Code Is    404
 
@@ -272,50 +323,114 @@ TC_MEC_MEC010p2_MEO_PKGM_011_NF
 TC_MEC_MEC010p2_MEO_PKGM_012_01_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_012_01_OK
     ...    Check that MEO fetches the application package content identified by appPkgId when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Post Request to create new App Package Resource      CreateAppPackage.json
     Get app Package identified by    ${ON_BOARDED_APP_PKG_ID}      ${ACCEPTED_CONTENT_TYPE_ZIP}
     Check HTTP Response Status Code Is    200
+    [TearDown]   Delete an individual APP Package identified by  ${ON_BOARDED_APP_PKG_ID}
 
+        
 TC_MEC_MEC010p2_MEO_PKGM_012_02_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_012_02_OK
     ...    Check that MEO fetches the application package content identified by appPkgId when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Post Request to create new App Package Resource      CreateAppPackage.json
     Get onboarded app Package identified by    ${ON_BOARDED_APP_PKG_ID}     ${ACCEPTED_CONTENT_TYPE_ZIP}
     Check HTTP Response Status Code Is    200    
+    [TearDown]   Delete an individual APP Package identified by    ${ON_BOARDED_APP_PKG_ID}
 
 
 TC_MEC_MEC010p2_MEO_PKGM_012_BR
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_012_BR
     ...    Check that MEO service sends an error when it receives a malformed request
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
     Get app Package identified by    ${ON_BOARDED_APP_PKG_ID}      ${WRONG_CONTENT_TYPE}
     Check HTTP Response Status Code Is    400
+
+
+TC_MEC_MEC010p2_MEO_PKGM_012_01_NF
+    [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_012_01_NF
+    ...    Check that MEO service sends an error when it receives a request referring a wrong appPkgId
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an individual APP Package identified by    ${NOT_EXISTING_APP_PKG_ID}
+    Get onboarded app Package identified by    ${NOT_EXISTING_APP_PKG_ID}     ${ACCEPTED_CONTENT_TYPE_ZIP}
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC010p2_MEO_PKGM_012_02_NF
+    [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_012_01_NF
+    ...    Check that MEO service sends an error when it receives a request referring a wrong appPkgId
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an individual APP Package identified by    ${NON_EXISTING_ON_BOARDED_APPD_ID}
+    Get onboarded app Package identified by    ${NON_EXISTING_ON_BOARDED_APPD_ID}     ${ACCEPTED_CONTENT_TYPE_ZIP}
+    Check HTTP Response Status Code Is    404
+    
     
 TC_MEC_MEC010p2_MEO_PKGM_013_OK
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_013_OK
     ...    Check that MEO accepts application package when submitted
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an individual APP Package identified by    ${APP_PKG_ID}
     Submit application package    ${APP_PKG_ID}
     Check HTTP Response Status Code Is    202   
+    [TearDown]   Delete an individual APP Package identified by    ${APP_PKG_ID}
 
 
 TC_MEC_MEC010p2_MEO_PKGM_013_NF
     [Documentation]    TP_MEC_MEC010p2_MEO_PKGM_013_NF
     ...    Check that MEO returns an error when an application package with wrong id is submitted
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.3
+    ...    ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
+    [Setup]   Delete an individual APP Package identified by    ${NOT_EXISTING_APP_PKG_ID}
     Submit application package    ${NOT_EXISTING_APP_PKG_ID}
     Check HTTP Response Status Code Is    404      
       
 
 
 *** Keywords ***
+Test Setup 
+    [Arguments]     ${appPkgId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/app_packages   ${body}
+       ${output}=    Output    response
+       Set Suite Variable    ${setup_response}    ${output}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}
+   END
+    
+Test Teardown  
+    [Arguments]     ${appPkgId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/app_packages   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}
+   END
+   
+
 Post Request to create new App Package Resource
     [Arguments]    ${content}
     Log    Creating a new App Package
@@ -482,7 +597,6 @@ Get an individual APP Package subscriptions
     Set Suite Variable    ${response}    ${output} 
 
 
-
 Delete an App Package Subscription identified by
     [Arguments]    ${subId}
     Log    Deleting a subscription
@@ -493,4 +607,8 @@ Delete an App Package Subscription identified by
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
 
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    Set Suite Variable    ${payload_notification}    ${output}
     
\ No newline at end of file
diff --git a/MEC010p2/MEO/PKGM/environment/variables.txt b/MEC010p2/MEO/PKGM/environment/variables.txt
index bdfa447cacf5d10a354d6c51e26e3f7e611f053d..e377698fe18f3e95655c57a747fd54aab3cac5a0 100644
--- a/MEC010p2/MEO/PKGM/environment/variables.txt
+++ b/MEC010p2/MEO/PKGM/environment/variables.txt
@@ -10,6 +10,12 @@ ${apiRoot}
 ${apiName}        app_pkgm
 ${apiVersion}     v1
 
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+${APP_PKG_ID_PLACEHOLDER}    APP_PKG_ID_PLACEHOLDER
+
 # Specific variables
 ${APP_PKG_NAME}                     appName
 ${APP_PKG_VERSION}                  APP_PKG_VERSION
@@ -34,19 +40,17 @@ ${WRONG_CONTENT_TYPE}               application/json
 ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NOT_EXISTING_APP_PKG_ID}          NOT_EXISTING_APP_PKG_ID
 
-
+${NOT_EXISTING_ON_BOARDED_APP_PKG_ID}   NOT_EXISTING_ON_BOARDED_APP_PKG_ID
+${NON_EXISTING_ON_BOARDED_APPD_ID}      NON_EXISTING_ON_BOARDED_APPD_ID
 
 ${SUBSCRIPTION_TYPE}                AppPackageOnBoardingSubscription
 ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
 ${CALLBACK_URI}                     http://some.url/somepath
 
 
-# Notifications variables
-${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
-
-${callback_port}    9091
-${callback_uri}    http://172.22.1.7:${callback_port}
-${callback_endpoint}    /amsi/subscriptions
-${callback_endpoint_error}    /subs_404
-${total_polling_time}   2 min
-${polling_interval}     10 sec
\ No newline at end of file
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
\ No newline at end of file
diff --git a/MEC010p2/MEO/PKGM/jsons/AppPkgNotification.json b/MEC010p2/MEO/PKGM/jsons/AppPkgNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e1ae305947d2f739243b7a90d715af8c45d6c0b
--- /dev/null
+++ b/MEC010p2/MEO/PKGM/jsons/AppPkgNotification.json
@@ -0,0 +1,17 @@
+{
+    "id": "1234",
+    "notificationType": "AppPackageOnBoarded",
+    "subscriptionId": "1234",
+    "timeStamp": {
+        "seconds": 1234,
+        "nanoSeconds": 1234
+    },
+    "appPkgId": "appPkgId",
+    "appDId": "appDId",
+    "operationalState": "ENABLED",
+    "_links": {
+        "subscription": {
+            "href": "someuri/url"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json
index b50ced36d2e5ba3de4e469553a795476496793f5..aee356207a2a6d40f388977fc6f129fd0ec068a0 100644
--- a/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json
+++ b/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json
@@ -1,28 +1,9 @@
 {
-	"id": "AppPkgInfoId",
-	"appDid": "appdId",
-	"appName": "APP_NAME",
-	"appSoftwareVersion": "APP_SOFTWARE_VERSION",
-	"appDVersion": "APP_D_VERSION",
-	"checksum": {
-		"algorithm": "SHA-256",
-		"hash": "0x1234567890abcdef"
-	},
-	"softwareImages": ["info about sofware image"],
-	"onBoardingState": "CREATED",
-	"operationalState": "ENABLED",
-	"usageState": "NOT_IN_USE",
-	"mecInfo": ["mecInfo"],
-	"links": {
-		"self": {
-			"href": "/app_lcm/v1/app_packages/123"
-		},
-		"appD": {
-			"href": "/app_lcm/v1/on_boarded_app_packages/456/appd"
-		},
-		"appPkgContent": {
-			"href": "/app_lcm/v1/on_boarded_app_packages/456/package_content"
-		}
-	}
-
+    "appPkgName": "APP_NAME",
+    "appPkgVersion": "APP_SOFTWARE_VERSION",
+    "checksum": {
+        "algorithm": "SHA-256",
+        "hash": "0x1234567890abcdef"
+    },
+    "appPkgPath": "someuri.com"
 }
\ No newline at end of file
diff --git a/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json b/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json
index 0e0dcd235c4973becf25f38eb4e5bb26e154c86a..d10da001fc5f6d423f4d89b109dd880f98c6f1d1 100644
--- a/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json
+++ b/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json
@@ -1,3 +1,9 @@
 {
-
+    "appPkgNameERR": "APP_NAME",
+    "appPkgVersion": "APP_SOFTWARE_VERSION",
+    "checksum": {
+        "algorithm": "SHA-256",
+        "hash": "0x1234567890abcdef"
+    },
+    "appPkgPath": "someuri.com"
 }
\ No newline at end of file
diff --git a/MEC010p2/MEO/PKGM/libraries/Server.py b/MEC010p2/MEO/PKGM/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337
--- /dev/null
+++ b/MEC010p2/MEO/PKGM/libraries/Server.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        return notification_json
+        
diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.json.schema b/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.json.schema
new file mode 100644
index 0000000000000000000000000000000000000000..a021991e4d5ddd2366e54411a5feadc59eeda31c
--- /dev/null
+++ b/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.json.schema
@@ -0,0 +1,68 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "id": {
+      "type": "string"
+    },
+    "notificationType": {
+      "type": "string"
+    },
+    "subscriptionId": {
+      "type": "string"
+    },
+    "timeStamp": {
+      "type": "object",
+      "properties": {
+        "seconds": {
+          "type": "integer"
+        },
+        "nanoSeconds": {
+          "type": "integer"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ]
+    },
+    "appPkgId": {
+      "type": "string"
+    },
+    "appDId": {
+      "type": "string"
+    },
+    "operationalState": {
+      "type": "string"
+    },
+    "_links": {
+      "type": "object",
+      "properties": {
+        "subscription": {
+          "type": "object",
+          "properties": {
+            "href": {
+              "type": "string"
+            }
+          },
+          "required": [
+            "href"
+          ]
+        }
+      },
+      "required": [
+        "subscription"
+      ]
+    }
+  },
+  "required": [
+    "id",
+    "notificationType",
+    "subscriptionId",
+    "timeStamp",
+    "appPkgId",
+    "appDId",
+    "operationalState",
+    "_links"
+  ]
+}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot
index 00632c9e56c817d045139f181cd1149b6233f2ef..1606af0bcc9b2ade1243c540137a6b86b0e879a3 100644
--- a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot
+++ b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot
@@ -13,19 +13,21 @@ Library     OperatingSystem
 TC_MEC_MEC010p2_MEPM_LCM_001_OK
     [Documentation]    TP_MEC_MEC010p2_MEPM_LCM_001_OK
     ...    Check that MEC API provider has created the configuration information in AppD to the MEPM-V
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1   #ConfigPlatformForAppRequest
-
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.21.2   #ConfigPlatformForAppRequest
+    [Setup]   Create new App Instance  CreateAppInstanceRequest
+    ${APPD_ID_SET}   Get value entry from JSON file    CreateAppInstanceRequest  appDId
     Request to configure Platform    ${APP_INSTANCE_ID}    ConfigPlatformForAppRequest
     Check HTTP Response Status Code Is    202
-    Check Response Header contains    Location
-
+    Check HTTP Response Header Contains    Location
+    [Teardown]   Delete APP Instance   ${APPD_ID_SET}
+    
 
 TC_MEC_MEC010p2_MEPM_LCM_001_BR
     [Documentation]    TP_MEC_MEC010p2_MEPM_LCM_001_BR
     ...    Check that MEC API provider sends an error when it receives a malformed request for the configuration information in AppD to the MEPM-V
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1   #ConfigPlatformForAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.21.2   #ConfigPlatformForAppRequest
 
     Request to configure Platform   ${APP_INSTANCE_ID}   ConfigPlatformForAppRequestBadRequest
     Check HTTP Response Status Code Is    400
@@ -36,16 +38,40 @@ TC_MEC_MEC010p2_MEPM_LCM_001_NF
     [Documentation]    TP_MEC_MEC010p2_MEPM_LCM_001_BR
     ...    "Check that MEC API provider sends an error when it receives a request 
 	...    for the configuration information in AppD to the MEPM-V with not valid app instance ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1   #ConfigPlatformForAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1
+    ...    ETS3.1.1MEC 010-2 3.1.1, Table 6.2.2.21.2-1   #ConfigPlatformForAppRequest
 
     Request to configure Platform   ${NOT_EXISTING_APP_INSTANCE_ID}   ConfigPlatformForAppRequest
     Check HTTP Response Status Code Is    404
 
 
 *** Keywords ***
+Create new App Instance
+    [Arguments]    ${content}
+    Log    Creating a new app package
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/app_instances    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Delete APP Instance
+    [Arguments]    ${app_instance_id}
+    Log    Get single App Instance
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_instances/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+
 Request to configure Platform
-    [Argument]  ${appInstanceId}   ${content}
+    [Arguments]  ${appInstanceId}   ${content}
     Log    Request to configure platform
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
diff --git a/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json b/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json
deleted file mode 100644
index 79d582966112b245b96d3b614165c24a1c942873..0000000000000000000000000000000000000000
--- a/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"appServiceWrongRequired": [{
-		"sernName": "serviceName"
-	}]
-}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json b/MEC010p2/MEPM/LCM/jsons/ConfigPlatformForAppRequest.json
similarity index 100%
rename from MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json
rename to MEC010p2/MEPM/LCM/jsons/ConfigPlatformForAppRequest.json
diff --git a/MEC010p2/MEPM/LCM/jsons/ConfigPlatformForAppRequestBadRequest.json b/MEC010p2/MEPM/LCM/jsons/ConfigPlatformForAppRequestBadRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..1dfe5b2e0a9403f10d9b3d58fd26076f1e12e47e
--- /dev/null
+++ b/MEC010p2/MEPM/LCM/jsons/ConfigPlatformForAppRequestBadRequest.json
@@ -0,0 +1,3 @@
+{
+	"appServiceWrongRequired":"someValue"
+}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/LCM/jsons/CreateAppInstanceRequest.json b/MEC010p2/MEPM/LCM/jsons/CreateAppInstanceRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..3691ba6ce55af3f45f518ea1313f56a99e904b5a
--- /dev/null
+++ b/MEC010p2/MEPM/LCM/jsons/CreateAppInstanceRequest.json
@@ -0,0 +1,5 @@
+{
+  "appDId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3",
+  "appInstanceDescription": "description",
+  "appInstanceName": "name"
+}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/PKGM/AppPkgMgt.robot b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot
index e45756f868b4bca437d504afed47fbc7076bb676..711a7e5605178c7b2d55176b0f244093319dac47 100644
--- a/MEC010p2/MEPM/PKGM/AppPkgMgt.robot
+++ b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot
@@ -1,446 +1,476 @@
-''[Documentation]   robot --outputdir ./outputs ./AppPkgMgt.robot
-...    Test Suite to validate Package Management (PKGM) operations.
+''[Documentation]   robot --outputdir ../../outputs ./AppPkgMgt.robot
+...    Test Suite to validate MEPM Package Management (PKGM) operations.
 
 *** Settings ***
-Resource    environment/variables.txt
-Resource    ../../../GenericKeywords.robot
-Library     REST    ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT}    ssl_verify=false
-Library     BuiltIn
-Library     OperatingSystem
-#Library     MockServerLibrary
-
+Resource     environment/variables.txt
+Resource     ../../../GenericKeywords.robot
+Library      REST    ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT}    ssl_verify=false
+Library      BuiltIn
+Library      OperatingSystem
+Resource     ../../../pics.txt
+Library     libraries/Server.py
 
 *** Test Cases ***
 TC_MEC_MEC010p2_MEPM_PKGM_001_01_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_001_01_OK
-   ...    Check that MEPM returns the list of App Packages when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_001_01_OK  
+    ...  Check that MEO creates a new App Package when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.2.2    ##AppPkgInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET all APP Packages
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    GET all app Packages
     Check HTTP Response Status Code Is    200
-   FOR    ${appPkg}    IN    @{response['body']}
-        Validate Json    AppPkgInfo.schema.json   ${appPkg} 
-   END
+    FOR    ${onBoardedAppPkgInfo}    IN    @{response['body']}
+        Validate Json    AppPkgInfo.schema.json    ${onBoardedAppPkgInfo}
+        Should Be Equal As Strings  ${onBoardedAppPkgInfo['onboardingState']}    ${ONBOARDING_STATE}
+    END
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID}
 
 
 TC_MEC_MEC010p2_MEPM_PKGM_001_02_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_001_02_OK
-    ...    Check that MEPM returns the list of on boarded app Packages when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK  
+    ...  Check that MEPM returns the list of on-boarded App Packages when requested - Note 3
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.2.2    ##AppPkgInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET all onboarded APP Packages
+    [Setup]   Create new App Package        CreateAppPackage.json
+    
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${APPD_ID}    ${response['body']['appDId']}
+    GET all app Packages
     Check HTTP Response Status Code Is    200
-   FOR    ${appPkg}    IN    @{response['body']}
-        Validate Json    AppPkgInfo.schema.json   ${appPkg} 
-   END
-   
+    FOR    ${onBoardedAppPkgInfo}    IN    @{response['body']}
+        Validate Json    AppPkgInfo.schema.json    ${onBoardedAppPkgInfo}
+        Should Contain  ${onBoardedAppPkgInfo['_links']['self']['href']}    ${APP_PKG_ID}       
+        Should Contain  ${onBoardedAppPkgInfo['_links']['appD']['href']}    ${APPD_ID}       
+        Should Contain  ${onBoardedAppPkgInfo['_links']['appPkgContent']['href']}   ${APPD_ID}       
+        Should Be Equal As Strings  ${onBoardedAppPkgInfo['onboardingState']}    ${ONBOARDING_STATE}
+    END
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID}
+    
 TC_MEC_MEC010p2_MEPM_PKGM_001_BR
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_001_BR
-    ...    Check that MEPM responds with an error when it receives 
-    ...    a malformed request for requesting the list of existing App Packages
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_001_BR  
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a malformed request for requesting the list of existing App Packages
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET all APP Packages with filters    ${MALFORMED_FILTER_NAME}    ${FILTER_VALUE}
-    Check HTTP Response Status Code Is    400
-    
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${APPD_ID}    ${response['body']['appDId']}
+    GET all app Packages with filter    operationalStatus     ENABLED
+    Check HTTP Response Status Code Is    400    
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID}
+
+
 
 TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK
-    ...    Check that MEPM returns the an App Package when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK  
+    ...  Check that MEPM returns the an App Package when requested - Note 3
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2   ##AppPkgInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET an APP Package identified by    ${APP_PKG_ID}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   AppPkgInfo
-    Should Be Equal As Strings  ${response['body']['id']}      ${APP_PKG_ID} 
-    
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${APPD_ID}    ${response['body']['appDId']}
+    Get an individual APP Package identified by ID    ${APP_PKG_ID}
+    Check HTTP Response Status Code Is    200    
+    Validate Json    AppPkgInfo.schema.json    ${response['body']}
+    Should Contain  ${response['body']['_links']['self']['href']}    ${APP_PKG_ID}       
+    Should Contain  ${response['body']['_links']['appD']['href']}    ${APPD_ID}       
+    Should Contain  ${response['body']['_links']['appPkgContent']['href']}   ${APPD_ID}       
+    Should Be Equal As Strings  ${response['body']['onboardingState']}    ${ONBOARDING_STATE}
+    [Teardown]   Delete an individual APP Package identified by ID     ${APP_PKG_ID}
+
 
 
 TC_MEC_MEC010p2_MEPM_PKGM_002_02_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_002_02_OK
-    ...    Check that MEPM returns the an App Package when requested - Note 3
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_002_02_OK  
+    ...  Check that MEPM returns the an App Package when requested - Note 3
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2   ##AppPkgInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET an onboarded APP Package identified by    ${APP_PKG_ID}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   AppPkgInfo
-    Should Be Equal As Strings  ${response['body']['id']}      ${APP_PKG_ID} 
-    
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${APPD_ID}    ${response['body']['appDId']}
+    Get an individual APP Package identified by ID    ${APPD_ID}
+    Check HTTP Response Status Code Is    200    
+    Validate Json    AppPkgInfo.schema.json    ${response['body']}
+    Should Contain  ${response['body']['_links']['self']['href']}    ${APP_PKG_ID}       
+    Should Contain  ${response['body']['_links']['appD']['href']}    ${APPD_ID}       
+    Should Contain  ${response['body']['_links']['appPkgContent']['href']}   ${APPD_ID}       
+    Should Be Equal As Strings  ${response['body']['onboardingState']}    ${ONBOARDING_STATE}
+    [Teardown]   Delete an individual APP Package identified by ID     ${APP_PKG_ID}
+
 
 TC_MEC_MEC010p2_MEPM_PKGM_002_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_002_NF
-    ...    Check that MEPM responds with an error when it receives 
-    ...    a request for returning a App Package referred with a wrong ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_002_NF  
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a request for returning a App Package referred with a wrong ID
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    GET an APP Package identified by    ${NON_EXISTENT_APP_PKG_ID}
-    Check HTTP Response Status Code Is    404
-
-
+    [Setup]    Delete an individual APP Package identified by ID     ${NON_EXISTENT_APP_PKG_ID}
+    Get an individual APP Package identified by ID    ${NON_EXISTENT_APP_PKG_ID}
+    Check HTTP Response Status Code Is    404    
+     
+         
 TC_MEC_MEC010p2_MEPM_PKGM_003_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_003_OK
-    ...    Check that MEPM service returns an application package subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1",
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_003_OK  
+    ...  Check that MEPM service returns an application package subscription when requested
+    ...      ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1
+    ...      ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7.2  ##AppPkgSubscription
+    ...      ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2  ##AppPkgSubscriptionInfo
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Send a request for a subscription    AppPkgSubscription
-    Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionInfo
-    Should Be Equal As Strings  ${response}[body][subscriptionType]      AppPackageOnBoardingSubscription
-    Should Be Equal As Strings  ${response}[body][callbackUri]           ${CALLBACK_URI}
-    
-    
+    Create a subscription     AppPkgSubscription.json
+    Set Suite Variable     ${SUBSCRIPTION_ID}  ${response['body']['id']}
+    Check HTTP Response Status Code Is    201    
+    Validate Json    AppPkgSubscriptionInfo.schema.json    ${response['body']}
+    [TearDown]  Delete a subscription  ${SUBSCRIPTION_ID}
+       
 
 TC_MEC_MEC010p2_MEPM_PKGM_003_BR
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_003_BR
-    ...    Check that MEPM service sends an error when it receives a 
-    ...    malformed request for creating a new subscription on AppPackages
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_003_BR  
+    ...  Check that MEPM service sends an error when it receives a 
+    ...  malformed request for creating a new subscription on AppPackages
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Send a request for a subscription    AppPkgSubscriptionBadRequest
+    Create a subscription     AppPkgSubscriptionBadRequest.json
     Check HTTP Response Status Code Is    400
 
-
 TC_MEC_MEC010p2_MEPM_PKGM_004_OK
-   [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_006_OK
-    ...    Check that MEPM service returns the list of Application Package Subscriptions when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_004_OK  
+    ...  Check that MEPM service returns the list of Application 
+    ...  Package Subscriptions when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get all APP Package subscriptions
+    [Setup]  Create a subscription     AppPkgSubscription.json
+    Set Suite Variable     ${SUBSCRIPTION_ID}  ${response['body']['id']}
+    Get all subscriptions 
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionLinkList 
-    
+    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionLinkList
+    [TearDown]  Delete a subscription  ${SUBSCRIPTION_ID}
+
+ 
 
 TC_MEC_MEC010p2_MEPM_PKGM_005_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_005_OK
-    ...    Check that MEPM service returns an Application Package Subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_005_OK  
+    ...  Check that MEPM service returns an Application Package Subscription when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get an individual APP Package subscriptions    ${SUBSCRIPTION_ID}
-    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionInfo
+    [Setup]  Create a subscription     AppPkgSubscription.json
+    Set Suite Variable     ${SUBSCRIPTION_ID}  ${response['body']['id']}
+    Get an individual subscription       ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    200
-    Should Be Equal As Strings  ${response}[body][id]           ${SUBSCRIPTION_ID}
-    Should Contain  ${response}[body][_links][self][href]  /app_pkgm/v1/subscriptions/${SUBSCRIPTION_ID}
-
+    Check HTTP Response Body Json Schema Is    AppPkgSubscriptionInfo
+    [TearDown]  Delete a subscription  ${SUBSCRIPTION_ID}
+    
 
 TC_MEC_MEC010p2_MEPM_PKGM_005_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_005_NF
-    ...    Check that MEPM service sends an error when it receives a query for a subscription on AppPackages 
-    ...    with a wrong identifier
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_005_NF
+    ...  C"Check that MEPM service sends an error when 
+    ...    it receives a query for a subscription on AppPackages with a wrong identifier
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get an individual APP Package subscriptions    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    [Setup]  Delete a subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Get an individual subscription       ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
-    
+ 
 
 TC_MEC_MEC010p2_MEPM_PKGM_006_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_006_OK
-    ...    Check that MEPM service deletes an Application Package Subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_006_OK
+    ...  Check that MEPM service deletes an Application Package Subscription when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Delete an App Package Subscription identified by    ${SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    204
-    
+    [Setup]  Create a subscription     AppPkgSubscription.json
+    Set Suite Variable     ${SUBSCRIPTION_ID}  ${response['body']['id']}
+    Delete a subscription  ${SUBSCRIPTION_ID}
+    Check HTTP Response Status Code Is    204   
+
 TC_MEC_MEC010p2_MEPM_PKGM_006_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_006_NF
-    ...    Check that MEPM service sends an error when it receives a deletion request for a subscription on AppPackages 
-    ...    with a wrong identifier
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_006_NF
+    ...  Check that MEPM service sends an error 
+    ...  when it receives a deletion request for a subscription on AppPackages 
+    ...  with a wrong identifier
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4
     [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Delete an App Package Subscription identified by    ${NON_EXISTENT_SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    404
+    [Setup]  Delete a subscription   ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Delete a subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Check HTTP Response Status Code Is    404  
+        
+
+TC_MEC_MEC010p2_MEPM_PKGM_007_OK
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_007_OK
+    ...  Check that the MEPM service sends a application package notification 
+    ...  if the MEPM service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.5.3.1,
+    ...  ETSI GS MEC 010-2 3.1.1, clause 6.2.3.6.2  ##AppPkgNotification
+    [Tags]    PIC_APP_PACKAGE_NOTIFICATIONS
+    [Setup]  Create a subscription     AppPkgSubscription.json
+    Set Suite Variable     ${SUBSCRIPTION_ID}  ${response['body']['id']}
+    Spawn Notification Server     AppPkgNotification
+    Validate Json   AppPkgNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete a subscription   ${SUBSCRIPTION_ID}
+
+
+
 
 TC_MEC_MEC010p2_MEPM_PKGM_008_NA
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_008_NA
-    ...    Check that MEPM responds with an error when it receives 
-    ...    a POST request referring an application descriptor AppD
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.4
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Post AppD by   ${APPD_ID}
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_008_NA  
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a POST request referring an application descriptor AppD
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.1
+
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT 
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${APPD_ID}    ${response['body']['appDId']}
+    Post an AppD identified by    ${APP_PKG_ID}
     Check HTTP Response Status Code Is    405    
+    [Teardown]   Delete an individual APP Package identified by ID     ${APP_PKG_ID}
+
+
+
+
 
 TC_MEC_MEC010p2_MEPM_PKGM_009_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_009_OK
-    ...    Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get AppD by   ${APPD_ID}
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_009_OK
+    ...  Check that MEPM returns the Application Descriptor contained on an on-boarded Application Package when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2
+    ...   ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2.2  ##AppD
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${ON_BOARDED_APPD_ID}    ${response['body']['appDId']}
+    Get an AppD identified by   ${ON_BOARDED_APPD_ID}
     Check HTTP Response Status Code Is    200
-
-TC_MEC_MEC010p2_MEPM_PKGM_009_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_009_NF
-    ...    Check that MEPM responds with an error when it receives
-    ...    a request for returning a App Descriptor referred with a wrong App Package ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2",
-    ...    ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get AppD by    ${NON_EXISTENT_APPD_ID}
-    Check HTTP Response Status Code Is    404   
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID}
 
 
+TC_MEC_MEC010p2_MEPM_PKGM_009_NF
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_009_NF
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a request for returning a App Descriptor referred with a wrong App Package ID
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]  Delete an AppD by ID    ${NON_EXISTENT_APP_PKG_ID}
+    Get an AppD identified by    ${NON_EXISTENT_APP_PKG_ID}
+    Check HTTP Response Status Code Is    404
+  
 
 TC_MEC_MEC010p2_MEPM_PKGM_010_FO
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_010_FO
-    ...    Check that MEPM responds with an error when it receives 
-    ...    a PUT request referring an application descriptor AppD
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.3
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Put on AppD endpoint    ${NON_EXISTENT_APP_PKG_ID}
-    Check HTTP Response Status Code Is    403      
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_010_FO
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a PUT request referring an application descriptor AppD
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.3
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${ON_BOARDED_APPD_ID}    ${response['body']['appDId']}
+    Update an AppD identified by   ${ON_BOARDED_APPD_ID}
+    Check HTTP Response Status Code Is    403
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID} 
+        
 
 TC_MEC_MEC010p2_MEPM_PKGM_011_NA
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_011_NA
-    ...    Check that MEPM responds with an error when it receives 
-    ...    a DELETE request referring an application descriptor AppD
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.4
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Delete on AppD endpoint    ${APP_PKG_ID}
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_011_NA
+    ...  Check that MEPM responds with an error when it receives 
+    ...  a DELETE request referring an application descriptor AppD
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.4
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Delete an AppD by ID   ${APP_PKG_ID}
     Check HTTP Response Status Code Is    405
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID} 
+        
 
 
 TC_MEC_MEC010p2_MEPM_PKGM_012_01_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_012_01_OK
-    ...    Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get application package by AppId  ${APP_PKG_ID}
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_012_01_OK
+    ...  Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    GET all app Packages content by appPkgId   ${APP_PKG_ID}
     Check HTTP Response Status Code Is    200
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID} 
     
 TC_MEC_MEC010p2_MEPM_PKGM_012_02_OK
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_012_02_OK
-    ...    Check that MEPM fetches the on-boarded application package content identified by appDId when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get onboarded application package by AppdId   ${APPD_ID}
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_012_02_OK
+    ...  heck that MEPM fetches the on-boarded application package content identified by appDId when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]   Create new App Package        CreateAppPackage.json
+    Set Suite Variable    ${APP_PKG_ID}    ${response['body']['id']}
+    Set Suite Variable    ${ON_BOARDED_APPD_ID}    ${response['body']['appDId']}
+    GET all app Packages content by appPkgId   ${ON_BOARDED_APPD_ID}
     Check HTTP Response Status Code Is    200
-    
+    [Teardown]   Delete an individual APP Package identified by ID    ${APP_PKG_ID} 
+        
+
 
 TC_MEC_MEC010p2_MEPM_PKGM_012_01_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_012_01_NF
-    ...    Check that MEPM returns an error when performing
-    ...    a request for returning a App Descriptor referred with a wrong App Package ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get application package by AppId    ${NON_EXISTENT_APP_PKG_ID}
-    Check HTTP Response Status Code Is    404     
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_012_01_NF
+    ...  Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]  Delete an individual APP Package identified by ID    ${NON_EXISTENT_APP_PKG_ID}
+    GET all app Packages content by appPkgId   ${NON_EXISTENT_APP_PKG_ID}
+    Check HTTP Response Status Code Is    404
+    
 
 
 TC_MEC_MEC010p2_MEPM_PKGM_012_02_NF
-    [Documentation]    TP_MEC_MEC010p2_MEPM_PKGM_012_02_NF
-    ...    Check that MEPM returns an error when performing
-    ...    a request for returning an onboarded App Descriptor referred with a wrong App Package ID
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2
-    [Tags]    PIC_APP_PACKAGE_MANAGEMENT    INCLUDE_UNDEFINED_SCHEMAS
-    Get onboarded application package by AppdId    ${NON_EXISTENT_APP_PKG_ID}
-    Check HTTP Response Status Code Is    404      
- 
+    [Documentation]  TP_MEC_MEC010p2_MEPM_PKGM_012_02_NF
+    ...  Check that MEPM service sends an error when it receives a query with an application package with a wrong identifier
+    ...  ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2
+    [Tags]    PIC_APP_PACKAGE_MANAGEMENT
+    [Setup]  Delete an individual APP Package identified by ID    ${NON_EXISTENT_APPD_ID}
+    GET all app Packages content by appPkgId   ${NON_EXISTENT_APPD_ID}
+    Check HTTP Response Status Code Is    404
+    
 
 *** Keywords ***
-Post APP Package
-    Log    Getting all App Packages
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+Get an AppD identified by
+    [Arguments]    ${appDId}
+    Log    Getting App descriptor for App Package
+    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/app_packages
+    Get   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appDId}/appd
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
 
-
-GET all APP Packages
-    Log    Getting all App Packages
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+Post an AppD identified by
+    [Arguments]    ${appDId}
+    Log    Getting App descriptor for App Package
+    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages
+    Post   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appDId}/appd
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
-     
-GET all onboarded APP Packages
-    Log    Getting all App Packages
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+
+Update an AppD identified by
+    [Arguments]    ${appDId}
+    Log    Getting App descriptor for App Package
+    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages
+    Put   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appDId}/appd
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
     
-GET all APP Packages with filters
-    [Arguments]    ${key}    ${value}
-    Log    Getting all App Packages using filtering parameters
+Delete an AppD by ID
+    [Arguments]    ${identifier}    
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages?${key}=${value}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${identifier}/appd
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
-   
-
-GET an APP Package identified by
-    [Arguments]    ${value}    
-    Log    Getting an App Package
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+       
+Create new App Package
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}
+    ${body}    Get File    ${path}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/app_packages    ${body}    allow_redirects=false
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
-
-GET an onboarded APP Package identified by
-    [Arguments]    ${value}    
-    Log    Getting an App Package
+    Set Suite Variable    ${response}    ${output}     
+   
+GET all app Packages
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${value}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages    
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
-        
-Get AppD by
-    [Arguments]    ${appdId}
-    Log    Getting App Descriptor by its identifier
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
-    Set Headers    {"Content-Type":"*/*"}   
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appdId}/appd
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
-
-Get AppD from onboarded app packages by
-    [Arguments]    ${appdId}
-    Log    Getting App Descriptor by its identigier
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
-    Set Headers    {"Content-Type":"*/*"}   
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
-
 
-Post AppD by
-    [Arguments]    ${appdId}
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
+GET all app Packages with filter
+    [Arguments]    ${key}    ${value}
+    Log    Getting all App Packages using filtering parameters
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appdId}/appd
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages?${key}=${value}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
+    
 
-Post AppD from onboarded app packages by
-    [Arguments]    ${appdId}
-    Log    Getting App Descriptor by its identifier
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
+Get an individual APP Package identified by ID
+    [Arguments]    ${identifier}    
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd
+    Get   ${apiRoot}/${apiName}/${apiVersion}/app_packages/${identifier}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
 
 
 
-Put on AppD endpoint
-    [Arguments]    ${appdId}
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
+GET all app Packages content by appPkgId
+    [Arguments]    ${identifier}  
+    Set Headers    {"Accept":"application/zip"}
+    Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Put    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${identifier}/package_content   
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
     
-Delete on AppD endpoint
-    [Arguments]    ${appdId}
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
 
-
-Get application package by AppId
-    [Arguments]    ${appPkgId}
-    Log    Getting App descriptor for App Package
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
-    Set Headers    {"Content-Type":"*/*"}   
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}    
-    
-Get onboarded application package by AppdId
-    [Arguments]    ${appdId}
-    Log    Getting App descriptor for App Package
-    Set Headers    {"Accept":"${ACCEPTED_CONTENT_TYPE}"}
-    Set Headers    {"Content-Type":"*/*"}   
+Create a subscription    
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/package_content
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}
+    ${body}    Get File    ${path}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}   
-
-
-Get an AppD from App Package identified by
-    [Arguments]    ${appPkgId}
-    Log    Getting App descriptor for App Package
-    Set Headers    {"Accept":"application/zip"}
-    Set Headers    {"Content-Type":"*/*"}    
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/app_descriptor
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
-
-
-Send a request for a subscription    
-    [Arguments]    ${content}
-    Log    Creating a new subscription
+    
+        
+Delete a subscription    
+    [Arguments]    ${id}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${id}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}       
+    Set Suite Variable    ${response}    ${output}   
+    
 
-Get all APP Package subscriptions
-    Log    Getting list of subscriptions
+Get all subscriptions   
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output} 
+    Set Suite Variable    ${response}    ${output}  
     
-Get an individual APP Package subscriptions
-    [Arguments]    ${subId}
-    Log    Getting an individual subscription
+
+Get an individual subscription
+    [Arguments]    ${id}    
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${id}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
 
-Delete an App Package Subscription identified by
-    [Arguments]    ${subId}
-    Log    Deleting a subscription
+Delete an individual APP Package identified by ID
+    [Arguments]    ${identifier}    
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_packages/${identifier}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
+    
+
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    Set Suite Variable    ${payload_notification}    ${output}
diff --git a/MEC010p2/MEPM/PKGM/environment/variables.txt b/MEC010p2/MEPM/PKGM/environment/variables.txt
index b71bde6b1c7d229cc9a662b988a2bdf90fb903ae..fa58be8ac3f21bfb6702554316d42d18e23337bd 100644
--- a/MEC010p2/MEPM/PKGM/environment/variables.txt
+++ b/MEC010p2/MEPM/PKGM/environment/variables.txt
@@ -22,4 +22,13 @@ ${MALFORMED_FILTER_NAME}            operationalStatus
 ${FILTER_VALUE}                     ENABLED
 ${NON_EXISTENT_APP_PKG_ID}          NON_EXISTENT_APP_PKG_ID
 ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
-${NON_EXISTENT_APPD_ID}             NON_EXISTENT_APPD_ID         
\ No newline at end of file
+${NON_EXISTENT_APPD_ID}             NON_EXISTENT_APPD_ID         
+${ONBOARDING_STATE}                CREATED
+
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
\ No newline at end of file
diff --git a/MEC010p2/MEPM/PKGM/jsons/AppPkgNotification.json b/MEC010p2/MEPM/PKGM/jsons/AppPkgNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e1ae305947d2f739243b7a90d715af8c45d6c0b
--- /dev/null
+++ b/MEC010p2/MEPM/PKGM/jsons/AppPkgNotification.json
@@ -0,0 +1,17 @@
+{
+    "id": "1234",
+    "notificationType": "AppPackageOnBoarded",
+    "subscriptionId": "1234",
+    "timeStamp": {
+        "seconds": 1234,
+        "nanoSeconds": 1234
+    },
+    "appPkgId": "appPkgId",
+    "appDId": "appDId",
+    "operationalState": "ENABLED",
+    "_links": {
+        "subscription": {
+            "href": "someuri/url"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json
new file mode 100644
index 0000000000000000000000000000000000000000..aee356207a2a6d40f388977fc6f129fd0ec068a0
--- /dev/null
+++ b/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json
@@ -0,0 +1,9 @@
+{
+    "appPkgName": "APP_NAME",
+    "appPkgVersion": "APP_SOFTWARE_VERSION",
+    "checksum": {
+        "algorithm": "SHA-256",
+        "hash": "0x1234567890abcdef"
+    },
+    "appPkgPath": "someuri.com"
+}
\ No newline at end of file
diff --git a/MEC010p2/MEPM/PKGM/libraries/Server.py b/MEC010p2/MEPM/PKGM/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337
--- /dev/null
+++ b/MEC010p2/MEPM/PKGM/libraries/Server.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        return notification_json
+        
diff --git a/MEC010p2/MEPM/PKGM/libraries/__pycache__/Server.cpython-39.pyc b/MEC010p2/MEPM/PKGM/libraries/__pycache__/Server.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6174a8848396b041de13ac5e846ee7d788db8b7b
Binary files /dev/null and b/MEC010p2/MEPM/PKGM/libraries/__pycache__/Server.cpython-39.pyc differ
diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgNotification.schema.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..a021991e4d5ddd2366e54411a5feadc59eeda31c
--- /dev/null
+++ b/MEC010p2/MEPM/PKGM/schemas/AppPkgNotification.schema.json
@@ -0,0 +1,68 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "id": {
+      "type": "string"
+    },
+    "notificationType": {
+      "type": "string"
+    },
+    "subscriptionId": {
+      "type": "string"
+    },
+    "timeStamp": {
+      "type": "object",
+      "properties": {
+        "seconds": {
+          "type": "integer"
+        },
+        "nanoSeconds": {
+          "type": "integer"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ]
+    },
+    "appPkgId": {
+      "type": "string"
+    },
+    "appDId": {
+      "type": "string"
+    },
+    "operationalState": {
+      "type": "string"
+    },
+    "_links": {
+      "type": "object",
+      "properties": {
+        "subscription": {
+          "type": "object",
+          "properties": {
+            "href": {
+              "type": "string"
+            }
+          },
+          "required": [
+            "href"
+          ]
+        }
+      },
+      "required": [
+        "subscription"
+      ]
+    }
+  },
+  "required": [
+    "id",
+    "notificationType",
+    "subscriptionId",
+    "timeStamp",
+    "appPkgId",
+    "appDId",
+    "operationalState",
+    "_links"
+  ]
+}
\ No newline at end of file
diff --git a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot
index 45d7cb0c0781a7e358e2e4211306c25365431e61..302f0177ef2c9f138b11ed894b6e9887908cca6f 100644
--- a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot
+++ b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot
@@ -7,83 +7,93 @@ Resource    ../../../GenericKeywords.robot
 Library     REST    ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT}    ssl_verify=false
 Library     BuiltIn
 Library     OperatingSystem
+Library    String
 
 
 *** Test Cases ***
 TC_MEC_MEC010p2_MEX_LCM_001_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_001_OK
     ...    Check that MEC API provider creates a new App Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.3.2-1      #CreateAppInstanceRequest
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1      #AppInstanceInfo
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.3.2-1      #CreateAppInstanceRequest
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1      #AppInstanceInfo
     Create new App Instance  CreateAppInstanceRequest
+    ${APPD_ID_SET}   Get value entry from JSON file    CreateAppInstanceRequest  appDId
     Check HTTP Response Status Code Is    201
+    ##TODO validate against the new schema
     Check HTTP Response Body Json Schema Is   AppInstanceInfo
     Check HTTP Response Header Contains    Location
-    Should Be Equal As Strings  ${response['body']['appDId']}      ${APPD_ID}
+    Should Be Equal As Strings  ${response['body']['appDId']}      ${APPD_ID_SET}
     Should Be Equal As Strings  ${response['body']['instantiationState']}       NOT_INSTANTIATED
-   
+    [TearDown]  Delete APP Instance   ${response['body']['id']}  
 
 TC_MEC_MEC010p2_MEX_LCM_001_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_001_BR
     ...    Check that MEC API provider sends an error when it receives a malformed request for the creation of a new App Instance
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.3.2-1      #CreateAppInstanceRequest
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1      #AppInstanceInfo
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.3.2-1      #CreateAppInstanceRequest
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1      #AppInstanceInfo
     Create new App Instance  CreateAppInstanceRequestBadRequest
     Check HTTP Response Status Code Is    400
 
-
-
     
 TC_MEC_MEC010p2_MEX_LCM_002_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_002_OK
     ...    Check that MEC API provider retrieves the list of App instances when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1  #AppInstanceInfo
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1  #AppInstanceInfo
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Set Test Variable  ${NEW_APP_INSTANCE_ID}    ${response['body']['id']}  
     GET all APP Instances  
     Check HTTP Response Status Code Is  200
     
     FOR    ${appInstance}    IN    @{response['body']}
         Validate Json    AppInstanceInfo.schema.json    ${appInstance}
-        Log   ${appInstance}
-        ${passed}    Run Keyword And Return Status  Should Be Equal As Strings  ${appInstance}[id]    ${APP_INSTANCE_ID}    
+        ${passed}    Run Keyword And Return Status  Should Be Equal As Strings  ${appInstance}[id]    ${NEW_APP_INSTANCE_ID}    
         Exit For Loop If    ${passed}
     END
     Should Be True    ${passed}
+    [TearDown]  Delete APP Instance   ${NEW_APP_INSTANCE_ID}
+
     
 
 
 TC_MEC_MEC010p2_MEX_LCM_003_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_003_OK
     ...    Check that MEC API provider retrieves an App Package when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1  #AppInstanceInfo
-    GET APP Instance   ${APP_INSTANCE_ID}  
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1  #AppInstanceInfo
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Set Test Variable  ${NEW_APP_INSTANCE_ID}    ${response['body']['id']}  
+    GET APP Instance   ${NEW_APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is  200
     Check HTTP Response Body Json Schema Is   AppInstanceInfo
-    Log   ${response['body']}
-    Should Be Equal As Strings   ${response['body']['id']}    ${APP_INSTANCE_ID}
+    Should Be Equal As Strings   ${response['body']['id']}    ${NEW_APP_INSTANCE_ID}
+    [TearDown]  Delete APP Instance   ${NEW_APP_INSTANCE_ID}
 
 
 TC_MEC_MEC010p2_MEX_LCM_003_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_003_NF
     ...    Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId
-    ...    ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1  #AppInstanceInfo
+    ...    ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1  #AppInstanceInfo
+    [Setup]  Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}
     GET APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is  404
     
 TC_MEC_MEC010p2_MEX_LCM_004_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_003_OK
     ...    Check that MEC API provider service deletes an App Instance when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4
-    Delete APP Instance   ${APP_INSTANCE_ID}  
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.4
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Set Test Variable  ${NEW_APP_INSTANCE_ID}    ${response['body']['id']}  
+    Delete APP Instance   ${NEW_APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is  204
     
 TC_MEC_MEC010p2_MEX_LCM_004_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_004_NF
     ...    Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId
-    ...   ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4
+    ...   ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.4
+    [Setup]  Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}    
     Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is  404
     
@@ -91,17 +101,21 @@ TC_MEC_MEC010p2_MEX_LCM_004_NF
 TC_MEC_MEC010p2_MEX_LCM_005_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_005_OK
     ...    Check that MEC API provider service instantiates an App Instance when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1  #InstantiateAppRequest
-    Instantiate App Request  ${APP_INSTANCE_ID}  InstantiateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1  #InstantiateAppRequest
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Set Test Variable  ${NEW_APP_INSTANCE_ID}    ${response['body']['id']}  
+    Instantiate App Request  ${NEW_APP_INSTANCE_ID}  InstantiateAppRequest
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
+    [TearDown]  Delete APP Instance   ${NEW_APP_INSTANCE_ID}  
+    
 
 TC_MEC_MEC010p2_MEX_LCM_005_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_005_BR
     ...    Check that MEC API provider service fails to instantiate an App Instance when it receives a malformed request
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1  #InstantiateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1  #InstantiateAppRequest
     Instantiate App Request   ${APP_INSTANCE_ID}   InstantiateAppRequestBadRequest
     Check HTTP Response Status Code Is    400
     
@@ -110,8 +124,9 @@ TC_MEC_MEC010p2_MEX_LCM_005_BR
 TC_MEC_MEC010p2_MEX_LCM_005_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_005_NF
     ...    Check that MEC API provider service fails to instantiate an App Instance when it receives a request related to a not existing App Instance
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1  #InstantiateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1  #InstantiateAppRequest
+    [Setup]  Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}
     Instantiate App Request   ${NOT_EXISTING_APP_INSTANCE_ID}   InstantiateAppRequest
     Check HTTP Response Status Code Is    404
     
@@ -120,17 +135,21 @@ TC_MEC_MEC010p2_MEX_LCM_005_NF
 TC_MEC_MEC010p2_MEX_LCM_006_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_006_OK
     ...    Check that MEC API provider service terminates an App Instance when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1  #TerminateAppRequest
-    Terminate App Request  ${APP_INSTANCE_ID}  TerminateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1  #TerminateAppRequest
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    Sleep  5   ##Change it according to your need
+    Terminate App Request  ${APP_ID}  TerminateAppRequest    
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
+    [TearDown]  Delete APP Instance   ${APP_ID}  
+
 
 TC_MEC_MEC010p2_MEX_LCM_006_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_006_OK
     ...    Check that MEC API provider service fails to terminate an App Instance when it receives a malformed request
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1  #TerminateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1  #TerminateAppRequest
     Terminate App Request  ${APP_INSTANCE_ID}  TerminateAppRequestBadRequest
     Check HTTP Response Status Code Is    400
  
@@ -138,38 +157,42 @@ TC_MEC_MEC010p2_MEX_LCM_006_BR
 TC_MEC_MEC010p2_MEX_LCM_006_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_006_NF
     ...    Check that MEC API provider service fails to terminate an App Instance when it receives a request related to a not existing App Instance
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1  #TerminateAppRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1  #TerminateAppRequest
+    [Setup]  Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID}
     Terminate App Request  ${NOT_EXISTING_APP_INSTANCE_ID}  TerminateAppRequest
     Check HTTP Response Status Code Is    404  
 
 
-TPC_MEC_MEC010p2_MEX_LCM_007_OK
+TC_MEC_MEC010p2_MEX_LCM_007_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_007_OK
     ...    Check that MEC API provider service changes the status of an App Instance from its INITIAL_STATE to a given FINAL_STATE, when requested.
     ...     The following combinations INITIAL_STATE - FINAL_STATE are supported: 
     ...     - STARTED/STOP
     ...     - STOPPED/STARTCheck that MEC API provider service terminates an App Instance when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1 #OperateAppRequest    
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1 #OperateAppRequest    
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    ##TODO sleep for a while because the instantiation is not immediate
     Operate App Request  ${APP_INSTANCE_ID}  OperateAppRequest
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
+    [TearDown]  Delete APP Instance   ${APP_ID}  
 
 
 TC_MEC_MEC010p2_MEX_LCM_007_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_007_BR
     ...    Check that MEC API provider service fails to operate on an App Instance when it receives a malformed request
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1  #OperateAppRequest    
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1  #OperateAppRequest    
     Operate App Request  ${APP_INSTANCE_ID}  OperateAppRequestBadRequest
     Check HTTP Response Status Code Is    400
     
 TC_MEC_MEC010p2_MEX_LCM_007_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_007_NF
     ...    Check that MEC API provider service fails to change the status of an App Instance when it receives a request related to a not existing App Instance
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1  #OperateAppRequest    
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1  #OperateAppRequest    
     Operate App Request  ${NOT_EXISTING_APP_INSTANCE_ID}  OperateAppRequest
     Check HTTP Response Status Code Is    404
     
@@ -178,38 +201,33 @@ TC_MEC_MEC010p2_MEX_LCM_007_NF
 TC_MEC_MEC010p2_MEX_LCM_008_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_008_OK
     ...    Check that MEC API provider service retrieves info about LCM Operation Occurrence on App Instances when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.9.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.9.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
     GET all App LCM op Occs   
     Check HTTP Response Status Code Is  200
     
     FOR    ${appLcmOpOcc}    IN    @{response['body']}
-        ##The referred JSON schema is in compliance with MEC010p2 v2.1.1 but not with v2.2.1. Some attributes are missing in the older version
         Validate Json    AppLcmOpOcc.schema.json    ${appLcmOpOcc}
-        ${passed}    Run Keyword And Return Status  Should Be Equal As Strings  ${appLcmOpOcc}[id]    ${APP_LCM_OP_OCC_ID} 
-        Exit For Loop If    ${passed}
     END
-    
-    Should Be True    ${passed}
-
-
 
 TC_MEC_MEC010p2_MEX_LCM_009_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_009_OK
     ...    Check that MEC API provider service retrieves info about LCM Operation Occurrence on an App Instance when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
-    GET App LCM op Occ  ${APP_LCM_OP_OCC_ID} 
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.10.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    GET App LCM op Occ  ${APP_LCM_OP_OCCS_ID} 
     Check HTTP Response Status Code Is  200
     Validate Json    AppLcmOpOcc.schema.json    ${response}[body]
-    Should Be Equal As Strings  ${response}[body][id]    ${APP_LCM_OP_OCC_ID}
+    Should Be Equal As Strings  ${response}[body][id]    ${APP_LCM_OP_OCCS_ID}
     
 
 TC_MEC_MEC010p2_MEX_LCM_009_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_009_NF
     ...    Check that MEC API provider service sends an error when it receives a query for a not existing LCM Operation Occurence
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.10.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1  #AppLcmOpOcc 
     GET App LCM op Occ  ${NOT_EXISTING_APP_LCM_OP_OCC_ID} 
     Check HTTP Response Status Code Is  404
  
@@ -220,82 +238,92 @@ TC_MEC_MEC010p2_MEX_LCM_010_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_010_OK
     ...    Check that MEC API provider service creates a LCM Subscription when requested, where the subscription request can 
     ...    have SUBSCRIPTION_TYPE AppInstanceStateChangeSubscription or AppLcmOpOccStateChangeSubscription
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.1,
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.1,
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
 
     Send a request for a subscription  AppInstSubscriptionRequest
     Check HTTP Response Status Code Is  201
     Validate Json    AppInstSubscriptionRequest.schema.json    ${response}[body]
-
-    Should Be Equal As Strings  ${response['body']['subscriptionType']}             ${SUB_TYPE}
-    Should Be Equal As Strings  ${response['body']['callbackUri']}      ${CALLBACK_URI}
-
+    ${REQ_SUBSCRIPTION_TYPE}   Get value entry from JSON file    AppInstSubscriptionRequest  subscriptionType
+    ${REQ_CALLBACK_URI}   Get value entry from JSON file    AppInstSubscriptionRequest  callbackUri
+   
+    Should Be Equal As Strings  ${response['body']['subscriptionType']}             ${REQ_SUBSCRIPTION_TYPE}
+    Should Be Equal As Strings  ${response['body']['callbackUri']}      ${REQ_CALLBACK_URI}
+    [TearDown]   Send a request for deleting a subscription  ${response['body']['id']}
+    
 
 
 TC_MEC_MEC010p2_MEX_LCM_010_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_010_BR
     ...    Check that MEC API provider service sends an error when it receives a malformed request to create a LCM Subscription
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.1,
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
-
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.1,
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
+  
     Send a request for a subscription  AppInstSubscriptionRequestBadRequest
     Check HTTP Response Status Code Is  400
     
 
+
 TC_MEC_MEC010p2_MEX_LCM_011_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_011_OK
     ...    Check that MEC API provider service sends the list of LCM Subscriptions when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.2,
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
-
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.2,
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1   #AppInstSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1   #AppLcmOpOccSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1   #AppInstIdCreationSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1   #AppInstIdDeletionSubscriptionRequest
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1   #AppInstSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1   #AppLcmOpOccSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1   #AppInstIdCreationSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1   #AppInstIdDeletionSubscriptionInfo
+    [Setup]  Send a request for a subscription  AppInstSubscriptionRequest
+    Set Test Variable   ${SUB_ID}   ${response['body']['id']}
+  
     Send a request for retrieving all subscriptions
     Check HTTP Response Status Code Is  200
     Validate Json     AppInstanceSubscriptionLinkList.schema.json    ${response}[body]
+    [TearDown]   Send a request for deleting a subscription  ${SUB_ID}
+    
 
 TC_MEC_MEC010p2_MEX_LCM_012_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_012_OK
     ...    Check that MEC API provider service sends the information about an existing LCM subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1    #AppInstSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1    #AppLcmOpOccSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1    #AppInstIdCreationSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1    #AppInstIdDeletionSubscriptionInfo
-
-    Send a request for retrieving a subscription  ${SUBSCRIPTION_ID}
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.4.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1    #AppInstSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1    #AppLcmOpOccSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1    #AppInstIdCreationSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1    #AppInstIdDeletionSubscriptionInfo
+    [Setup]  Send a request for a subscription  AppInstSubscriptionRequest
+    Set Test Variable   ${SUB_ID}   ${response['body']['id']}
+    Send a request for retrieving a subscription  ${SUB_ID}
     Check HTTP Response Status Code Is  200
-    Should Be Equal As Strings  ${response['body']['id']}             ${SUBSCRIPTION_ID}
+    Should Be Equal As Strings  ${response['body']['id']}             ${SUB_ID}
+    [TearDown]   Send a request for deleting a subscription  ${SUB_ID}
 
 
 TC_MEC_MEC010p2_MEX_LCM_012_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_012_NF
     ...    Check that MEC API provider service sends an error when it receives a query for a not existing LCM Subscription
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1    #AppInstSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1    #AppLcmOpOccSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1    #AppInstIdCreationSubscriptionInfo
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1    #AppInstIdDeletionSubscriptionInfo
-
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.4.3.2
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1    #AppInstSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1    #AppLcmOpOccSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1    #AppInstIdCreationSubscriptionInfo
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1    #AppInstIdDeletionSubscriptionInfo
+    [Setup]   Send a request for deleting a subscription  ${NOT_EXISTING_SUBSCRIPTION_ID}
     Send a request for retrieving a subscription  ${NOT_EXISTING_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is  404
     
@@ -303,41 +331,53 @@ TC_MEC_MEC010p2_MEX_LCM_012_NF
 TC_MEC_MEC010p2_MEX_LCM_013_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_013_OK
     ...    Check that MEC API provider service delete an existing LCM Subscription when requested
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4
-    Send a request for deleting a subscription  ${SUBSCRIPTION_ID}
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.4
+    [Setup]  Send a request for a subscription  AppInstSubscriptionRequest
+    Set Test Variable   ${SUB_ID}   ${response['body']['id']}
+    
+    Send a request for deleting a subscription  ${SUB_ID}
     Check HTTP Response Status Code Is  204
 
 
 TC_MEC_MEC010p2_MEX_LCM_013_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_013_NF
     ...    Check that MEC API provider service sends an error when it receives a deletion request for a not existing LCM Subscription
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.4
+    [Setup]   Send a request for deleting a subscription  ${NOT_EXISTING_SUBSCRIPTION_ID}
+    
     Send a request for deleting a subscription  ${NOT_EXISTING_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is  404
     
 
+    
 TC_MEC_MEC010p2_MEX_LCM_014_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_014_OK
     ...    Check that MEC API provider service cancels an on going LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1",
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1"   #CancelMode
-    Cancel on going LCM Operation  ${APP_LCM_OP_OCC_ID}   CancelMode
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1",
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1"   #CancelMode
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    Cancel on going LCM Operation  ${APP_LCM_OP_OCCS_ID}   CancelMode
     Check HTTP Response Status Code Is    202
+    [TearDown]  Delete APP Instance   ${APP_ID}  
+
     
 
 TC_MEC_MEC010p2_MEX_LCM_014_BR
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_014_BR
     ...    Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a malformed request
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1",
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1"   #CancelMode
-    Cancel on going LCM Operation  ${APP_LCM_OP_OCC_ID}   CancelModeBadRequest
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1",
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1"   #CancelMode
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    Cancel on going LCM Operation  ${APP_LCM_OP_OCCS_ID}   CancelModeBadRequest
     Check HTTP Response Status Code Is    400
+    [TearDown]  Delete APP Instance   ${APP_ID} 
+
     
 TC_MEC_MEC010p2_MEX_LCM_014_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_014_NF
     ...    Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a request related to a not existing application LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1",
-    ...    ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1"   #CancelMode
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1",
+    ...    ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1"   #CancelMode
     Cancel on going LCM Operation  ${NOT_EXISTING_APP_LCM_OP_OCC_ID}   CancelMode
     Check HTTP Response Status Code Is    404
 
@@ -346,16 +386,18 @@ TC_MEC_MEC010p2_MEX_LCM_014_NF
 TC_MEC_MEC010p2_MEX_LCM_015_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_015_OK
     ...    Check that MEC API provider service makes failed an on going LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1
-    Fail on going LCM Operation  ${APP_LCM_OP_OCC_ID}
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.12.3.1
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
+    Fail on going LCM Operation  ${APP_LCM_OP_OCCS_ID}
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   AppLcmOpOcc
+    Validate Json    AppLcmOpOcc.schema.json    ${response}[body]
+    [TearDown]  Delete APP Instance   ${APP_ID} 
 
 
 TC_MEC_MEC010p2_MEX_LCM_015_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_015_NF
     ...    Check that MEC API provider service makes failed an on going LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.12.3.1
     Fail on going LCM Operation  ${NOT_EXISTING_APP_LCM_OP_OCC_ID}
     Check HTTP Response Status Code Is    404
 
@@ -363,15 +405,17 @@ TC_MEC_MEC010p2_MEX_LCM_015_NF
 TC_MEC_MEC010p2_MEX_LCM_016_OK
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_016_OK
     ...    Check that MEC API provider service retries an on going LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.13.3.1
+    [Setup]  Create and Instantiate App Instance    CreateAppInstanceRequest     InstantiateAppRequest 
     Retry on going LCM Operation  ${APP_LCM_OP_OCC_ID}
-    Check HTTP Response Status Code Is    200
+    Check HTTP Response Status Code Is    202
+    [TearDown]  Delete APP Instance   ${APP_ID} 
 
 
 TC_MEC_MEC010p2_MEX_LCM_016_NF
     [Documentation]    TP_MEC_MEC010p2_MEX_LCM_016_NF
     ...    Check that MEC API provider service fails to retry an LCM Operation when it receives a request related to a not existing application LCM Operation
-    ...    ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1
+    ...    ETSI GS MEC 010-2 3.1.1, clause 7.4.13.3.1
     Retry on going LCM Operation  ${NOT_EXISTING_APP_LCM_OP_OCC_ID}
     Check HTTP Response Status Code Is    404
 
@@ -392,7 +436,6 @@ Create new App Instance
 
 
 GET all APP Instances 
-    Log    Get all App Instances
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
@@ -424,6 +467,15 @@ Delete APP Instance
     Set Suite Variable    ${response}    ${output}  
     
 
+Create and Instantiate App Instance
+    [Arguments]    ${appInstanceFile}  ${instantiatePayloadFile}
+    Create new App Instance  ${appInstanceFile} 
+    Set Suite Variable   ${APP_ID}   ${response['body']['id']}
+    Instantiate App Request  ${response['body']['id']}   ${instantiatePayloadFile}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${APP_LCM_OP_OCCS_ID}     ${elements}[4]
+    
+    
 
 Instantiate App Request
     [Arguments]    ${appInstanceId}   ${content}
diff --git a/MEC010p2/MEX/LCM/environment/variables.txt b/MEC010p2/MEX/LCM/environment/variables.txt
index a82e2bb9ad0cdbbcd5957a008babca8a861afa56..4ee64a4aa7c7d4e2df0262d8e190fcf5b325b939 100644
--- a/MEC010p2/MEX/LCM/environment/variables.txt
+++ b/MEC010p2/MEX/LCM/environment/variables.txt
@@ -20,4 +20,8 @@ ${OPERATION_VALUE}                  DISABLE
 ${CALLBACK_URI}                     https://callback.uri/path
 ${SUB_TYPE}                     AppInstanceStateChangeSubscription
 ${SUBSCRIPTION_ID}                  01234e2b-6e50-4f33-ab09-8bf05850890
-${NOT_EXISTING_SUBSCRIPTION_ID}     NOT_EXISTING_SUBSCRIPTION_ID
\ No newline at end of file
+${NOT_EXISTING_SUBSCRIPTION_ID}     NOT_EXISTING_SUBSCRIPTION_ID
+
+${REQ_SUBSCRIPTION_TYPE}
+${REQ_CALLBACK_URI}
+${SUB_ID}
\ No newline at end of file
diff --git a/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json b/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json
index 472fae858503ec60f4089d2094646c0da0a67d3c..495279e956be7dbe9b7ccff956e02e6fc46d1bb6 100644
--- a/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json
+++ b/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json
@@ -1,3 +1,3 @@
 {
-  "changeStateTo": "STARTED"
+  "changeStateTo": "STOPPED"
 }
\ No newline at end of file
diff --git a/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json b/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json
index 57be3c7b50ea31409623f2390c4857c645ce754a..0b63e56dbb30208e7ff6d348a0d9a0a80c51bce4 100644
--- a/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json
+++ b/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json
@@ -35,7 +35,7 @@
             "type": "object",
             "required": [
               "href",
-              "subsctiptionType"
+              "subscriptionType"
             ],
             "properties": {
               "href": {
@@ -43,7 +43,7 @@
                 "type": "string",
                 "format": "uri"
               },
-              "subsctiptionType": {
+              "subscriptionTypeType": {
                 "description": "'Subscribed notification type'",
                 "type": "string",
                 "enum": [
diff --git a/MEC011/SRV/APPSAQ/PlatAppServices.robot b/MEC011/SRV/APPSAQ/PlatAppServices.robot
index 8e4e3ac6df2cecbc7170498c9f097e70c118e1aa..77813400d2356413c3c765be4244f5d49a18793f 100644
--- a/MEC011/SRV/APPSAQ/PlatAppServices.robot
+++ b/MEC011/SRV/APPSAQ/PlatAppServices.robot
@@ -4,174 +4,211 @@ Documentation
 ...    A test suite for validating Application Service Availability Query (APPSAQ) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+#Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library      libraries/Server.py
 
 Default Tags    TC_MEC_SRV_APPSAQ
 
 
 
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_APPSAQ_001_OK
+TC_MEC_MEC011_SRV_APPSAQ_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of available MEC services
     ...    for a given application instance when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo 
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.6.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-
+    [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID}
+    Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
     Get a list of mecService of an application instance    ${APP_INSTANCE_ID} 
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    ServiceInfoList
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
+   
 
-
-TP_MEC_MEC011_SRV_APPSAQ_001_BR
+TC_MEC_MEC011_SRV_APPSAQ_001_BR
     [Documentation]
     ...   Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.1
-
+    ...    Reference    ETSI G3.2.1 011 3.2.1, clause 5.2.5,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.6.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-
     # Wrong query parameter name should trigger an error response.
     Get a list of mecService of an application instance with parameters    ${APP_INSTANCE_ID}    ${INSTANCE_ID}    ${FAKE_INSTANCE_ID_VALUE}
     Check HTTP Response Status Code Is    400
 
 
-TP_MEC_MEC011_SRV_APPSAQ_002_OK
+TC_MEC_MEC011_SRV_APPSAQ_002_OK
     [Documentation]
     ...    Check that the IUT notifies the authorised relevant (subscribed) application
     ...    instances when a new service for a given application instance is registered
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup] 
     Create new service    ServiceInfo    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    ServiceInfo
     Check HTTP Response Header Contains    Location
     Check Response Contains    ${response['body']}    serName    ${NEW_SERVICE_NAME}
+    Spawn Notification Server     SerAvailabilityNotificationSubscription    
+    Validate Json   SerAvailabilityNotificationSubscription.schema.json    ${payload_notification}
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
+    
 
-
-TP_MEC_MEC011_SRV_APPSAQ_002_BR
+TC_MEC_MEC011_SRV_APPSAQ_002_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Create new service    ServiceInfoError    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    400
 
 
-TP_MEC_MEC011_SRV_APPSAQ_002_NF
+TC_MEC_MEC011_SRV_APPSAQ_002_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove individual service    ${NON_EXISTENT_APP_INSTANCE_ID}    ${SERVICE_ID}
     Create new service    ServiceInfo    ${NON_EXISTENT_APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_APPSAQ_003_OK
+TC_MEC_MEC011_SRV_APPSAQ_003_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific service
     ...    for a given application instance when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...              ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...              ETSI GS MEC 011 3.2.1, clause 8.2.7.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID} 
+    Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
     Get individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    ServiceInfo
     Check Response Contains    ${response['body']}    serInstanceId    ${SERVICE_ID}
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
+   
 
-
-TP_MEC_MEC011_SRV_APPSAQ_003_NF
+TC_MEC_MEC011_SRV_APPSAQ_003_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.1
-
+    ...    Reference ETSI GS MEC 011 3.2.1, clause 5.2.5,
+    ...              ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...              ETSI GS MEC 011 3.2.1, clause 8.2.7.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove individual service    ${NON_EXISTENT_APP_INSTANCE_ID}    ${SERVICE_ID}
     Get individual service    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SERVICE_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_APPSAQ_004_OK
+TC_MEC_MEC011_SRV_APPSAQ_004_OK
     [Documentation]
     ...    Check that the IUT updates a service information for a given
     ...    application instance when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.4,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID} 
+    Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
     Update service    ${APP_INSTANCE_ID}    ${SERVICE_ID}    ServiceInfoUpdated
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    ServiceInfo
     Check Response Contains    ${response['body']}    version    ${SVC_NEW_VERSION}
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
 
 
-TP_MEC_MEC011_SRV_APPSAQ_004_BR
+TC_MEC_MEC011_SRV_APPSAQ_004_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.4,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID}
+    Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
     Update service    ${APP_INSTANCE_ID}    ${SERVICE_ID}    ServiceInfoUpdatedError
     Check HTTP Response Status Code Is    400
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
 
 
-TP_MEC_MEC011_SRV_APPSAQ_004_NF
+TC_MEC_MEC011_SRV_APPSAQ_004_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.4,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove individual service    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SERVICE_ID}
     Update service    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SERVICE_ID}    ServiceInfoUpdated
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_APPSAQ_005_OK
+TC_MEC_MEC011_SRV_APPSAQ_004_PF
+    [Documentation]
+    ...    Check that the IUT responds with an error when
+    ...    a request sent by a MEC Application doesn't comply with a required condition
+    ...
+    ...    Reference    ETSI GS MEC 011 3.2.1, clause 5.2.4,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.1.2.2,
+    ...                 ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID} 
+    Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
+    Update service with etag    ${APP_INSTANCE_ID}    ${SERVICE_ID}    ServiceInfoUpdated  ${INVALID_ETAG}
+    Check HTTP Response Status Code Is    412
+    [TearDown]  Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
+
+
+TC_MEC_MEC011_SRV_APPSAQ_005_OK
     [Documentation]
     ...    Check that the IUT executes the deletion of a service 
     ...    for a given application instance when requested by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.5
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
-
+    ...    Reference ETSI GS MEC 011 3.2.1, clause 8.2.7.3.5
    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+   [Setup]  Create new service    ServiceInfo    ${APP_INSTANCE_ID} 
+   Set Suite Variable    ${SERVICE_ID}    ${response['body']['serInstanceId']}
    Remove individual service    ${APP_INSTANCE_ID}    ${SERVICE_ID}
-    Check HTTP Response Status Code Is    204
+   Check HTTP Response Status Code Is    204
 
 
-TP_MEC_MEC011_SRV_APPSAQ_005_NF
+TC_MEC_MEC011_SRV_APPSAQ_005_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for deletion of a unknown service is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.5
+    ...    Reference ETSI GS MEC 011 3.2.1, clause 8.2.7.3.5
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove individual service    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SERVICE_ID}   
     Remove individual service    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SERVICE_ID}
     Check HTTP Response Status Code Is    404
 
@@ -181,7 +218,7 @@ TP_MEC_MEC011_SRV_APPSAQ_005_NF
 Get a list of mecService of an application instance with parameters
     [Arguments]    ${appInstanceId}    ${key}=None    ${value}=None
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Type":"*/*"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services?${key}=${value}
     ${output}=    Output    response
@@ -191,7 +228,7 @@ Get a list of mecService of an application instance
     [Arguments]    ${appInstanceId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
@@ -202,11 +239,11 @@ Create new service
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     #Set Headers    {"Content-Type":"*/*"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    Log   ${appInstanceId}
     Post    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services    ${body}
+    Log  ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -214,7 +251,7 @@ Create new service
 Get individual service
     [Arguments]    ${appInstanceId}    ${serviceName} 
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Type":"*/*"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceName}
     ${output}=    Output    response
@@ -224,43 +261,53 @@ Update service
     [Arguments]    ${appInstanceId}    ${serviceId}    ${content}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     #Set Headers    {"Content-Type":"*/*"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
     PUT    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceId}    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    
+
+Update service with etag 
+    [Arguments]    ${appInstanceId}    ${serviceId}    ${content}   ${etag}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"If-Match":"${etag}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceId}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+        
 
 Remove individual service
     [Arguments]    ${appInstanceId}    ${serviceName} 
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
+    #Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Type":"*/*"}
     Delete    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceName}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output} 
-    
+   
 
-# Check Plaform IUT notifies the MEC Application instances
-    # [Documentation]
-    # ...    
-
-    # [Arguments]    ${instance_id}    ${content}
+Create a new subscription   
+    [Arguments]    ${appInstanceId}    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
 
-    # TODO check how to send the message (isn't defined). Does it need to be tested as it's not defined?
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
     
-    # // MEC 011, clause 6.4.2
-    # the IUT entity sends a notification_message containing
-    # body containing
-    # notificationType set to "SerAvailabilityNotification",
-    # services containing
-    # serName set to SERVICE_NAME
-    # _links containing
-    # subscription set to MP1_SUBSCRIPTION_A
-    # ;
-    # ;
-    # ;
-    # ;
-    # to the MEC_APP_Subscriber entity
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    ${length} =  Get Length  ${output}  
+    Set Suite Variable    ${payload_notification}    ${output}
+    Run Keyword If  ${length} == 0  Skip
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/environment/variables.txt b/MEC011/SRV/APPSAQ/environment/variables.txt
index e2331ca9e785aaff92b4c4f3777667ebde8c23f0..198d3b08b7d76b57fa5896f7be7e7cbc9c7d98d6 100644
--- a/MEC011/SRV/APPSAQ/environment/variables.txt
+++ b/MEC011/SRV/APPSAQ/environment/variables.txt
@@ -1,25 +1,35 @@
 *** Variables ***
 # Generic variables
+
+${response}                         {}
+#########Env variable for validating TCs locally with Mockoon
 ${SCHEMA}                   http
 ${HOST}                     127.0.0.1
-${PORT}                     8081
-${response}                         {}
+${PORT}                     8082
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_service_mgmt
 ${apiVersion}     v1
 
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
+
+
 # Specific variables
-${APP_INSTANCE_ID}                  5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${APP_INSTANCE_ID}                  f1e4d448-e277-496b-bf63-98391cfd20fb
 ${INSTANCE_ID}                      instance_id
 ${FAKE_INSTANCE_ID_VALUE}           5
-${NON_EXISTENT_APP_INSTANCE_ID}     NON_ESISTENT_APP_INSTANCE_ID
+${NON_EXISTENT_APP_INSTANCE_ID}     NON_EXISTENT_APP_INSTANCE_ID
 ${SERVICE_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_EXISTENT_SERVICE_ID}          NON_EXISTENT_SERVICE_ID
-${INVALID_ETAG}                     INVALID_ETAG
 
 ## this parameter should be the same as in jsons/ServiceInfo.json on param serName
 ${NEW_SERVICE_NAME}                NEW_SERVICE_NAME
 
 ## this parameter should be the same as in jsons/ServiceInfoUpdated.json on param sversion
-${SVC_NEW_VERSION}                 v2.0
\ No newline at end of file
+${SVC_NEW_VERSION}                 v2.0
+${INVALID_ETAG}                    INVALID_ETAG
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/environment/variables_sandbox.txt b/MEC011/SRV/APPSAQ/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3005fa36b8b6e5ca44714f87f83e21a367139826
--- /dev/null
+++ b/MEC011/SRV/APPSAQ/environment/variables_sandbox.txt
@@ -0,0 +1,28 @@
+*** Variables ***
+# Generic variables
+
+${response}                         {}
+####Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+#${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<replace_with_what_provided_by_sandbox>/mep1 
+${apiName}        mec_service_mgmt
+${apiVersion}     v1
+
+
+# Specific variables
+${APP_INSTANCE_ID}                  f1e4d448-e277-496b-bf63-98391cfd20fb
+${INSTANCE_ID}                      instance_id
+${FAKE_INSTANCE_ID_VALUE}           5
+${NON_EXISTENT_APP_INSTANCE_ID}     NON_EXISTENT_APP_INSTANCE_ID
+${SERVICE_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_SERVICE_ID}          NON_EXISTENT_SERVICE_ID
+
+## this parameter should be the same as in jsons/ServiceInfo.json on param serName
+${NEW_SERVICE_NAME}                NEW_SERVICE_NAME
+
+## this parameter should be the same as in jsons/ServiceInfoUpdated.json on param sversion
+${SVC_NEW_VERSION}                 v2.0
+${INVALID_ETAG}                    INVALID_ETAG
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/jsons/SerAvailabilityNotification.json b/MEC011/SRV/APPSAQ/jsons/SerAvailabilityNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..fbdcc2369c286c23e761856db51bc2fb6dcdc6c7
--- /dev/null
+++ b/MEC011/SRV/APPSAQ/jsons/SerAvailabilityNotification.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "SerAvailabilityNotificationSubscription",
+    "callbackReference": "http://127.0.0.1:8888/someendpoint",
+    "_links": {
+        "self": {
+            "href": "http://127.0.0.1:8888/someendpoint"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/jsons/ServiceInfo.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfo.json
index a7962fa6d32db172133b8e046af8da749f929b04..74c67709373109ccba28b36f857f5ce6e06de5e3 100644
--- a/MEC011/SRV/APPSAQ/jsons/ServiceInfo.json
+++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfo.json
@@ -1,42 +1,7 @@
 {
-  "serName": "NEW_SERVICE_NAME",
-  "version": "reprehenderit Ut non commodo",
-  "state": "INACTIVE",
-  "transportInfo": {
-    "id": "labore ut Excepteur sunt ipsum",
-    "name": "in minim enim",
-    "type": "MB_ROUTING",
-    "protocol": "veniam aliqua cillum in",
-    "version": "exercitation pariatur",
-    "endpoint": {
-      "addresses": [
-        {
-          "host": "sint culpa laboris",
-          "port": 10968
-        }
-      ]
-    },
-    "security": {
-      "oAuth2Info": {
-        "grantTypes": [
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_CLIENT_CREDENTIALS"
-        ],
-        "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9"
-      }
-    },
-    "description": "dolor occaecat pariatur ex do"
-  },
-  "serializer": "XML",
-  "serInstanceId": "cillum nostrud minim consectetur proident",
-  "serCategory": {
-    "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,",
-    "id": "consectetur et eiusmod",
-    "name": "ea ipsum irure mollit et",
-    "version": "et"
-  },
-  "scopeOfLocality": "ZONE",
-  "consumedLocalOnly": true,
-  "isLocal": false
+	"serName": "serviceName",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"transportId": "transportId"
 }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json
index 672c8a05db8746bbfdd23b2f9888be7cc938034f..148a2fbefe54322a40e859441e0a2a8f11fcbb78 100644
--- a/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json
+++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json
@@ -1,42 +1,8 @@
 {
-  "Name": "WRONG_PARAMETER_NAME",
-  "version": "reprehenderit Ut non commodo",
-  "state": "INACTIVE",
-  "transportInfo": {
-    "id": "labore ut Excepteur sunt ipsum",
-    "name": "in minim enim",
-    "type": "MB_ROUTING",
-    "protocol": "veniam aliqua cillum in",
-    "version": "exercitation pariatur",
-    "endpoint": {
-      "addresses": [
-        {
-          "host": "sint culpa laboris",
-          "port": 10968
-        }
-      ]
-    },
-    "security": {
-      "oAuth2Info": {
-        "grantTypes": [
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_CLIENT_CREDENTIALS"
-        ],
-        "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9"
-      }
-    },
-    "description": "dolor occaecat pariatur ex do"
-  },
-  "serializer": "XML",
-  "serInstanceId": "cillum nostrud minim consectetur proident",
-  "serCategory": {
-    "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,",
-    "id": "consectetur et eiusmod",
-    "name": "ea ipsum irure mollit et",
-    "version": "et"
-  },
-  "scopeOfLocality": "ZONE",
-  "consumedLocalOnly": true,
-  "isLocal": false
+	"Name": "WRONG_PARAM_NAME",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"serInstanceId": "3F897E85-ABCD-FFFF-A957-FCF0CCE649FD",
+	"transportId": "transportId"
 }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json
index afee85ac9419054136e278c60f5ae34d1706a1f5..f64e4817e20c1eafeb5384c7002ac82780570212 100644
--- a/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json
+++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json
@@ -1,42 +1,7 @@
 {
-  "serName": "NEW_SERVICE_NAME",
-  "version": "v2.0",
-  "state": "INACTIVE",
-  "transportInfo": {
-    "id": "labore ut Excepteur sunt ipsum",
-    "name": "in minim enim",
-    "type": "MB_ROUTING",
-    "protocol": "veniam aliqua cillum in",
-    "version": "exercitation pariatur",
-    "endpoint": {
-      "addresses": [
-        {
-          "host": "sint culpa laboris",
-          "port": 10968
-        }
-      ]
-    },
-    "security": {
-      "oAuth2Info": {
-        "grantTypes": [
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_CLIENT_CREDENTIALS"
-        ],
-        "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9"
-      }
-    },
-    "description": "dolor occaecat pariatur ex do"
-  },
-  "serializer": "XML",
-  "serInstanceId": "cillum nostrud minim consectetur proident",
-  "serCategory": {
-    "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,",
-    "id": "consectetur et eiusmod",
-    "name": "ea ipsum irure mollit et",
-    "version": "et"
-  },
-  "scopeOfLocality": "ZONE",
-  "consumedLocalOnly": true,
-  "isLocal": false
+	"serName": "NEW_SERVICE_NAME",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"serInstanceId": "3F897E85-ABCD-FFFF-A957-FCF0CCE649FD"
 }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json
index 6794471ccde6e94aa98b95ad8f9aa9fb35e30ab3..44b501601ec34985c042df4162d6cee7181ef3f7 100644
--- a/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json
+++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json
@@ -1,42 +1,7 @@
 {
-  "serName": "NEW_SERVICE_NAME",
-  "a_version": "v2.0",
-  "state": "INACTIVE",
-  "transportInfo": {
-    "id": "labore ut Excepteur sunt ipsum",
-    "name": "in minim enim",
-    "type": "MB_ROUTING",
-    "protocol": "veniam aliqua cillum in",
-    "version": "exercitation pariatur",
-    "endpoint": {
-      "addresses": [
-        {
-          "host": "sint culpa laboris",
-          "port": 10968
-        }
-      ]
-    },
-    "security": {
-      "oAuth2Info": {
-        "grantTypes": [
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_IMPLICIT_GRANT",
-          "OAUTH2_CLIENT_CREDENTIALS"
-        ],
-        "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9"
-      }
-    },
-    "description": "dolor occaecat pariatur ex do"
-  },
-  "serializer": "XML",
-  "serInstanceId": "cillum nostrud minim consectetur proident",
-  "serCategory": {
-    "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,",
-    "id": "consectetur et eiusmod",
-    "name": "ea ipsum irure mollit et",
-    "version": "et"
-  },
-  "scopeOfLocality": "ZONE",
-  "consumedLocalOnly": true,
-  "isLocal": false
+	"serName": "NEW_SERVICE_NAME",
+	"a_version": "v2.0",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"serInstanceId": "3F897E85-ABCD-FFFF-A957-FCF0CCE649FD"
 }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSAQ/libraries/Server.py b/MEC011/SRV/APPSAQ/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb646702b03e99229758efb85e78ebb9114bcbc5
--- /dev/null
+++ b/MEC011/SRV/APPSAQ/libraries/Server.py
@@ -0,0 +1,148 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        ## If a notification is received, then is returned. Otherwise an empty dictionary. 
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        
+        ##OLD mechanism commented: if no response is received, then read the Notification JSON file and return it. 
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        #return notification_json ##Decomment if you want to use the notification read from file
+        return {}
+        
diff --git a/MEC011/SRV/APPSAQ/schemas/SerAvailabilityNotificationSubscription.schema.json b/MEC011/SRV/APPSAQ/schemas/SerAvailabilityNotificationSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..f779cccfe3793dd7649027fe8f2cfd05a75bf67f
--- /dev/null
+++ b/MEC011/SRV/APPSAQ/schemas/SerAvailabilityNotificationSubscription.schema.json
@@ -0,0 +1,136 @@
+{
+          "title": "SerAvailabilityNotificationSubscription",
+          "required": [
+            "subscriptionType",
+            "callbackReference",
+            "_links"
+          ],
+          "type": "object",
+          "properties": {
+            "subscriptionType": {
+              "type": "string",
+              "description": "Shall be set to SerAvailabilityNotificationSubscription.",
+              "examples": [
+                "SerAvailabilityNotificationSubscription"
+              ]
+            },
+            "callbackReference": {
+              "type": "string",
+              "description": "URI selected by the MEC application instance to receive notifications on the subscribed MEC service availability information. This shall be included in both the request and the response."
+            },
+            "_links": {
+              "title": "Self",
+              "required": [
+                "self"
+              ],
+              "type": "object",
+              "properties": {
+                "self": {
+                  "title": "LinkType",
+                  "type": "object",
+                  "properties": {
+                    "href": {
+                      "type": "string",
+                      "description": "URI referring to a resource",
+                      "examples": [
+                        "/mecSerMgmtApi/example"
+                      ]
+                    }
+                  },
+                  "description": "This type represents a type of link and may be referenced from data structures"
+                }
+              },
+              "description": "Self-referring URI."
+            },
+            "filteringCriteria": {
+              "title": "SerAvailabilityNotificationSubscription.FilteringCriteria",
+              "type": "object",
+              "properties": {
+                "serInstanceIds": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  },
+                  "description": "Identifiers of service instances about which to report events."
+                },
+                "serNames": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  },
+                  "description": "Names of services about which to report events."
+                },
+                "serCategories": {
+                  "type": "array",
+                  "items": {
+                    "title": "CategoryRef",
+                    "required": [
+                      "href",
+                      "id",
+                      "name",
+                      "version"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "Reference of the catalogue",
+                        "examples": [
+                          "/example/catalogue1"
+                        ]
+                      },
+                      "id": {
+                        "type": "string",
+                        "description": "Unique identifier of the category",
+                        "examples": [
+                          "id12345"
+                        ]
+                      },
+                      "name": {
+                        "type": "string",
+                        "description": "Name of the category, example values include RNI, Location & Bandwidth Management",
+                        "examples": [
+                          "RNI"
+                        ]
+                      },
+                      "version": {
+                        "type": "string",
+                        "description": "Category version",
+                        "examples": [
+                          "version1"
+                        ]
+                      }
+                    },
+                    "description": "This type represents the category reference"
+                  },
+                  "description": "Categories of services about which to report events."
+                },
+                "states": {
+                  "type": "array",
+                  "items": {
+                    "title": "ServiceState",
+                    "enum": [
+                      "ACTIVE",
+                      "INACTIVE",
+                      "SUSPENDED"
+                    ],
+                    "type": "string",
+                    "description": "This enumeration defines the possible states of a service.",
+                    "examples": [
+                      "ACTIVE"
+                    ]
+                  },
+                  "description": "States of the services about which to report events. If the event is  a state change, this filter represents the state after the change."
+                },
+                "isLocal": {
+                  "type": "boolean",
+                  "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.",
+                  "examples": [
+                    true
+                  ]
+                }
+              },
+              "description": "Filtering criteria to match services for which events are requested to be reported. If absent, matches all services. All child attributes are combined with the logical  \"AND\" operation."
+            }
+          }
+        }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot
index 3154e0f5f89e1ddfc66aec0bb30c0acd576cc162..80e7e909d031a9b5c0737b2a722438fa55146199 100644
--- a/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot
+++ b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot
@@ -4,119 +4,132 @@ Documentation
 ...    A test suite for validating Application Subscriptions (APPSUB) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem    
-
+Library     String
 Default Tags    TC_MEC_SRV_APPSUB
 
 
 *** Test Cases ***
 
-TP_MEC_MEC011_SRV_APPSUB_001_OK
+TC_MEC_MEC011_SRV_APPSUB_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of subscriptions for notifications
     ...    on services availability when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/MecAppSuptApiSubscriptionLinkList
-
+    ...    Reference          "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                       "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create new subscription    ${APP_INSTANCE_ID}    AppTerminationNotificationSubscription
+    ${elements} =  Split String    ${response['body']['_links']['self']['href']}     /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]}
     Get Subscriptions list    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    SubscriptionsLinkList
+    [TearDown]   Remove subscription   ${APP_INSTANCE_ID}    ${SUB_ID}
+    
 
-
-TP_MEC_MEC011_SRV_APPSUB_001_NF
+TC_MEC_MEC011_SRV_APPSUB_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.1
-
+    ...    Reference          "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                       "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Remove subscription   ${NON_EXISTENT_APP_INSTANCE_ID}    ${SUB_ID}
     Get Subscriptions list    ${NON_EXISTENT_APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_APPSUB_002_OK
+TC_MEC_MEC011_SRV_APPSUB_002_OK
     [Documentation]
     ...    Check that the IUT acknowledges the subscription by a MEC Application
     ...    to notifications on service availability events
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    
     Create new subscription    ${APP_INSTANCE_ID}    AppTerminationNotificationSubscription
+    ${CALLBACK_REF}   Get value entry from JSON file    AppTerminationNotificationSubscription  callbackReference
+    ${elements} =  Split String    ${response['body']['_links']['self']['href']}     /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]}
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    AppTerminationNotificationSubscription
     Check HTTP Response Header Contains    Location
     Check Response Contains    ${response['body']}    subscriptionType    AppTerminationNotificationSubscription
-    Check Response Contains    ${response['body']}    callbackReference    ${APP_TERM_NOTIF_CALLBACK_URI}
+    Check Response Contains    ${response['body']}    callbackReference    ${CALLBACK_REF}
+    [TearDown]   Remove subscription   ${APP_INSTANCE_ID}    ${SUB_ID}
 
 
-TP_MEC_MEC011_SRV_APPSUB_002_BR
+TC_MEC_MEC011_SRV_APPSUB_002_BR
     [Documentation]
     ...    Check that the IUT responds with the information on a specific subscription
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get individual subscription    ${APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    AppTerminationNotificationSubscription
-    Check Response Contains    ${response['body']}    subscriptionType    AppTerminationNotificationSubscription
-
+    Create new subscription    ${APP_INSTANCE_ID}    AppTerminationNotificationSubscriptionBR
+    Check HTTP Response Status Code Is    400
 
          
-TP_MEC_MEC011_SRV_APPSUB_003_OK
+TC_MEC_MEC011_SRV_APPSUB_003_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific subscription
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.1
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get individual subscription    ${APP_INSTANCE_ID}    ${SUBSCRIPTION_ID} 
+    [Setup]   Create new subscription    ${APP_INSTANCE_ID}    AppTerminationNotificationSubscription
+    ${elements} =  Split String    ${response['body']['_links']['self']['href']}     /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]} 
+    Get individual subscription    ${APP_INSTANCE_ID}    ${SUB_ID} 
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    AppTerminationNotificationSubscription
+    [TearDown]   Remove subscription   ${APP_INSTANCE_ID}    ${SUB_ID}
     
 
-TP_MEC_MEC011_SRV_APPSUB_003_NF
+TC_MEC_MEC011_SRV_APPSUB_003_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.1
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Remove subscription   ${APP_INSTANCE_ID}    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Get individual subscription    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_APPSUB_004_OK
+TC_MEC_MEC011_SRV_APPSUB_004_OK
     [Documentation]
     ...    Check that the IUT acknowledges the unsubscribe from service availability event notifications
     ...    when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.5
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.5"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
+    [Setup]   Create new subscription    ${APP_INSTANCE_ID}    AppTerminationNotificationSubscription
+    ${elements} =  Split String    ${response['body']['_links']['self']['href']}     /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]}
+    Remove subscription    ${APP_INSTANCE_ID}    ${SUB_ID}
     Check HTTP Response Status Code Is    204
 
 
-TP_MEC_MEC011_SRV_APPSUB_004_NF
+TC_MEC_MEC011_SRV_APPSUB_004_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.5
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.5"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Remove subscription   ${NON_EXISTENT_APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
     Remove subscription    ${NON_EXISTENT_APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
@@ -136,13 +149,14 @@ Create new subscription
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Type":"*/*"}
+    #Set Headers    {"Content-Type":"*/*"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
     Post    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
+    
 
 Get individual subscription    
     [Arguments]    ${appInstanceId}    ${subscriptionId}
diff --git a/MEC011/SRV/APPSUB/environment/variables.txt b/MEC011/SRV/APPSUB/environment/variables.txt
index c66b1e95290f06a0c6074ab0d3d76bd71ad9ae6b..f983b984eade22c65e3c4864185b1bdda730c763 100644
--- a/MEC011/SRV/APPSUB/environment/variables.txt
+++ b/MEC011/SRV/APPSUB/environment/variables.txt
@@ -10,7 +10,10 @@ ${apiName}        mec_app_support
 ${apiVersion}     v1
 
 # Specific variables
-${APP_INSTANCE_ID}                      5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+
+# Specific variables
+#${APP_INSTANCE_ID}                      5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${APP_INSTANCE_ID}                  f1e4d448-e277-496b-bf63-98391cfd20fb
 ${NON_EXISTENT_APP_INSTANCE_ID}         NON_ESISTENT_APP_INSTANCE_ID
 
 
@@ -18,7 +21,7 @@ ${APP_TERM_NOTIF_CALLBACK_URI}          http://127.0.0.1/subscribe
 
 ${SUBSCRIPTION_ID}                      e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
-
+${SUB_ID}
 
 
 # ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
@@ -34,4 +37,4 @@ ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
 # ${callback_endpoint}    /amsi/subscriptions
 # ${callback_endpoint_error}    /subs_404
 # ${total_polling_time}   2 min
-# ${polling_interval}     10 sec
\ No newline at end of file
+# ${polling_interval}     10 sec
diff --git a/MEC011/SRV/APPSUB/environment/variables_sandbox.txt b/MEC011/SRV/APPSUB/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c8c9abaad0c8c5c8642ed10ef53c48bf5306ea1
--- /dev/null
+++ b/MEC011/SRV/APPSUB/environment/variables_sandbox.txt
@@ -0,0 +1,40 @@
+*** Variables ***
+####Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<identifier_provided_by_the_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+
+
+# Specific variables
+
+# Specific variables
+#${APP_INSTANCE_ID}                      5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${APP_INSTANCE_ID}                  f1e4d448-e277-496b-bf63-98391cfd20fb
+${NON_EXISTENT_APP_INSTANCE_ID}         NON_ESISTENT_APP_INSTANCE_ID
+
+
+${APP_TERM_NOTIF_CALLBACK_URI}          http://127.0.0.1/subscribe
+
+${SUBSCRIPTION_ID}                      e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
+${SUB_ID}
+
+
+# ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
+# ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
+# 
+# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}     NON_EXISTENT_APP_MOBILITY_SERVICE_ID
+
+# # Notifications variables
+# ${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
+
+# ${callback_port}    9091
+# ${callback_uri}    http://172.22.1.7:${callback_port}
+# ${callback_endpoint}    /amsi/subscriptions
+# ${callback_endpoint_error}    /subs_404
+# ${total_polling_time}   2 min
+# ${polling_interval}     10 sec
diff --git a/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json
index 760b35c7fbfa597f5f792b9e367230579c475fe8..29752270fb5e785e3eb16b002764590fe6c954a7 100644
--- a/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json
+++ b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json
@@ -6,5 +6,5 @@
       "href": "https://somewhere.com/mecAppSuptApi/example"
     }
   },
-  "appInstanceId": "est eiusmod nulla exercitation"
+  "appInstanceId": "f1e4d448-e277-496b-bf63-98391cfd20fb"
 }
\ No newline at end of file
diff --git a/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscriptionBR.json b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscriptionBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..0de784b8d516390eb7eb5cb6a031722f5d612481
--- /dev/null
+++ b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscriptionBR.json
@@ -0,0 +1,10 @@
+{
+  "subscriptionType": "INVALID_SUBSCRIPTION_TYPE",
+  "callbackReference": "https://somewhere.com/mecAppSuptApi/example",
+  "_links": {
+    "self": {
+      "href": "https://somewhere.com/mecAppSuptApi/example"
+    }
+  },
+  "appInstanceId": "appInstanceId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/CONFTASK/PlatConfirmation.robot b/MEC011/SRV/CONFTASK/PlatConfirmation.robot
index f4edb9a410718fc061642caaa4b5948a8d9ca731..cc52e8b39916f4024aa9e39981ed3fabc1324661 100644
--- a/MEC011/SRV/CONFTASK/PlatConfirmation.robot
+++ b/MEC011/SRV/CONFTASK/PlatConfirmation.robot
@@ -1,76 +1,104 @@
 *** Settings ***
 
 Documentation
-...    A test suite for validating DNS rules (DNS) operations.
+...    A test suite for validating Platform Configuration (CONF) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
-Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+#Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}  
 Library     OperatingSystem 
 
 Default Tags    TC_MEC_SRV_CONF
 
 
-*** Variables ***
-
-
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_CONFTASK_001_OK
+TC_MEC_MEC011_SRV_CONFTASK_001_OK
     [Documentation]
     ...    Check that the IUT responds that it has completed 
     ...    the application level termination
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.11.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.1.4.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Request termination of MEC Application    ${APP_INSTANCE_ID}    AppTerminationConfirmation
+    [Setup]   Create a new MEC application instance profile  AppInfo       
+    Request termination of MEC Application   ${APP_INSTANCE_ID}    AppTerminationConfirmation
     Check HTTP Response Status Code Is    204
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+    
 
-
-TP_MEC_MEC011_SRV_CONFTASK_001_NF
+TC_MEC_MEC011_SRV_CONFTASK_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error
     ...    when requested graceful termination/stop of an unknown MEC Application instance
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.11.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.1.4.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Request termination of MEC Application    ${NON_ESISTENT_APP_INSTANCE_ID}    AppTerminationConfirmation
+    [Teardown]   Delete MEC application instance profile   ${NON_EXISTING_APP_INSTANCE_ID}
+    Request termination of MEC Application    ${NON_EXISTING_APP_INSTANCE_ID}    AppTerminationConfirmation
     Check HTTP Response Status Code Is    404
     
 
 
 
-TP_MEC_MEC011_SRV_CONFTASK_002_OK
+TC_MEC_MEC011_SRV_CONFTASK_002_OK
     [Documentation]
     ...    Check that the IUT responds with an acknowledge
     ...    when requested readiness status for a MEC Application instance
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.12.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.1.4.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Request readiness status of MEC Application    ${APP_INSTANCE_ID}    AppReadyConfirmation
     Check HTTP Response Status Code Is    204
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+ 
 
-
-TP_MEC_MEC011_SRV_CONFTASK_002_NF
+TC_MEC_MEC011_SRV_CONFTASK_002_NF
     [Documentation]
     ...    Check that the IUT responds with an error
     ...    when requested readiness status for an unknown MEC Application instance
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.12.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.1.4.3",
+    ...    "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Request readiness status of MEC Application    ${NON_ESISTENT_APP_INSTANCE_ID}   AppReadyConfirmation
+    [Setup]   Delete MEC application instance profile   ${NON_EXISTING_APP_INSTANCE_ID}
+    Request readiness status of MEC Application    ${NON_EXISTING_APP_INSTANCE_ID}   AppReadyConfirmation
     Check HTTP Response Status Code Is    404
 
 
 *** Keywords ***
+Create a new MEC application instance profile
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post      ${HOST_REG_APP}:${PORT_REG_APP}/${apiRoot_REG_APP}${apiName_REG_APP}/${apiVersion_REG_APP}/registrations    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${APP_INSTANCE_ID}   ${response['body']['appInstanceId']}
+
+
+
+Delete MEC application instance profile
+    [Arguments]    ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${HOST_REG_APP}:${PORT_REG_APP}/${apiRoot_REG_APP}${apiName_REG_APP}/${apiVersion_REG_APP}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
 Request termination of MEC Application
     [Arguments]    ${appInstanceId}    ${content}
     Set Headers    {"Accept":"application/json"}
@@ -78,7 +106,7 @@ Request termination of MEC Application
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_termination    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_termination    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
@@ -90,6 +118,6 @@ Request readiness status of MEC Application
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_ready    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_ready    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
diff --git a/MEC011/SRV/CONFTASK/environment/variables.txt b/MEC011/SRV/CONFTASK/environment/variables.txt
index 81a8328be20beca428ce418769074cf80d2c4539..d4719e057bed4f676a28f4f2f1b7bd5c86061522 100644
--- a/MEC011/SRV/CONFTASK/environment/variables.txt
+++ b/MEC011/SRV/CONFTASK/environment/variables.txt
@@ -7,28 +7,16 @@ ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_app_support
-${apiVersion}     v1
+${apiVersion}     v2
 
-# Specific variables
-${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
-${NON_ESISTENT_APP_INSTANCE_ID}            NON_ESISTENT_APP_INSTANCE_ID
-# ${DNS_RULE_ID}                           e0deee2b-6e50-4f33-ab09-8bf0585025d3
-# ${NON_ESISTENT_DNS_RULE_ID}              NON_ESISTENT_DNS_RULE_ID
-# ${INVALID_ETAG}                     INVALID_ETAG
-
-# ${SOME_IP_ADDRESS}                   146.241.7.3
 
-# ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
-# ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
-# ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
-# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}     NON_EXISTENT_APP_MOBILITY_SERVICE_ID
+${HOST_REG_APP}             127.0.0.1
+${PORT_REG_APP}             8082
+${apiRoot_REG_APP}          
+${apiName_REG_APP}          mec_app_support         
+${apiVersion_REG_APP}       v2
 
-# # Notifications variables
-# ${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
 
-# ${callback_port}    9091
-# ${callback_uri}    http://172.22.1.7:${callback_port}
-# ${callback_endpoint}    /amsi/subscriptions
-# ${callback_endpoint_error}    /subs_404
-# ${total_polling_time}   2 min
-# ${polling_interval}     10 sec
\ No newline at end of file
+# Specific variables
+${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${NON_EXISTING_APP_INSTANCE_ID}            NON_EXISTING_APP_INSTANCE_ID
\ No newline at end of file
diff --git a/MEC011/SRV/CONFTASK/environment/variables_sandbox.txt b/MEC011/SRV/CONFTASK/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..221c7b72a3d59f786b48e915d9f0459760eae397
--- /dev/null
+++ b/MEC011/SRV/CONFTASK/environment/variables_sandbox.txt
@@ -0,0 +1,22 @@
+*** Variables ***
+# Generic variables
+####Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  <your_id_from_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+
+${HOST_REG_APP}             try-mec.etsi.org
+${PORT_REG_APP}             443
+${apiRoot_REG_APP}          /sbxjbxjt4s/mep1 
+${apiName_REG_APP}          mec_app_support         
+${apiVersion_REG_APP}       v1
+
+
+# Specific variables
+#${APP_INSTANCE_ID}                       
+${APP_INSTANCE_ID}                      298b2c0c-7efa-45d3-8b47-8ab3c009b845
+${NON_EXISTING_APP_INSTANCE_ID}            NON_EXISTING_APP_INSTANCE_ID
\ No newline at end of file
diff --git a/MEC011/SRV/CONFTASK/jsons/AppInfo.json b/MEC011/SRV/CONFTASK/jsons/AppInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/CONFTASK/jsons/AppInfo.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/DNS/PlatDnsRules.robot b/MEC011/SRV/DNS/PlatDnsRules.robot
index 883e195f74452cff1084dde6fe2d3213c87252ce..6776a153ac90bc6188f2cc08fef42451f8f6b3f3 100644
--- a/MEC011/SRV/DNS/PlatDnsRules.robot
+++ b/MEC011/SRV/DNS/PlatDnsRules.robot
@@ -4,116 +4,170 @@ Documentation
 ...    A test suite for validating DNS rules (DNS) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+#Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
 
 Default Tags    TC_MEC_SRV_DNS
 
 
-*** Variables ***
-
-
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_DNS_001_OK
+TC_MEC_MEC011_SRV_DNS_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of active DNS rules
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.9.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
-
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.9.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Get list of active DNS rules    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    DnsRuleList
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+   
+TC_MEC_MEC011_SRV_DNS_001_NF
+    [Documentation]
+    ...    Check that the IUT responds with a list of active DNS rules
+    ...    when queried by a MEC Application
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.9.3.1"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Delete MEC application instance profile   ${NOT_EXISTENT_APP_INSTANCE_ID}
+    Get list of active DNS rules    ${NOT_EXISTENT_APP_INSTANCE_ID}
+    Check HTTP Response Status Code Is    404
+    
+
 
 
-TP_MEC_MEC011_SRV_DNS_002_OK
+TC_MEC_MEC011_SRV_DNS_002_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific DNS rule
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
-
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Get individual DNS rule    ${APP_INSTANCE_ID}    ${DNS_RULE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    DnsRule
     Check Response Contains    ${response['body']}    dnsRuleId    ${DNS_RULE_ID}
 
 
-TP_MEC_MEC011_SRV_DNS_002_NF
+
+TC_MEC_MEC011_SRV_DNS_002_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.1
-
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get individual DNS rule    ${APP_INSTANCE_ID}    ${NON_ESISTENT_DNS_RULE_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_DNS_003_OK
+TC_MEC_MEC011_SRV_DNS_003_OK
     [Documentation]
-    ...    Check that the IUT updates a specific DNS rule
-    ...    when commanded by a MEC Application
+    ...    Check that the IUT responds with the information on a specific DNS rule 
+    ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
-
+    ...    Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Update a DNS Rule    ${APP_INSTANCE_ID}    ${DNS_RULE_ID}    DnsRuleUpdate
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    DnsRule
+    Check Response Contains    ${response['body']}    dnsRuleId    ${DNS_RULE_ID}
     Check Response Contains    ${response['body']}    ipAddress    ${SOME_IP_ADDRESS}
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+   
 
-
-TP_MEC_MEC011_SRV_DNS_003_BR
+TC_MEC_MEC011_SRV_DNS_003_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
+    ...    Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2"
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Update a DNS Rule    ${APP_INSTANCE_ID}    ${DNS_RULE_ID}    DnsRuleUpdateError
     Check HTTP Response Status Code Is    400
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+   
 
-
-TP_MEC_MEC011_SRV_DNS_003_NF
+TC_MEC_MEC011_SRV_DNS_003_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
+    ...    Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2"
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
     Update a DNS Rule    ${APP_INSTANCE_ID}    ${NON_ESISTENT_DNS_RULE_ID}    DnsRuleUpdate
     Check HTTP Response Status Code Is    404
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+   
 
 
-
-#TP_MEC_MEC011_SRV_DNS_003_PF
-#    [Documentation]
-#    ...    Check that the IUT responds with an error when
-#    ...    a request sent by a MEC Application doesn't comply with a required condition
-#    ...
-#    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2
-#    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule
-#
-#    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-#    Update a DNS Rule with invalid etag    ${APP_INSTANCE_ID}    ${DNS_RULE_ID}    DnsRuleUpdate
-#    Check HTTP Response Status Code Is    412
+TC_MEC_MEC011_SRV_DNS_003_PF
+    [Documentation]
+    ...    Check that the IUT responds with an error when
+    ...    a request sent by a MEC Application doesn't comply with a required condition
+    ...
+    ...    Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.1.2.3",
+    ...              "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile  AppInfo       
+    Update a DNS Rule with invalid etag    ${APP_INSTANCE_ID}    ${DNS_RULE_ID}    DnsRuleUpdate
+    Check HTTP Response Status Code Is    412
+    [Teardown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+   
 
 
 
 *** Keywords ***
+Create a new MEC application instance profile
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST      http://${HOST_REG_APP}:${PORT_REG_APP}/${apiRoot_REG_APP}${apiName_REG_APP}/${apiVersion_REG_APP}/registrations    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${APP_INSTANCE_ID}   ${response['body']['appInstanceId']}
+
+
+
+Delete MEC application instance profile
+    [Arguments]    ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    http://${HOST_REG_APP}:${PORT_REG_APP}/${apiRoot_REG_APP}${apiName_REG_APP}/${apiVersion_REG_APP}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
 Get list of active DNS rules    
     [Arguments]    ${appInstanceId}
     Set Headers    {"Accept":"application/json"}
@@ -138,13 +192,22 @@ Update a DNS Rule
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"If-Match": "${VALID_ETAG}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId}    ${body}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId}    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
 Update a DNS Rule with invalid etag
     [Arguments]    ${appInstanceId}    ${dnsRuleId}    ${content}
     Set Headers    {"If-Match": "${INVALID_ETAG}"}
-    Update a DNS Rule    ${appInstanceId}    ${dnsRuleId}    ${content}
\ No newline at end of file
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"If-Match": "${INVALID_ETAG}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC011/SRV/DNS/environment/variables.txt b/MEC011/SRV/DNS/environment/variables.txt
index bed8e739a7f91a5ec2141d55c902ea10fc0fbe24..4c2346cfa6e1232a0addc9a2be1e00de3155acb8 100644
--- a/MEC011/SRV/DNS/environment/variables.txt
+++ b/MEC011/SRV/DNS/environment/variables.txt
@@ -7,13 +7,21 @@ ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_app_support
-${apiVersion}     v1
+${apiVersion}     v2
 
 # Specific variables
+${HOST_REG_APP}             127.0.0.1
+${PORT_REG_APP}             8082
+${apiRoot_REG_APP}          
+${apiName_REG_APP}          mec_app_support         
+${apiVersion_REG_APP}       v2
+
 ${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${NOT_EXISTENT_APP_INSTANCE_ID}          NOT_EXISTENT_APP_INSTANCE_ID
 ${DNS_RULE_ID}                           e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_ESISTENT_DNS_RULE_ID}              NON_ESISTENT_DNS_RULE_ID
-${INVALID_ETAG}                     INVALID_ETAG
+${INVALID_ETAG}                          INVALID_ETAG
+${VALID_ETAG}                            abcdef
 
 ${SOME_IP_ADDRESS}                   146.241.7.3
 
diff --git a/MEC011/SRV/DNS/environment/variables_sandbox.txt b/MEC011/SRV/DNS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b4dc4ef88f78508edd0f9ac6e45acfc25899e66e
--- /dev/null
+++ b/MEC011/SRV/DNS/environment/variables_sandbox.txt
@@ -0,0 +1,46 @@
+*** Variables ***
+
+#### Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+${APP_INSTANCE_ID}                      f1e4d448-e277-496b-bf63-98391cfd20fb
+
+# Specific variables
+${HOST_REG_APP}             127.0.0.1
+${PORT_REG_APP}             8082
+${apiRoot_REG_APP}          
+${apiName_REG_APP}          mec_app_support         
+${apiVersion_REG_APP}       v2
+${response}                         {}
+
+
+
+
+#${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${NOT_EXISTENT_APP_INSTANCE_ID}          NOT_EXISTENT_APP_INSTANCE_ID
+${DNS_RULE_ID}                           e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_ESISTENT_DNS_RULE_ID}              NON_ESISTENT_DNS_RULE_ID
+${INVALID_ETAG}                          INVALID_ETAG
+${VALID_ETAG}                            abcdef
+
+${SOME_IP_ADDRESS}                   146.241.7.3
+
+# ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
+# ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
+# ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
+# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}     NON_EXISTENT_APP_MOBILITY_SERVICE_ID
+
+# # Notifications variables
+# ${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
+
+# ${callback_port}    9091
+# ${callback_uri}    http://172.22.1.7:${callback_port}
+# ${callback_endpoint}    /amsi/subscriptions
+# ${callback_endpoint_error}    /subs_404
+# ${total_polling_time}   2 min
+# ${polling_interval}     10 sec
\ No newline at end of file
diff --git a/MEC011/SRV/DNS/jsons/AppInfo.json b/MEC011/SRV/DNS/jsons/AppInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/DNS/jsons/AppInfo.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/LIV/Liveness.robot b/MEC011/SRV/LIV/Liveness.robot
deleted file mode 100644
index 2e7e3102d5abebbebc23a3763e7811948beb27ce..0000000000000000000000000000000000000000
--- a/MEC011/SRV/LIV/Liveness.robot
+++ /dev/null
@@ -1,86 +0,0 @@
-*** Settings ***
-
-Documentation
-...    A test suite for validating Application Subscriptions (APPSUB) operations.
-
-Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
-Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
-Library     OperatingSystem    
-
-
-*** Test Cases ***
-
-TP_MEC_MEC011_SRV_MSL_001_OK
-    [Documentation]
-    ...    Check that the IUT responds with the liveness of a MEC service instance 
-    ...     when queried by a MEC Application
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.10.3.1
- 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Individual MEC service liveness  ${URL_SERVICE_MEC_LIVENESS} 
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    ServiceLivenessInfo
-
-
-
-TP_MEC_MEC011_SRV_MSL_001_NF
-    [Documentation]
-    ...   Check that the IUT responds with an error when
-    ...     a request for an URI that cannot be mapped to a valid resource URI 
-    ...     is sent by a MEC Application
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.10.3.1
- 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Individual MEC service liveness  ${NOT_EXISING_URL_SERVICE_MEC_LIVENESS}
-    Check HTTP Response Status Code Is    404
-
-
-TP_MEC_MEC011_SRV_MSL_002_OK
-    [Documentation]
-    ...    Check that the IUT updates the liveness of a MEC service instance 
-    ...    when requested by a MEC Application
- 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Set Headers    {"Authorization":"${TOKEN}"}
-    
-    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdate    .json
-    ${body}=    Get File    ${file}
-    Update MEC service liveness  ${URL_SERVICE_MEC_LIVENESS}  ${body}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    ServiceLivenessInfo
-    Check Response Contains    ${response['body']}   state    ACTIVE
-
-TP_MEC_MEC011_SRV_MSL_002_BR
-    [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    incorrect parameters were sent by a MEC Application
- 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Set Headers    {"Authorization":"${TOKEN}"}
-    
-    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdateError    .json
-    ${body}=    Get File    ${file}
-    Update MEC service liveness  ${URL_SERVICE_MEC_LIVENESS}  ${body}
-    Check HTTP Response Status Code Is    400
-    
-
-*** Keywords ***
-Individual MEC service liveness
-    [Arguments]    ${URL_MEC_SERVICE_LIVENESS}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Type":"*/*"}
-    Get     ${URL_MEC_SERVICE_LIVENESS}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    
-
-Update MEC service liveness
-    [Arguments]    ${URL_MEC_SERVICE_LIVENESS}  ${body}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Patch     ${URL_MEC_SERVICE_LIVENESS}   ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}  
-    
\ No newline at end of file
diff --git a/MEC011/SRV/MLS/Liveness.robot b/MEC011/SRV/MLS/Liveness.robot
new file mode 100644
index 0000000000000000000000000000000000000000..6f3906fd9b454d43fef359b608e8e66c5d9825bd
--- /dev/null
+++ b/MEC011/SRV/MLS/Liveness.robot
@@ -0,0 +1,152 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating MEC Liveness Service (MLS) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    environment/variables_sandbox.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem    
+
+
+*** Test Cases ***
+TC_MEC_MEC011_SRV_MSL_001_OK
+    [Documentation]
+    ...    Check that the IUT responds with the liveness of a MEC service instance 
+    ...     when queried by a MEC Application
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.2.4",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.1"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create new service   ServiceInfo    ${APP_INSTANCE_ID}
+    Individual MEC service liveness  ${LIVENESS_URI} 
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    ServiceLivenessInfo
+    Check Response Contains    ${response['body']}   state    ACTIVE
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${SERVICE_NAME}
+    
+TC_MEC_MEC011_SRV_MSL_001_NF
+    [Documentation]
+    ...   Check that the IUT responds with an error when
+    ...   a request for an URI that cannot be mapped to a valid resource URI 
+    ...   is sent by a MEC Application
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.2.4",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.1"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Individual MEC service liveness  ${NOT_EXISTING_URL_SERVICE_MEC_LIVENESS}
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC011_SRV_MSL_002_OK_01
+    [Documentation]
+    ...    Check that the IUT updates the liveness of a MEC service instance 
+    ...    when requested by a MEC Application
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.1.2.5",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdate    .json
+    ${body}=    Get File    ${file}
+    [Setup]   Create new service   ServiceInfo    ${APP_INSTANCE_ID}
+    Update MEC service liveness  ${URL_SERVICE_MEC_LIVENESS}  ${body}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    ServiceLivenessInfo
+    Check Response Contains    ${response['body']}   state    ACTIVE
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${SERVICE_NAME}
+
+
+TC_MEC_MEC011_SRV_MSL_002_OK_02
+    [Documentation]
+    ...    Check that the IUT updates the liveness of a MEC service instance 
+    ...    when requested by a MEC Application
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.1.2.5",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdate    .json
+    ${body}=    Get File    ${file}
+    Update MEC service liveness  ${URL_SERVICE_MEC_LIVENESS}  ${body}
+    Check HTTP Response Status Code Is    204
+    
+
+TC_MEC_MEC011_SRV_MSL_002_BR
+    [Documentation]
+    ...    Check that the IUT responds with an error when
+    ...    incorrect parameters were sent by a MEC Application
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.2.5",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Set Headers    {"Authorization":"${TOKEN}"}
+    
+    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdateError    .json
+    ${body}=    Get File    ${file}
+    Update MEC service liveness  ${URL_SERVICE_MEC_LIVENESS}  ${body}
+    Check HTTP Response Status Code Is    400
+    
+
+TC_MEC_MEC011_SRV_MSL_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error when 
+    ...    a request for an URI that cannot be mapped to a valid 
+    ...    resource URI is sent by a MEC Application
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.12",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.2.5",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ServiceLivenessUpdateError    .json
+    ${body}=    Get File    ${file}
+    Update MEC service liveness  ${NOT_EXISTING_URL_SERVICE_MEC_LIVENESS}  ${body}
+    Check HTTP Response Status Code Is    404
+    
+*** Keywords ***
+Create new service
+    [Arguments]    ${content}    ${appInstanceId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST      ${SCHEMA_APP_SAQ}://${HOST_APP_SAQ}:${PORT_APP_SAQ}/${apiRoot_APP_SAQ}${apiName_APP_SAQ}/${apiVersion_APP_SAQ}/applications/${appInstanceId}/services    ${body}
+    Log      ${SCHEMA_APP_SAQ}://${HOST_APP_SAQ}:${PORT_APP_SAQ}/${apiRoot_APP_SAQ}${apiName_APP_SAQ}/${apiVersion_APP_SAQ}/applications/${appInstanceId}/services
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable     ${LIVENESS_URI}     ${response['body']['_links']['liveness']['href']}   
+    Set Suite Variable     ${SERVICE_NAME}     ${response['body']['serName']}   
+    
+
+
+Remove individual service
+    [Arguments]    ${appInstanceId}    ${serviceName} 
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Type":"*/*"}
+    DELETE    ${SCHEMA_APP_SAQ}://${HOST_APP_SAQ}:${PORT_APP_SAQ}/${apiRoot_APP_SAQ}${apiName_APP_SAQ}/${apiVersion_APP_SAQ}/applications/${appInstanceId}/services/${serviceName}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+    
+Individual MEC service liveness
+    [Arguments]    ${URL_MEC_SERVICE_LIVENESS}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Type":"*/*"}
+    Get     ${URL_MEC_SERVICE_LIVENESS}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Update MEC service liveness
+    [Arguments]    ${URL_MEC_SERVICE_LIVENESS}  ${body}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Type":"application/json"}
+    Patch     ${URL_MEC_SERVICE_LIVENESS}   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}  
+    
\ No newline at end of file
diff --git a/MEC011/SRV/LIV/README.md b/MEC011/SRV/MLS/README.md
similarity index 100%
rename from MEC011/SRV/LIV/README.md
rename to MEC011/SRV/MLS/README.md
diff --git a/MEC011/SRV/MLS/environment/variables.txt b/MEC011/SRV/MLS/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..be8a1680c5d951c34e2ef020da33a15bd53169c1
--- /dev/null
+++ b/MEC011/SRV/MLS/environment/variables.txt
@@ -0,0 +1,25 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                   http
+${HOST}                     127.0.0.1
+${PORT}                     8081
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+
+# Specific variables
+${URL_SERVICE_MEC_LIVENESS} 	/link/to/individual/mecServiceLiveness
+${NOT_EXISTING_URL_SERVICE_MEC_LIVENESS} 	/not_existing_link/to/individual/mecServiceLiveness
+${URL_SERVICE_MEC_LIVENESS}             link/to/individual/mecServiceLiveness
+${LIVENESS_URI}                         link/to/individual/mecServiceLiveness
+
+
+#Variables for test setups and teardowns
+${SCHEMA_APP_SAQ}        http
+${HOST_APP_SAQ}          127.0.0.1
+${PORT_APP_SAQ}          8082
+${apiRoot_APP_SAQ}   
+${apiName_APP_SAQ}       mec_service_mgmt
+${apiVersion_APP_SAQ}    v1
+${APP_INSTANCE_ID}       appInstanceId
+${SERVICE_NAME}
diff --git a/MEC011/SRV/MLS/environment/variables_sandbox.txt b/MEC011/SRV/MLS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0c4a2a2b1495fd2e36218fe0e9c466dd1bd78c10
--- /dev/null
+++ b/MEC011/SRV/MLS/environment/variables_sandbox.txt
@@ -0,0 +1,35 @@
+*** Variables ***
+#### Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+${APP_INSTANCE_ID}                      b8ae165a-a1e3-4d6c-86d9-52c59ad314b6
+
+${SCHEMA_APP_SAQ}        https
+${HOST_APP_SAQ}          try-mec.etsi.org
+${PORT_APP_SAQ}          443
+${apiRoot_APP_SAQ}   	sbxjbxjt4s/mep1/
+${apiName_APP_SAQ}      mec_service_mgmt
+${apiVersion_APP_SAQ}    v1
+${APP_INSTANCE_ID}       appInstanceId
+${SERVICE_NAME}
+
+####
+
+# Specific variables
+${URL_SERVICE_MEC_LIVENESS} 	/link/to/individual/mecServiceLiveness
+${NOT_EXISTING_URL_SERVICE_MEC_LIVENESS} 	/not_existing_link/to/individual/mecServiceLiveness
+
+
+#Variables for test setups and teardowns
+#${HOST_APP_SAQ}          127.0.0.1
+#${PORT_APP_SAQ}          8082
+#${apiRoot_APP_SAQ}   
+#${apiName_APP_SAQ}       mec_service_mgmt
+#${apiVersion_APP_SAQ}    v1
+#${APP_INSTANCE_ID}       appInstanceId
+#${SERVICE_NAME}
diff --git a/MEC011/SRV/MLS/jsons/ServiceInfo.json b/MEC011/SRV/MLS/jsons/ServiceInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..135d02e1363315076733256a4e143affdece0f2c
--- /dev/null
+++ b/MEC011/SRV/MLS/jsons/ServiceInfo.json
@@ -0,0 +1,8 @@
+{
+	"serName": "serviceName",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"transportId": "transportId",
+	"livenessInterval":10
+}
\ No newline at end of file
diff --git a/MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json b/MEC011/SRV/MLS/jsons/ServiceLivenessUpdate.json
similarity index 100%
rename from MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json
rename to MEC011/SRV/MLS/jsons/ServiceLivenessUpdate.json
diff --git a/MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json b/MEC011/SRV/MLS/jsons/ServiceLivenessUpdateError.json
similarity index 100%
rename from MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json
rename to MEC011/SRV/MLS/jsons/ServiceLivenessUpdateError.json
diff --git a/MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json b/MEC011/SRV/MLS/schemas/ServiceLivenessInfo.schema.json
similarity index 100%
rename from MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json
rename to MEC011/SRV/MLS/schemas/ServiceLivenessInfo.schema.json
diff --git a/MEC013/SRV/UETRACKSUB/README.md b/MEC011/SRV/REGAPPS/README.md
similarity index 100%
rename from MEC013/SRV/UETRACKSUB/README.md
rename to MEC011/SRV/REGAPPS/README.md
diff --git a/MEC011/SRV/REGAPPS/RegApps.robot b/MEC011/SRV/REGAPPS/RegApps.robot
new file mode 100644
index 0000000000000000000000000000000000000000..f6fcace4ee30e0faf9e6aff48313bf103c13674a
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/RegApps.robot
@@ -0,0 +1,306 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating Registration applications (REGAPPS) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    environment/variables.txt
+#Resource    environment/variables_sandbox.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+
+Default Tags    TC_MEC_SRV_REGAPPS
+
+
+
+*** Test Cases ***
+TC_MEC_MEC011_SRV_REGAPPS_001_OK_01
+    [Documentation]
+    ...    Check that the IUT acknowledges the registration 
+    ...    by a MEC Application to the MEC platform
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfo 
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Header Contains    Location 
+    Check HTTP Response Body Json Schema Is    AppInfo
+    Check Response Contains    ${response['body']}    appName    ${APP_NAME}
+    [TearDown]   Delete MEC application instance profile    ${response['body']['appInstanceId']}
+    
+
+TC_MEC_MEC011_SRV_REGAPPS_001_OK_02
+    [Documentation]
+    ...    Check that the IUT acknowledges the registration 
+    ...    by a MEC Application to the MEC platform
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfo2 
+    ${APP_INSTANCE_ID_REQ}    Get value entry from JSON file   AppInfo2     appInstanceId
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Header Contains    Location
+    Check HTTP Response Body Json Schema Is    AppInfo
+    Check Response Contains    ${response['body']}    appName    ${APP_NAME}
+    Check Response Contains    ${response['body']}    appInstanceId    ${APP_INSTANCE_ID_REQ}
+   [TearDown]   Delete MEC application instance profile    ${APP_INSTANCE_ID_REQ}
+    
+
+    
+TC_MEC_MEC011_SRV_REGAPPS_001_OK_03
+    [Documentation]
+    ...    Check that the IUT acknowledges the registration 
+    ...    by a MEC Application to the MEC platform
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfo3 
+    ${APP_INSTANCE_ID_REQ}    Get value entry from JSON file   AppInfo3     appInstanceId
+    ${APPD_NAME_REQ}    Get value entry from JSON file   AppInfo3     appName
+    ${APPD_ID_REQ}    Get value entry from JSON file   AppInfo3     appDId
+    
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Header Contains    Location
+    Check HTTP Response Body Json Schema Is    AppInfo
+    Check Response Contains    ${response['body']}    appName    ${APP_NAME}
+    Check Response Contains    ${response['body']}    appInstanceId    ${APP_INSTANCE_ID_REQ}
+    Check Response Contains    ${response['body']}    appDId    ${APPD_ID_REQ}
+    [TearDown]   Delete MEC application instance profile    ${APP_INSTANCE_ID_REQ}
+  
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_01
+    [Documentation]
+    ...    Check that the IUT responds with an error message when the IUT received a registration with
+    ...    missing fields from a MEC Application instantiated by the MEC platform
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR1 
+    Check HTTP Response Status Code Is    400
+    
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_02
+    [Documentation]
+    ...    Check that the IUT responds with an error message 
+    ...    when the IUT received by a MEC Application registration with missing endpoint
+    ...
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR2 
+    Check HTTP Response Status Code Is    400
+    
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_03
+    [Documentation]
+    ...    Check that the IUT responds with an error message when the IUT received by a 
+    ...    MEC Application registration with unexpected appServiceRequired
+    ...    
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR3 
+    Check HTTP Response Status Code Is    400
+    
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_04
+    [Documentation]
+    ...    Check that the IUT responds with an error message when the IUT received by a 
+    ...    MEC Application registration with unexpected appServiceRequired
+    ...    
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR4
+    Check HTTP Response Status Code Is    400
+
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_05
+    [Documentation]
+    ...    Check that the IUT responds with an error message when the IUT received by a 
+    ...    MEC Application registration with unexpected appFeatureRequired
+    ...    
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR5
+    Check HTTP Response Status Code Is    400
+
+
+TC_MEC_MEC011_SRV_REGAPPS_001_BR_06
+    [Documentation]
+    ...    Check that the IUT responds with an error message when the IUT received by a 
+    ...    MEC Application registration with unexpected appFeatureOptional
+    ...    
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.1.2.6"
+    ...               "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a new MEC application instance profile   AppInfoBR6
+    Check HTTP Response Status Code Is    400
+    
+
+
+TC_MEC_MEC011_SRV_REGAPPS_002_OK
+    [Documentation]
+    ...    Check that the IUT responds with the AppInfo description
+    ...     when queried by a MEC Application
+    ...    
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.1.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.1"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile   AppInfo 
+    Set Suite Variable  ${APP_INSTANCE_ID}    ${response['body']['appInstanceId']} 
+    Get MEC application instance profile   ${APP_INSTANCE_ID} 
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    AppInfo
+    Check Response Contains    ${response['body']}    appInstanceId    ${APP_INSTANCE_ID}
+    [TearDown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+
+TC_MEC_MEC011_SRV_REGAPPS_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when it receives a request for returning an AppInfo with a wrong ID
+    ...    
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.1.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.1"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Delete MEC application instance profile   ${NOT_EXISTING_APP_INSTANCE_ID}
+    Get MEC application instance profile   ${NOT_EXISTING_APP_INSTANCE_ID}
+    Check HTTP Response Status Code Is    404
+        
+            
+
+TC_MEC_MEC011_SRV_REGAPPS_003_OK
+    [Documentation]
+    ...    Check that the IUT responds with 204 No Content 
+    ...    when queried to update MEC Application registration
+    ...
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.1.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.2"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile   AppInfo 
+    Set Suite Variable  ${APP_INSTANCE_ID}    ${response['body']['appInstanceId']} 
+    Update MEC application registration  ${APP_INSTANCE_ID}    AppInfoUpdate
+    Check HTTP Response Status Code Is    204
+    [TearDown]   Delete MEC application instance profile   ${APP_INSTANCE_ID}
+    
+
+
+TC_MEC_MEC011_SRV_REGAPPS_003_NF
+    [Documentation]
+    ...    Check that the IUT responds with 204 No Content 
+    ...    when queried to update MEC Application registration
+    ...
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 7.2.14.3.2
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Delete MEC application instance profile   ${NOT_EXISTING_APP_INSTANCE_ID}
+    Update MEC application registration  ${NOT_EXISTING_APP_INSTANCE_ID}    AppInfoUpdate
+    Check HTTP Response Status Code Is    404
+
+
+
+TC_MEC_MEC011_SRV_REGAPPS_004_OK
+    [Documentation]
+    ...    Check that the IUT responds with 204 No Content
+    ...    when queried to delete an existing MEC Application registration
+    ...    
+    ...    Reference        "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...                     "ETSI GS MEC 011 3.2.1, clause 7.1.2.6",
+    ...                     "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.5"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a new MEC application instance profile   AppInfo 
+    Set Suite Variable  ${APP_INSTANCE_ID}    ${response['body']['appInstanceId']} 
+    Delete MEC application instance profile   ${APP_INSTANCE_ID}
+    Check HTTP Response Status Code Is    204
+    
+
+
+TC_MEC_MEC011_SRV_REGAPPS_004_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error when queried to 
+    ...    delete an unknown MEC Application registration
+    ...    
+    ...    Reference        "ETSI GS MEC 011 3.2.1, clause 5.2.13",
+    ...                     "ETSI GS MEC 011 3.2.1, clause 7.1.2.6",
+    ...                     "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.5"
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Delete MEC application instance profile   ${NOT_EXISTING_APP_INSTANCE_ID}
+    Delete MEC application instance profile   ${NOT_EXISTING_APP_INSTANCE_ID}
+    Check HTTP Response Status Code Is    404
+    
+
+
+
+*** Keywords ***
+Create a new MEC application instance profile
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/registrations    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get MEC application instance profile
+    [Arguments]    ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+
+
+Update MEC application registration
+    [Arguments]    ${app_instance_id}    ${content}  
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/registrations/${app_instance_id}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Delete MEC application instance profile
+    [Arguments]    ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
\ No newline at end of file
diff --git a/MEC011/SRV/LIV/environment/variables.txt b/MEC011/SRV/REGAPPS/environment/variables.txt
similarity index 55%
rename from MEC011/SRV/LIV/environment/variables.txt
rename to MEC011/SRV/REGAPPS/environment/variables.txt
index e711cbdb446f7e026c536de45acf8af281ae28fd..a8fd69d9f6f82ed07ee16b7b87edc28b798970f2 100644
--- a/MEC011/SRV/LIV/environment/variables.txt
+++ b/MEC011/SRV/REGAPPS/environment/variables.txt
@@ -2,13 +2,15 @@
 # Generic variables
 ${SCHEMA}                   http
 ${HOST}                     127.0.0.1
-${PORT}                     8081
+${PORT}                     8082
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_app_support
-${apiVersion}     v1
+${apiVersion}     v2
 
 # Specific variables
-${URL_SERVICE_MEC_LIVENESS} 	/link/to/individual/mecServiceLiveness
-${NOT_EXISING_URL_SERVICE_MEC_LIVENESS} 	/not_existing_link/to/individual/mecServiceLiveness
\ No newline at end of file
+${APP_NAME}                 		appName
+${APP_INSTANCE_ID}          		appInstanceId
+${NOT_EXISTING_APP_INSTANCE_ID} 	notExistingAppInstanceId
+${APPD_ID}                  		appDId
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/environment/variables_sandbox.txt b/MEC011/SRV/REGAPPS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7bc42f905fa2def04eae6bcf5e07754318ed7ac0
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/environment/variables_sandbox.txt
@@ -0,0 +1,17 @@
+*** Variables ***
+# Generic variables
+#### Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+${APP_INSTANCE_ID}                      f1e4d448-e277-496b-bf63-98391cfd20fb
+
+# Specific variables
+${APP_NAME}                 		appName
+#${APP_INSTANCE_ID}          		appInstanceId
+${NOT_EXISTING_APP_INSTANCE_ID} 	notExistingAppInstanceId
+${APPD_ID}                  		appDId
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfo.json b/MEC011/SRV/REGAPPS/jsons/AppInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfo.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfo2.json b/MEC011/SRV/REGAPPS/jsons/AppInfo2.json
new file mode 100644
index 0000000000000000000000000000000000000000..88f988df0f03e33eda1a28fe318e48b7ce0f425d
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfo2.json
@@ -0,0 +1,4 @@
+{
+  "appName": "sampleAppName",
+  "appInstanceId": "appInstanceId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfo3.json b/MEC011/SRV/REGAPPS/jsons/AppInfo3.json
new file mode 100644
index 0000000000000000000000000000000000000000..c6c461a7821530f3e8c90762edb813284cd7358d
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfo3.json
@@ -0,0 +1,5 @@
+{
+  "appName": "sampleAppName",
+  "appInstanceId": "appInstanceId",
+  "appDId": "appDId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR1.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e6098c262f8e09dae823f2afdb67d87535de223
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR1.json
@@ -0,0 +1,4 @@
+{
+  "appName": "appNameWithoutAppDId",
+  "appInstanceId": "appInstanceIdWithoutAppDId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR2.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR2.json
new file mode 100644
index 0000000000000000000000000000000000000000..ab43a52f699052592b5f61d4aa84f3a8bfb3be34
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR2.json
@@ -0,0 +1,5 @@
+{
+	"appName": "appNameWithoutAppDId",
+	"appInstanceId": "appInstanceIdWithoutAppDId",
+	"isInsByMec": false
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR3.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR3.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0b082058e8b59fa6b6096eb1d67fc62458d2fe0
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR3.json
@@ -0,0 +1,9 @@
+{
+	"appName": "appNameWithoutAppDId",
+	"appIappServiceRequirednstanceID": "appInstanceIdWithoutAppDId",
+	"appServiceRequired": [{
+		"serName": "serviceName",
+		"version": "0.1"
+	}]
+
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR4.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR4.json
new file mode 100644
index 0000000000000000000000000000000000000000..acefd4eedf18ab1809a056df8410d6846c5c7d5a
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR4.json
@@ -0,0 +1,9 @@
+{
+	"appName": "appNameWithoutAppDId",
+	"appIappServiceRequirednstanceID": "appInstanceIdWithoutAppDId",
+	"appServiceOptional": [{
+		"serName": "notExpectedAppServiceOptional",
+		"version": "0.1"
+	}]
+
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR5.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR5.json
new file mode 100644
index 0000000000000000000000000000000000000000..c93aa5d311d036ce1e1561e6896addab55882fad
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR5.json
@@ -0,0 +1,8 @@
+{
+	"appName": "appNameWithoutAppDId",
+	"appIappServiceRequirednstanceID": "appInstanceIdWithoutAppDId",
+	"appFeatureRequired": [{
+		"featureName": "featureName",
+		"version": "0.1"
+	}]
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoBR6.json b/MEC011/SRV/REGAPPS/jsons/AppInfoBR6.json
new file mode 100644
index 0000000000000000000000000000000000000000..1213d056524a54be1163556a70c5dc24e295a285
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoBR6.json
@@ -0,0 +1,8 @@
+{
+	"appName": "appNameWithoutAppDId",
+	"appIappServiceRequirednstanceID": "appInstanceIdWithoutAppDId",
+	"appFeatureOptional": [{
+		"featureName": "appFeatureOptinalName",
+		"version": "0.1"
+	}]
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/AppInfoUpdate.json b/MEC011/SRV/REGAPPS/jsons/AppInfoUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/AppInfoUpdate.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/jsons/ServiceInfo.json b/MEC011/SRV/REGAPPS/jsons/ServiceInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..1cc5adf0fdf9a457da473ac49f1422925478a5c0
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/jsons/ServiceInfo.json
@@ -0,0 +1,8 @@
+{
+	"serName": "serviceName",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"serInstanceId": "3F897E85-ABCD-FFFF-A957-FCF0CCE649FD",
+	"transportId": "transportId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/REGAPPS/schemas/AppInfo.schema.json b/MEC011/SRV/REGAPPS/schemas/AppInfo.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..8dd41cbd60d108ea8ed3e4e1e66fa8f682e5e201
--- /dev/null
+++ b/MEC011/SRV/REGAPPS/schemas/AppInfo.schema.json
@@ -0,0 +1,18 @@
+{
+	"$schema": "http://json-schema.org/draft-04/schema#",
+	"type": "object",
+	"properties": {
+	  "appName": {
+		"type": "string"
+	  },
+	  "appInstanceId": {
+		"type": "string"
+	  },
+	  "appDId": {
+		"type": "string"
+	  }
+	},
+	"required": [
+	  "appName"
+	]
+  }
\ No newline at end of file
diff --git a/MEC011/SRV/SAQ/PlatServices.robot b/MEC011/SRV/SAQ/PlatServices.robot
index 8843f5f07dbb1b7d19af83a49130970cc0ef9f24..afe9b9fcd014a6da6ee20304e7966a25c7ea1546 100644
--- a/MEC011/SRV/SAQ/PlatServices.robot
+++ b/MEC011/SRV/SAQ/PlatServices.robot
@@ -4,70 +4,102 @@ Documentation
 ...    A test suite for validating Service Availability Query (SAQ) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem  
 
 Default Tags    TC_MEC_SRV_SAQ
 
-
-
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_SAQ_001_OK
+TC_MEC_MEC011_SRV_SAQ_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of available MEC services
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.3.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.5",
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 8.1.2.2",
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 8.2.3.3.1"
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create new service   ServiceInfo    ${APP_INSTANCE_ID}
     Get list of available MEC services
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    ServiceInfoList
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${SERVICE_ID}
+    
 
-
-TP_MEC_MEC011_SRV_SAQ_001_BR
+TC_MEC_MEC011_SRV_SAQ_001_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.3.3.1
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.5",
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 8.1.2.2",
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 8.2.3.3.1"
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create new service   ServiceInfo    ${APP_INSTANCE_ID}
+    ${SER_NAME}    Get value entry from JSON file   ServiceInfo     serName
     Get list of available MEC services with parameters    instance_id    ${INVALID_VALUE}
     Check HTTP Response Status Code Is    400
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${SER_NAME}
 
 
-TP_MEC_MEC011_SRV_SAQ_002_OK
+TC_MEC_MEC011_SRV_SAQ_002_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific service
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.4.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList
-
+    ...    "ETSI GS MEC 011 3.2.1, clause 5.2.5",
+    ...    "ETSI GS MEC 011 3.2.1, clause 8.1.2.2",
+    ...    "ETSI GS MEC 011 3.2.1, clause 8.2.4.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get specific MEC service    ${SERVICE_ID}
+    [Setup]   Create new service   ServiceInfo    ${APP_INSTANCE_ID}
+    ${SER_NAME}    Get value entry from JSON file   ServiceInfo     serName
+    Get specific MEC service    ${response['body']['serInstanceId']}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    ServiceInfo
-    Check Response Contains    ${response['body']}    serInstanceId    ${SERVICE_ID}
-
+    Check Response Contains    ${response['body']}    serInstanceId     ${response['body']['serInstanceId']}
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${SER_NAME}
 
-TP_MEC_MEC011_SRV_SAQ_002_NF
+TC_MEC_MEC011_SRV_SAQ_002_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.4.3.1
-
+    ...    "ETSI GS MEC 011 3.2.1, clause 5.2.5",
+    ...    "ETSI GS MEC 011 3.2.1, clause 8.1.2.2",
+    ...    "ETSI GS MEC 011 3.2.1, clause 8.2.4.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [TearDown]   Remove individual service    ${APP_INSTANCE_ID}   ${NON_EXISTENT_SERVICE_ID}
     Get specific MEC service    ${NON_EXISTENT_SERVICE_ID}
     Check HTTP Response Status Code Is    404
 
 
 *** Keywords ***
+Create new service
+    [Arguments]    ${content}    ${appInstanceId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST      ${SCHEMA_APP_SAQ}://${HOST_APP_SAQ}:${PORT_APP_SAQ}/${apiRoot_APP_SAQ}${apiName_APP_SAQ}/${apiVersion_APP_SAQ}/applications/${appInstanceId}/services    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable     ${SERVICE_ID}     ${response['body']['serInstanceId']}   
+    
+Remove individual service
+    [Arguments]    ${appInstanceId}    ${serviceName} 
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Type":"*/*"}
+    DELETE    ${SCHEMA_APP_SAQ}://${HOST_APP_SAQ}:${PORT_APP_SAQ}/${apiRoot_APP_SAQ}${apiName_APP_SAQ}/${apiVersion_APP_SAQ}/applications/${appInstanceId}/services/${serviceName}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+
 Get list of available MEC services with parameters
     [Arguments]    ${key}=None    ${value}=None
     Set Headers    {"Accept":"application/json"}
@@ -81,7 +113,7 @@ Get list of available MEC services
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Type":"*/*"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/services
+    Get  ${apiRoot}/${apiName}/${apiVersion}/services
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
diff --git a/MEC011/SRV/SAQ/environment/variables.txt b/MEC011/SRV/SAQ/environment/variables.txt
index 36785814968ae94f817b57908470345a94ee8fc1..4c8c3bd83240edd89473db5b02a6f9f90990afca 100644
--- a/MEC011/SRV/SAQ/environment/variables.txt
+++ b/MEC011/SRV/SAQ/environment/variables.txt
@@ -2,24 +2,21 @@
 # Generic variables
 ${SCHEMA}                   http
 ${HOST}                     127.0.0.1
-${PORT}                     8081
+${PORT}                     8082
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_service_mgmt
 ${apiVersion}     v1
+${SCHEMA_APP_SAQ}        http
 
 # Specific variables
 ${INVALID_VALUE}                INVALID_VALUE
 ${SERVICE_ID}                   e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_EXISTENT_SERVICE_ID}          NON_EXISTENT_SERVICE_ID
+${SER_NAME}
 
-
-
-
-
-
-${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${APP_INSTANCE_ID}                  5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
 ${INSTANCE_ID}                      instance_id
 ${FAKE_INSTANCE_ID_VALUE}           5
 ${NON_EXISTENT_APP_INSTANCE_ID}     NON_ESISTENT_APP_INSTANCE_ID
@@ -38,4 +35,13 @@ ${INVALID_ETAG}                     INVALID_ETAG
 # ${callback_endpoint}    /amsi/subscriptions
 # ${callback_endpoint_error}    /subs_404
 # ${total_polling_time}   2 min
-# ${polling_interval}     10 sec
\ No newline at end of file
+# ${polling_interval}     10 sec
+
+#Variables for test setups and teardowns
+${HOST_APP_SAQ}          127.0.0.1
+${PORT_APP_SAQ}          8082
+${apiRoot_APP_SAQ}   
+${apiName_APP_SAQ}       mec_service_mgmt
+${apiVersion_APP_SAQ}    v1
+${APP_INSTANCE_ID}       appInstanceId
+${SERVICE_NAME}
\ No newline at end of file
diff --git a/MEC011/SRV/SAQ/environment/variables_sandbox.txt b/MEC011/SRV/SAQ/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..abd83b122a8add791bc58aaa3dd18ac57356224c
--- /dev/null
+++ b/MEC011/SRV/SAQ/environment/variables_sandbox.txt
@@ -0,0 +1,58 @@
+*** Variables ***
+#### Env variable< for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                    try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        /mec_service_mgmt
+${apiVersion}     v1
+${APP_INSTANCE_ID}                      b8ae165a-a1e3-4d6c-86d9-52c59ad314b6
+${SER_NAME}
+
+
+#Variables for test setups and teardowns
+${SCHEMA_APP_SAQ}        https
+${HOST_APP_SAQ}          try-mec.etsi.org
+${PORT_APP_SAQ}          443
+${apiRoot_APP_SAQ}   	 sbxjbxjt4s/mep1/
+${apiName_APP_SAQ}       mec_service_mgmt
+${apiVersion_APP_SAQ}    v1
+${SERVICE_NAME}
+####
+
+
+
+# Specific variables
+${INVALID_VALUE}                INVALID_VALUE
+${SERVICE_ID}                   e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_SERVICE_ID}          NON_EXISTENT_SERVICE_ID
+#${APP_INSTANCE_ID}                  5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${INSTANCE_ID}                      instance_id
+${FAKE_INSTANCE_ID_VALUE}           5
+${NON_EXISTENT_APP_INSTANCE_ID}     NON_ESISTENT_APP_INSTANCE_ID
+${INVALID_ETAG}                     INVALID_ETAG
+
+# ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
+# ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
+# ${NON_EXISTENT_SUBSCRIPTION_ID}     NON_EXISTENT_SUBSCRIPTION_ID
+# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}     NON_EXISTENT_APP_MOBILITY_SERVICE_ID
+
+# # Notifications variables
+# ${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
+
+# ${callback_port}    9091
+# ${callback_uri}    http://172.22.1.7:${callback_port}
+# ${callback_endpoint}    /amsi/subscriptions
+# ${callback_endpoint_error}    /subs_404
+# ${total_polling_time}   2 min
+# ${polling_interval}     10 sec
+
+#Variables for test setups and teardowns
+#${HOST_APP_SAQ}          127.0.0.1
+#${PORT_APP_SAQ}          8082
+#${apiRoot_APP_SAQ}   
+#${apiName_APP_SAQ}       mec_service_mgmt
+#${apiVersion_APP_SAQ}    v1
+#${APP_INSTANCE_ID}       appInstanceId
+#${SERVICE_NAME}
\ No newline at end of file
diff --git a/MEC011/SRV/SAQ/jsons/ServiceInfo.json b/MEC011/SRV/SAQ/jsons/ServiceInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..74c67709373109ccba28b36f857f5ce6e06de5e3
--- /dev/null
+++ b/MEC011/SRV/SAQ/jsons/ServiceInfo.json
@@ -0,0 +1,7 @@
+{
+	"serName": "serviceName",
+	"version": "0.1",
+	"state": "INACTIVE",
+	"serializer": "XML",
+	"transportId": "transportId"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot
index 1c9edc801fe7d4bee478275124d3bd74003c366e..405a2c26c186b52a2db38ce20231b54a018f78f4 100644
--- a/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot
+++ b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot
@@ -4,123 +4,180 @@ Documentation
 ...    A test suite for validating Service Subscriptions (SRVSUB) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
-
+Library     String
 Default Tags    TC_MEC_SRV_SRVSUB
 
 
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_SRVSUB_001_OK
+TC_MEC_MEC011_SRV_SRVSUB_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of subscriptions for notifications
     ...    on services availability when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/MecServiceMgmtApiSubscriptionLinkList
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.1"
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    
+    [Setup]  Create a new MEC application instance profile and create subscription  AppInfo   SerAvailabilityNotificationSubscription
     Get list of subscriptions    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    SubscriptionLinkList
+    [TearDown]   Remove subscription and Delete MEC application instance profile   ${SUB_ID}   ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC011_SRV_SRVSUB_001_NF
+TC_MEC_MEC011_SRV_SRVSUB_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.1
+    ...    Reference  "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...               "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.1"
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove MEC application   ${NON_EXISTENT_INSTANCE_ID}
     Get list of subscriptions    ${NON_EXISTENT_INSTANCE_ID}
     Check HTTP Response Status Code Is    404
 
-
-TP_MEC_MEC011_SRV_SRVSUB_002_OK
+TC_MEC_MEC011_SRV_SRVSUB_002_OK
     [Documentation]
     ...    Check that the IUT acknowledges the subscription by a MEC Application
     ...    to notifications on service availability events
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    
+    [Setup]  Create a new MEC application  AppInfo
     Create a new subscription    ${APP_INSTANCE_ID}    SerAvailabilityNotificationSubscription
+    ${APP_SRVSUB_NOTIF_CALLBACK_URI}    Get value entry from JSON file   SerAvailabilityNotificationSubscription   callbackReference  
+    ${SUB_TYPE}    Get value entry from JSON file   SerAvailabilityNotificationSubscription   subscriptionType  
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    SerAvailabilityNotificationSubscription
     Check HTTP Response Header Contains    Location
-    Check Response Contains    ${response['body']}    subscriptionType    SerAvailabilityNotificationSubscription
-    Check Response Contains    ${response['body']}    callbackReference    ${APP_SRVSUB_NOTIF_CALLBACK_URI}
-
+    Check Response Contains    ${response['body']}    subscriptionType    ${SUB_TYPE}
+    Check Response Contains    ${response['body']}    callbackReference   ${APP_SRVSUB_NOTIF_CALLBACK_URI}
+    [TearDown]  Remove MEC application   ${APP_INSTANCE_ID}
+    
 
-TP_MEC_MEC011_SRV_SRVSUB_002_BR
+TC_MEC_MEC011_SRV_SRVSUB_002_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.4
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.4"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application  AppInfo
     Create a new subscription    ${APP_INSTANCE_ID}    SerAvailabilityNotificationSubscriptionError
     Check HTTP Response Status Code Is    400
+    [TearDown]  Remove MEC application   ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC011_SRV_SRVSUB_003_OK
+TC_MEC_MEC011_SRV_SRVSUB_003_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific subscription
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get individual subscription    ${APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
+    [Setup]  Create a new MEC application instance profile and create subscription  AppInfo   SerAvailabilityNotificationSubscription
+    Get individual subscription    ${APP_INSTANCE_ID}    ${SUB_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    SerAvailabilityNotificationSubscription
     Check Response Contains    ${response['body']}    subscriptionType    SerAvailabilityNotificationSubscription
+    [TearDown]   Remove subscription and Delete MEC application instance profile   ${SUB_ID}   ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC011_SRV_SRVSUB_003_NF
+    
+
+TC_MEC_MEC011_SRV_SRVSUB_003_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.1
-
+    ...    Reference   "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.1"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application  AppInfo
     Get individual subscription    ${APP_INSTANCE_ID}    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
+   [TearDown]  Remove MEC application    ${APP_INSTANCE_ID} 
 
-
-TP_MEC_MEC011_SRV_SRVSUB_004_OK
+TC_MEC_MEC011_SRV_SRVSUB_004_OK
     [Documentation]
     ...    Check that the IUT acknowledges the unsubscribe from service availability event notifications
     ...    when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.5
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.5"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${APP_INSTANCE_ID}    ${SUBSCRIPTION_ID}
+    [Setup]  Create a new MEC application instance profile and create subscription  AppInfo   SerAvailabilityNotificationSubscription   
+    Remove subscription    ${APP_INSTANCE_ID}    ${SUB_ID}
     Check HTTP Response Status Code Is    204
 
 
-TP_MEC_MEC011_SRV_SRVSUB_004_NF
+TC_MEC_MEC011_SRV_SRVSUB_004_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.5
-
+    ...    Reference    "ETSI GS MEC 011 3.2.1, clause 5.2.6",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.1.3",
+    ...                 "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.5"
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [TearDown]  Remove MEC application    ${NON_EXISTENT_INSTANCE_ID} 
     Remove subscription    ${NON_EXISTENT_INSTANCE_ID}    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
 
 *** Keywords ***
+Create a new MEC application
+    [Arguments]    ${reg_app_content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${reg_app_content}    .json
+    ${body}=    Get File    ${file}
+    POST     ${SCHEMA_REGAPP}://${HOST_REGAPP}:${PORT_REGAPP}${apiRoot_REGAPP}/${apiName_REGAPP}/${apiVersion_REGAPP}/registrations    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${APP_INSTANCE_ID}    ${output['body']['appInstanceId']}    
+
+Remove MEC application
+    [Arguments]  ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE     ${SCHEMA_REGAPP}://${HOST_REGAPP}:${PORT_REGAPP}${apiRoot_REGAPP}/${apiName_REGAPP}/${apiVersion_REGAPP}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Create a new MEC application instance profile and create subscription
+    [Arguments]    ${reg_app_content}   ${sub_content}
+    Create a new MEC application  ${reg_app_content}
+    Create a new subscription  ${APP_INSTANCE_ID}   ${sub_content}
+    ${elements} =  Split String    ${response['body']['_links']['self']['href']}     /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    
+
+Remove subscription and Delete MEC application instance profile
+    [Arguments]    ${subscription_id}  ${app_instance_id}
+    Remove subscription   ${appInstanceId}   ${subscription_id}   
+    Remove MEC application  ${app_instance_id}
+    
+
 Get list of subscriptions    
     [Arguments]    ${appInstanceId}
     Set Headers    {"Accept":"application/json"}
diff --git a/MEC011/SRV/SRVSUB/environment/variables.txt b/MEC011/SRV/SRVSUB/environment/variables.txt
index 0e357a5e786a2c028d819cc5b9e6db72f2100899..270fc5facdea009550206de22b705474b84348b4 100644
--- a/MEC011/SRV/SRVSUB/environment/variables.txt
+++ b/MEC011/SRV/SRVSUB/environment/variables.txt
@@ -2,7 +2,7 @@
 # Generic variables
 ${SCHEMA}                   http
 ${HOST}                     127.0.0.1
-${PORT}                     8081
+${PORT}                     8082
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
@@ -15,3 +15,12 @@ ${NON_EXISTENT_INSTANCE_ID}              NON_EXISTENT_INSTANCE_ID
 ${APP_SRVSUB_NOTIF_CALLBACK_URI}         http://127.0.0.1/subscribe
 ${SUBSCRIPTION_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_EXISTENT_SUBSCRIPTION_ID}          NON_EXISTENT_SUBSCRIPTION_ID
+
+
+##Registration app setup test case variables
+${HOST_REGAPP}                     127.0.0.1
+${PORT_REGAPP}                     8081
+${apiRoot_REGAPP}
+${apiName_REGAPP}          mec_app_support
+${apiVersion_REGAPP}       v2
+
diff --git a/MEC011/SRV/SRVSUB/environment/variables_sandbox.txt b/MEC011/SRV/SRVSUB/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..18a05db0e9926d76bf84e699df82242538299106
--- /dev/null
+++ b/MEC011/SRV/SRVSUB/environment/variables_sandbox.txt
@@ -0,0 +1,38 @@
+*** Variables ***
+# Generic variables
+#### Env variable< for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                    try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        /mec_service_mgmt
+${apiVersion}     v1
+${APP_INSTANCE_ID}                     298b2c0c-7efa-45d3-8b47-8ab3c009b845
+
+${SCHEMA_REGAPP}           http
+${HOST_REGAPP}                     try-mec.etsi.org
+${PORT_REGAPP}					443
+${apiRoot_REGAPP}		   /sbxjbxjt4s/mep1
+${apiName_REGAPP}          mec_app_support
+${apiVersion_REGAPP}       v1
+####
+
+# Specific variables
+${SUB_ID}
+#${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
+${NON_EXISTENT_INSTANCE_ID}              NON_EXISTENT_INSTANCE_ID
+${APP_SRVSUB_NOTIF_CALLBACK_URI}         http://127.0.0.1/subscribe
+${SUBSCRIPTION_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_SUBSCRIPTION_ID}          NON_EXISTENT_SUBSCRIPTION_ID
+
+
+
+
+##Registration app setup test case variables
+#${HOST_REGAPP}                     127.0.0.1
+#${PORT_REGAPP}                     8081
+#${apiRoot_REGAPP}
+#${apiName_REGAPP}          mec_app_support
+#${apiVersion_REGAPP}       v2
+
diff --git a/MEC011/SRV/SRVSUB/jsons/AppInfo.json b/MEC011/SRV/SRVSUB/jsons/AppInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/SRVSUB/jsons/AppInfo.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json b/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json
index 7e7e1567d672490a0306b47ad7758b52081667f4..8b315cbb510bbe2947dd51273947e1ae115effc0 100644
--- a/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json
+++ b/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json
@@ -1,5 +1,5 @@
 {
-  "subscription": "SerAvailabilityNotificationSubscription",
+  "subscriptionType": "INVALID_SUBSCRIPTION",
   "callbackReference": "http://127.0.0.1/subscribe",
   "_links": {
     "self": {
diff --git a/MEC011/SRV/TIME/PlatTiming.robot b/MEC011/SRV/TIME/PlatTiming.robot
index e93be9e9bbc261bfde74b56a6858a7aac291ea95..f18f776342e25bf11ebc294c5a0e8d664d05c107 100644
--- a/MEC011/SRV/TIME/PlatTiming.robot
+++ b/MEC011/SRV/TIME/PlatTiming.robot
@@ -4,7 +4,8 @@ Documentation
 ...    A test suite for validating Timing capabilities (TIME) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+#Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
 
@@ -14,27 +15,26 @@ Default Tags    TC_MEC_SRV_TIME
 
 *** Test Cases ***
 
-TP_MEC_MEC011_SRV_TIME_001_OK
+TC_MEC_MEC011_SRV_TIME_001_OK
     [Documentation]
     ...    Check that the IUT responds with timing capabilities
     ...    when queried by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.5.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TimingCaps
-
+    ...     ETSI GS MEC 011 3.2.1, clause 5.2.10.3,
+    ...     ETSI GS MEC 011 3.2.1, clause 7.1.2.4,
+    ...     ETSI GS MEC 011 3.2.1, clause 7.2.5.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get time capabilities
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    TimingCaps
 
 
-TP_MEC_MEC011_SRV_TIME_002_OK
+TC_MEC_MEC011_SRV_TIME_002_OK
     [Documentation]
     ...    Check that the IUT responds with current time
     ...    when queried by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.6.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/CurrentTime
+    ...    ETSI GS MEC 011 3.2.1, clause 5.2.10.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.5,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get current time
@@ -47,6 +47,7 @@ Get time capabilities
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/timing/timing_caps
+    Log    ${apiRoot}/${apiName}/${apiVersion}/timing/timing_caps
     Set Headers    {"Content-Type":"*/*"}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
diff --git a/MEC011/SRV/TIME/environment/variables.txt b/MEC011/SRV/TIME/environment/variables.txt
index 3ae69ae51ee7dc3489e726b5608c5bec284534d5..c4f8c75738e6207c7c8e5b497f4256b6199a9114 100644
--- a/MEC011/SRV/TIME/environment/variables.txt
+++ b/MEC011/SRV/TIME/environment/variables.txt
@@ -7,7 +7,7 @@ ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_app_support
-${apiVersion}     v1
+${apiVersion}     v2
 
 
 
diff --git a/MEC011/SRV/TIME/environment/variables_sandbox.txt b/MEC011/SRV/TIME/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ecef6ea5076a7fe3b347751850a6c64e1255e07
--- /dev/null
+++ b/MEC011/SRV/TIME/environment/variables_sandbox.txt
@@ -0,0 +1,24 @@
+*** Variables ***
+#### Env variable< for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                    try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+####
+
+
+# ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
+# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}     NON_EXISTENT_APP_MOBILITY_SERVICE_ID
+
+# # Notifications variables
+# ${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
+
+# ${callback_port}    9091
+# ${callback_uri}    http://172.22.1.7:${callback_port}
+# ${callback_endpoint}    /amsi/subscriptions
+# ${callback_endpoint_error}    /subs_404
+# ${total_polling_time}   2 min
+# ${polling_interval}     10 sec
\ No newline at end of file
diff --git a/MEC011/SRV/TRAF/PlatTrafficRules.robot b/MEC011/SRV/TRAF/PlatTrafficRules.robot
index 1bf634bc7aab8ed9197f95e5e8118b085fe34ed7..af694633d011b860b18910f9ec4967e9a977f449 100644
--- a/MEC011/SRV/TRAF/PlatTrafficRules.robot
+++ b/MEC011/SRV/TRAF/PlatTrafficRules.robot
@@ -4,117 +4,172 @@ Documentation
 ...    A test suite for validating Traffic rules (TRAF) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+#Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
 
 Default Tags    TC_MEC_SRV_TRAF
 
-
+ 
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_TRAF_001_OK
+TC_MEC_MEC011_SRV_TRAF_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of available traffic rules
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.7.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
+    ...    Reference
+    ...    ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.7.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
     Get list of traffic rules    ${APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    TrafficRuleList
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC011_SRV_TRAF_001_NF
+TC_MEC_MEC011_SRV_TRAF_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.1
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.7.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Remove MEC application  ${NON_EXISTENT_APP_INSTANCE_ID}
     Get list of traffic rules    ${NON_EXISTENT_APP_INSTANCE_ID}
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC011_SRV_TRAF_002_OK
+TC_MEC_MEC011_SRV_TRAF_002_OK
     [Documentation]
     ...    Check that the IUT responds with the information on a specific traffic rule
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
-
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
     Get individual traffic rule    ${APP_INSTANCE_ID}    ${TRAFFIC_RULE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    TrafficRule
     Check Response Contains    ${response['body']}    trafficRuleId    ${TRAFFIC_RULE_ID}
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
+
+
+TC_MEC_MEC011_SRV_TRAF_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error when a request for an unknown traffic rule
+    ...     when queried by a MEC Application
+    ...
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Get individual traffic rule    ${APP_INSTANCE_ID}    ${NON_EXISTENT_TRAFFIC_RULE_ID}
+    Check HTTP Response Status Code Is    404
+    
 
 
-TP_MEC_MEC011_SRV_TRAF_003_OK
+TC_MEC_MEC011_SRV_TRAF_003_OK
     [Documentation]
     ...    Check that the IUT updates a specific traffic rule
     ...    when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
-
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
+    ${TRAFFIC_RULE_ID}    Get value entry from JSON file      TrafficRuleUpdate      trafficRuleId
     Update a traffic rule    ${APP_INSTANCE_ID}    ${TRAFFIC_RULE_ID}    TrafficRuleUpdate
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    TrafficRule
     Check Response Contains    ${response['body']}    trafficRuleId    ${TRAFFIC_RULE_ID} 
     Check Response Contains    ${response['body']}    action    DROP
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
 
-
-TP_MEC_MEC011_SRV_TRAF_003_BR
+TC_MEC_MEC011_SRV_TRAF_003_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
-
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
     Update a traffic rule    ${APP_INSTANCE_ID}    ${TRAFFIC_RULE_ID}    TrafficRuleUpdateError
     Check HTTP Response Status Code Is    400
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC011_SRV_TRAF_003_NF
+TC_MEC_MEC011_SRV_TRAF_003_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
-
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7",
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2",
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
     Update a traffic rule    ${APP_INSTANCE_ID}    ${NON_EXISTENT_TRAFFIC_RULE_ID}    TrafficRuleUpdate
     Check HTTP Response Status Code Is    404
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
+
 
-## Commented as ETag is not mandatory
-#TP_MEC_MEC011_SRV_TRAF_003_PF
-#    [Documentation]
-#    ...    Check that the IUT responds with an error when
-#    ...    a request sent by a MEC Application doesn't comply with a required condition
-#    ...
-#    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2
-#    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule
-#
-#   [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-#    Update a traffic rule with invalid etag   ${APP_INSTANCE_ID}    ${TRAFFIC_RULE_ID}    TrafficRuleUpdate
-#    Check HTTP Response Status Code Is    412
+TC_MEC_MEC011_SRV_TRAF_003_PF
+    [Documentation]
+    ...    Check that the IUT responds with an error when
+    ...    a request sent by a MEC Application doesn't comply with a required condition
+    ...
+    ...    Reference  ETSI GS MEC 011 3.2.1, clause 5.2.7,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.1.2.2,
+    ...    ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a new MEC application   AppInfo
+    Update a traffic rule with invalid etag   ${APP_INSTANCE_ID}    ${TRAFFIC_RULE_ID}    TrafficRuleUpdate
+    Check HTTP Response Status Code Is    412
+    [TearDown]  Remove MEC application  ${APP_INSTANCE_ID}
 
 *** Keywords ***
+Create a new MEC application
+    [Arguments]    ${reg_app_content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${reg_app_content}    .json
+    ${body}=    Get File    ${file}
+    POST     ${SCHEMA_REGAPP}://${HOST_REGAPP}:${PORT_REGAPP}${apiRoot_REGAPP}/${apiName_REGAPP}/${apiVersion_REGAPP}/registrations    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${APP_INSTANCE_ID}    ${output['body']['appInstanceId']}    
+
+Remove MEC application
+    [Arguments]  ${app_instance_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    #Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE     ${SCHEMA_REGAPP}://${HOST_REGAPP}:${PORT_REGAPP}${apiRoot_REGAPP}/${apiName_REGAPP}/${apiVersion_REGAPP}/registrations/${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
 Get list of traffic rules   
     [Arguments]     ${appInstanceId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Type":"*/*"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules
+    Log    ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
diff --git a/MEC011/SRV/TRAF/environment/variables.txt b/MEC011/SRV/TRAF/environment/variables.txt
index 74db1cc81e0af0957b8ee80fecbea7f24636b718..b9bf9eee20ae78a4abeb3cd6a272e0c4abd2fabf 100644
--- a/MEC011/SRV/TRAF/environment/variables.txt
+++ b/MEC011/SRV/TRAF/environment/variables.txt
@@ -7,11 +7,19 @@ ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        mec_app_support
-${apiVersion}     v1
+${apiVersion}     v2
 
 # Specific variables
 ${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
-${NON_EXISTENT_APP_INSTANCE_ID}          NON_ESISTENT_APP_INSTANCE_ID
+${NON_EXISTENT_APP_INSTANCE_ID}          NON_EXISTENT_APP_INSTANCE_ID
 ${TRAFFIC_RULE_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
 ${NON_EXISTENT_TRAFFIC_RULE_ID}          NON_EXISTENT_TRAFFIC_RULE_ID
 ${INVALID_ETAG}                          INVALID_ETAG
+
+##Registration App variables
+${SCHEMA_REGAPP}                   http
+${HOST_REGAPP}                     127.0.0.1
+${PORT_REGAPP}                     8082
+${apiRoot_REGAPP}
+${apiName_REGAPP}                  mec_app_support
+${apiVersion_REGAPP}               v2
\ No newline at end of file
diff --git a/MEC011/SRV/TRAF/environment/variables_sandbox.txt b/MEC011/SRV/TRAF/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..967600d01dff357ff20d2709f10ddc1b44819563
--- /dev/null
+++ b/MEC011/SRV/TRAF/environment/variables_sandbox.txt
@@ -0,0 +1,27 @@
+*** Variables ***
+# Generic variables
+#### Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                    try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_app_support
+${apiVersion}     v1
+${APP_INSTANCE_ID}       298b2c0c-7efa-45d3-8b47-8ab3c009b845
+####
+
+##Registration App variables
+${SCHEMA_REGAPP}                   https
+${HOST_REGAPP}                     try-mec.etsi.org
+${PORT_REGAPP}                     443
+${apiRoot_REGAPP}                  /sbxjbxjt4s/mep1 
+${apiName_REGAPP}                  mec_app_support
+${apiVersion_REGAPP}               v1
+
+# Specific variables
+${NON_EXISTENT_APP_INSTANCE_ID}          NON_EXISTENT_APP_INSTANCE_ID
+${TRAFFIC_RULE_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_TRAFFIC_RULE_ID}          NON_EXISTENT_TRAFFIC_RULE_ID
+${INVALID_ETAG}                          INVALID_ETAG
+
diff --git a/MEC011/SRV/TRAF/jsons/AppInfo.json b/MEC011/SRV/TRAF/jsons/AppInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..31c905302a44648da418bf3bcf78f81f8f38eda4
--- /dev/null
+++ b/MEC011/SRV/TRAF/jsons/AppInfo.json
@@ -0,0 +1,3 @@
+{
+  "appName": "sampleAppName"
+}
\ No newline at end of file
diff --git a/MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json
index ed2c8b6f4ce82ee4e4fab7d55ce7e9e58b6070f9..c7fd6b1dcd26a6ae5dd40a918603face990dde9c 100644
--- a/MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json
+++ b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json
@@ -1,5 +1,5 @@
 {
-  "trafficRuleId": "traffic_rule_01",
+  "trafficRuleId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3",
   "filterType": "FLOW",
   "priority": 1,
   "trafficFilter": [
@@ -87,11 +87,7 @@
         "UDP"
       ],
       "token": [
-        "occaecat",
-        "reprehenderit esse",
-        "enim ipsum Lorem",
-        "nulla ad sed deserunt",
-        "irure"
+        "token"
       ],
       "srcTunnelAddress": [
         "159.20.1.1",
diff --git a/MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json
index a4af6381a61f2b877caf94db5c425bb1183220ff..cd5b6337c1d85b2d247232961dc19988c453284d 100644
--- a/MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json
+++ b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json
@@ -1,35 +1,33 @@
 {
-  "trafficRuleId": "elit sint id occaecat mollit",
+  "trafficRuleId": "traffic_rule_01",
   "filterType": "FLOW",
   "priority": 1,
   "trafficFilter": [
     {
       "srcAddress": [
-        "magna tempor do",
-        "nisi reprehenderit veniam adipisicing",
-        "sed ut tempor voluptate esse",
-        "consectetur magna culpa"
+        "192.168.1.1",
+        "192.168.2.1",
+        "192.168.3.1"
       ],
       "dstAddress": [
-        "dolor dolore",
-        "Excepteur ut aliquip"
+        "192.168.1.2",
+        "192.168.2.2",
+        "192.168.3.2"
       ],
       "srcPort": [
-        "et anim",
-        "nulla in minim ea cillum",
-        "ipsum sunt quis qui Ut"
+        "30078",
+        "1029",
+        "30089"
       ],
       "dstPort": [
-        "dolore tempor ut voluptate dolor",
-        "consequat incididunt ad sed mollit",
-        "in amet aute non"
+        "30099",
+        "30098",
+        "30097"
       ],
       "protocol": [
-        "mollit Duis",
-        "irure ullamco Lorem ex tempor",
-        "ullamco in dolor incididunt",
-        "elit ea ad",
-        "magna officia et ad"
+        "TCP",
+        "HTTP",
+        "UDP"
       ],
       "token": [
         "occaecat",
@@ -39,84 +37,81 @@
         "irure"
       ],
       "srcTunnelAddress": [
-        "ut exercitation",
-        "ea",
-        "magna et"
+        "159.10.1.1",
+        "159.10.2.1",
+        "159.10.3.1"
       ],
       "tgtTunnelAddress": [
-        "et anim aliqua",
-        "dolor in sint consectetur culpa",
-        "eu",
-        "deserunt qui mollit sint commodo"
+        "159.10.1.2",
+        "159.10.2.2",
+        "159.10.3.2"
       ],
       "srcTunnelPort": [
-        "dolore laborum",
-        "consequat",
-        "nostrud nulla",
-        "est id dolore commodo aliquip",
-        "qui dolor id dolore"
+        "5566",
+        "5567",
+        "5568"
       ],
       "dstTunnelPort": [
-        "Ut nostrud Excepteur",
-        "dolor culpa",
-        "in",
-        "incididunt"
-      ],
-      "qCI": 22902321,
-      "dSCP": -86264428,
-      "tC": -40655175
+        "5576",
+        "5578",
+        "5579"
+      ],
+      "qCI": 1,
+      "dSCP": 0,
+      "tC": 1
     },
     {
       "srcAddress": [
-        "incididunt sit qui",
-        "laborum dolore voluptate exercitation",
-        "ut"
+        "192.157.1.1",
+        "192.157.2.1",
+        "192.157.3.1"
       ],
       "dstAddress": [
-        "pariatur sunt",
-        "id elit aute ut",
-        "voluptate",
-        "irure laboris consectetur ullamco id",
-        "reprehenderit laborum"
+        "192.157.1.2",
+        "192.157.2.2",
+        "192.157.3.2"
       ],
       "srcPort": [
-        "nisi tempor ut in",
-        "culpa sed"
+        "30078",
+        "1029",
+        "30089"
       ],
       "dstPort": [
-        "amet laboris exercitation voluptate veniam"
+        "30099",
+        "30098",
+        "30097"
       ],
       "protocol": [
-        "incididunt sint Lorem qui"
+        "TCP",
+        "HTTP",
+        "UDP"
       ],
       "token": [
-        "sunt",
-        "veniam labore quis dolor",
-        "Ut ex esse deserunt"
+        "token"
       ],
       "srcTunnelAddress": [
-        "cillum irure incididunt adipisicing",
-        "Duis officia laboris ea dolor"
+        "159.20.1.1",
+        "159.20.2.1",
+        "159.20.3.1"
       ],
       "tgtTunnelAddress": [
-        "eu deserunt et",
-        "cupidatat proident Excepteur nisi",
-        "consequat fugiat Lorem adipisicing"
+        "159.20.1.2",
+        "159.20.2.2",
+        "159.20.3.2"
       ],
       "srcTunnelPort": [
-        "velit Lorem cillum ex",
-        "consectetur in ad",
-        "officia est adipisicing irure aute"
+        "5566",
+        "5567",
+        "5568"
       ],
       "dstTunnelPort": [
-        "proident velit Lorem labore do",
-        "magna sit sed ea",
-        "cillum",
-        "nostrud"
-      ],
-      "qCI": -69609374,
-      "dSCP": 46042141,
-      "tC": 67400065
+        "5576",
+        "5578",
+        "5579"
+      ],
+      "qCI": 2,
+      "dSCP": 0,
+      "tC": 4
     }
   ],
   "action": "UNKNOWN_VALUE",
@@ -125,10 +120,10 @@
     "interfaceType": "TUNNEL",
     "tunnelInfo": {
       "tunnelType": "GTP_U",
-      "tunnelDstAddress": "est",
-      "tunnelSrcAddress": "culpa nostrud amet labore"
+      "tunnelDstAddress": "169.54.61.15",
+      "tunnelSrcAddress": "169.54.61.31"
     },
-    "srcMacAddress": "esse",
-    "dstMacAddress": "ut nostrud voluptate ipsum cupidatat"
+    "srcMacAddress": "fc:3f:2b:42:dc:ba",
+    "dstMacAddress": "02:42:2c:58:6a:7d"
   }
 }
\ No newline at end of file
diff --git a/MEC011/SRV/TRANS/PlatTransport.robot b/MEC011/SRV/TRANS/PlatTransport.robot
index 6dd57cc963be378cac8309ef2c8b7d24824ec7c9..e2917b5e1ae2baa578472f3c512e52f22a199ff6 100644
--- a/MEC011/SRV/TRANS/PlatTransport.robot
+++ b/MEC011/SRV/TRANS/PlatTransport.robot
@@ -4,7 +4,7 @@ Documentation
 ...    A test suite for validating Transport (TRANS) operations.
 
 Resource    ../../../GenericKeywords.robot
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
 
@@ -12,14 +12,14 @@ Default Tags    TC_MEC_SRV_TRANS
 
 
 *** Test Cases ***
-
-TP_MEC_MEC011_SRV_TRANS_001_OK
+TC_MEC_MEC011_SRV_TRANS_001_OK
     [Documentation]
     ...    Check that the IUT responds with a list of available transports
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 011 V2.2.1, clause 8.2.5.3.1
-    ...    OpenAPI    https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/TransportInfo
+    ...   Reference ETSI GS MEC 011 3.2.1, clause 5.2.9,
+    ...   ETSI GS MEC 011 3.2.1, clause 8.1.2.3,
+    ...   ETSI GS MEC 011 3.2.1, clause 8.2.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get list of available transports
diff --git a/MEC011/SRV/TRANS/environment/variables_sandbox.txt b/MEC011/SRV/TRANS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..977484d0bd1b5b622abfebee83810e18d2782c16
--- /dev/null
+++ b/MEC011/SRV/TRANS/environment/variables_sandbox.txt
@@ -0,0 +1,17 @@
+*** Variables ***
+#### Env variable for the ETSI MEC Sandbox
+${SCHEMA}                   https
+${HOST}                    try-mec.etsi.org
+${PORT}                     443
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_provided_by_sandbox>/mep1 
+${apiName}        mec_service_mgmt
+${apiVersion}     v1
+${APP_INSTANCE_ID}                      f1e4d448-e277-496b-bf63-98391cfd20fb
+####
+
+# Specific variables
+${NON_EXISTENT_APP_INSTANCE_ID}          NON_ESISTENT_APP_INSTANCE_ID
+${TRAFFIC_RULE_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_TRAFFIC_RULE_ID}          NON_EXISTENT_TRAFFIC_RULE_ID
+
diff --git a/MEC012/SRV/RNIS/RnisAllSubscriptions.robot b/MEC012/SRV/RNIS/RnisAllSubscriptions.robot
new file mode 100644
index 0000000000000000000000000000000000000000..11d78f7222a10666a408181876701eb6d52a33e7
--- /dev/null
+++ b/MEC012/SRV/RNIS/RnisAllSubscriptions.robot
@@ -0,0 +1,115 @@
+''[Documentation]   robot --outputdir ../../outputs ./RnisSpecificSubscription_BI_BO.robot
+...    Test Suite to validate RNIS/Subscription (RNIS) operations.
+
+*** Settings ***
+Resource    environment/variables.txt
+Resource    ../../../pics.txt
+Resource    ../../../GenericKeywords.robot
+Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
+Library     String
+
+
+*** Test Cases ***
+TC_MEC_MEC012_SRV_RNIS_011_BR
+    [Documentation]   Request RNIS subscription list using bad parameters
+    ...  Check that the RNIS service responds with an error when it receives a request to 
+    ...  get all RNIS subscriptions with a wrong subscription type
+    ...  ETSI GS MEC 012 2.2.1, clause 7.6.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList
+    [Setup]   Send a request for a subscription and get sub ID     CellChangeSubscription
+    Get RNIS subscription list with wrong parameter
+    Check HTTP Response Status Code Is    400
+    [TearDown]    Delete subscription   ${SUB_ID} 
+    
+
+TC_MEC_MEC012_SRV_RNIS_012_BR
+    [Documentation]   Create RNIS subscription using bad parameters
+    ...  Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format
+    ...  ETSI GS MEC 012 2.2.1, clause 7.6.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    Send a request for a subscription     CellChangeSubscriptionBr
+    Check HTTP Response Status Code Is    400
+
+TC_MEC_MEC012_SRV_RNIS_011_OK
+    [Documentation]   Request RNIS subscription list
+    ...  Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested
+    ...  ETSI GS MEC 012 2.2.1, clause 7.6.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList
+    [Setup]   Send a request for a subscription and get sub ID     CellChangeSubscription
+    Get RNIS subscription list with filter   CellChangeSubscription
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   SubscriptionLinkList
+    ${not_expected_syb_type}   Set Variable   ${FALSE}
+    FOR    ${subscription}    IN    @{response['body']['_links']['subscription']}
+    IF    '''${subscription}[subscriptionType]''' != '''CellChangeSubscription'''
+        ${not_expected_syb_type}    Set Variable   ${TRUE}
+      END
+    END 
+    Should Be Equal   ${not_expected_syb_type}      ${FALSE}
+    [TearDown]    Delete subscription   ${SUB_ID} 
+
+TC_MEC_MEC012_SRV_RNIS_012_OK
+    [Documentation]   Create RNIS subscription
+    ...  Check that the RNIS service creates a new RNIS subscription
+    ...  ETSI GS MEC 012 2.2.1, clause 7.6.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    Send a request for a subscription and get sub ID     CellChangeSubscription
+    ${sub_type}   Get value entry from JSON file    CellChangeSubscription    subscriptionType
+    ${callback_ref}   Get value entry from JSON file    CellChangeSubscription    callbackReference
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is   CellChangeSubscription
+    Should Be Equal   ${response['body']['subscriptionType']}      ${sub_type}
+    Should Be Equal   ${response['body']['callbackReference']}      ${callback_ref}
+    [TearDown]    Delete subscription   ${SUB_ID} 
+
+*** Keywords ***
+Get RNIS subscription list with filter
+    [Arguments]    ${sub_type_filter}
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${sub_type_filter}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get RNIS subscription list with wrong parameter
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=wrongSubscriptionType
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send a request for a subscription and get sub ID
+    [Arguments]    ${content}
+    Send a request for a subscription      ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]} 
+
+
+Send a request for a subscription    
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Log     ${apiRoot}/${apiName}/${apiVersion}/subscriptions
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+Delete subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+
diff --git a/MEC012/SRV/RNIS/RnisNotifications.robot b/MEC012/SRV/RNIS/RnisNotifications.robot
index 6e5613d05d26da905e775c511ea14f28025ac952..d02296eb219101d0d6a0bf28610feef5ab78a8c9 100644
--- a/MEC012/SRV/RNIS/RnisNotifications.robot
+++ b/MEC012/SRV/RNIS/RnisNotifications.robot
@@ -2,204 +2,161 @@
 ...    Test Suite to validate RNIS/Notification (RNIS) operations.
 
 *** Settings ***
-Resource    environment/variables.txt
-Resource    ../../../pics.txt
-Resource    ../../../GenericKeywords.robot
-Resource    resources/RadioNetworkInformationAPI.robot
-Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library     BuiltIn
-Library     OperatingSystem
-Library     MockServerLibrary
-Suite Setup    Create Mock Session    ${callback_uri}:${callback_port}
-Test Teardown  Reset All Requests
+Resource     environment/variables.txt
+Resource     ../../../pics.txt
+Resource     ../../../GenericKeywords.robot
+Library      libraries/Server.py
+Library      REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
+Library      BuiltIn
+Library      OperatingSystem
+Library      Collections
+Library      String
+
 
 *** Test Cases ***
 TC_MEC_MEC012_SRV_RNIS_001_OK
-    [Documentation]   Cell change notification
-    ...  Check that the RNIS service sends an RNIS notification about cell change if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.2
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about cell change if the RNIS 
+    ...  service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.2
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/CellChangeNotification.schema.json
-    Log  Creating mock request and response to handle Cell change notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=&{appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
+    [Setup]  Send a request for a subscription    CellChangeSubscription
+    Spawn Notification Server     CellChangeNotification    
+    Validate Json   CellChangeNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
 
 TC_MEC_MEC012_SRV_RNIS_002_OK
-    [Documentation]   RAB Establishment notification
-    ...  Check that the RNIS service sends an RNIS notification about RAB establishment if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.3
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about RAB establishment 
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.3
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/RabEstNotification.schema.json
-    Log  Creating mock request and response to handle RAB establishment notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/rab_est    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
+    [Setup]  Send a request for a subscription    RabEstSubscriptionRequest
+    Spawn Notification Server     RabEstNotification
+    Validate Json   RabEstNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+    
 
 
 TC_MEC_MEC012_SRV_RNIS_003_OK
-    [Documentation]   RAB modification notification
-    ...  Check that the RNIS service sends an RNIS notification about RAB modification if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about RAB modification 
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.4
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/RabModNotification.schema.json
-    Log  Creating mock request and response to handle RAB modification notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/rab_mod    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
-
+    [Setup]  Send a request for a subscription    RabModSubscription
+    Spawn Notification Server    RabModNotification
+    Validate Json   RabModNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+    
+    
 TC_MEC_MEC012_SRV_RNIS_004_OK
-    [Documentation]   RAB release notification
-    ...  Check that the RNIS service sends an RNIS notification about RAB release if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.5
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about RAB release 
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.5
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/RabRelNotification.schema.json
-    Log  Creating mock request and response to handle RAB release notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/rab_rel    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
+    [Setup]  Send a request for a subscription    RabRelSubscription
+    Spawn Notification Server    RabRelNotification
+    Validate Json   RabRelNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+        
 
 TC_MEC_MEC012_SRV_RNIS_005_OK
-    [Documentation]   UE measurement notification
-    ...  Check that the RNIS service sends an RNIS notification about UE measurement report  if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.6
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about UE measurement report 
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.6
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/MeasRepUeNotification.schema.json
-    Log  Creating mock request and response to handle UE measurement notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/MeasRepUeNotification    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
+    [Setup]  Send a request for a subscription    MeasRepUeSubscription
+    Spawn Notification Server        MeasRepUeNotification
+    Validate Json   MeasRepUeNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
 
 TC_MEC_MEC012_SRV_RNIS_006_OK
-    [Documentation]   UE timing advance notification
-    ...  Check that the RNIS service sends an RNIS notification about UE timing advance if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.7
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about UE timing advance  
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.7
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/MeasTaSubscription.schema.json
-    Log  Creating mock request and response to handle UE timing advance notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/MeasTaNotification    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
+    [Setup]  Send a request for a subscription    MeasTaSubscription
+    Spawn Notification Server      MeasTaNotification
+    Validate Json   MeasTaNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+    
 
 TC_MEC_MEC012_SRV_RNIS_007_OK
-    [Documentation]   UE carrier aggregation reconfiguration notification
-    ...  Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.8
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration   
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.8
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/CaReconfSubscription.schema.json
-    Log  Creating mock request and response to handle UE carrier aggregation reconfiguration notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/CaReconfSubscription    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
+    [Setup]  Send a request for a subscription    CaReconfSubscription
+    Spawn Notification Server     CaReconfNotification
+    Validate Json   CaReconfNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
 
 
 TC_MEC_MEC012_SRV_RNIS_008_OK
-    [Documentation]   S1-U bearer notification
-    ...  Check that the RNIS service sends an RNIS notification about S1-U bearer if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.9
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/S1BearerSubscription.schema.json
-    Log  Creating mock request and response to handle S1-U bearer notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/S1BearerSubscription    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=${appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
-
-TC_MEC_SRV_RNIS_009_OK
-    [Documentation]   TC_MEC_SRV_RNIS_009_OK
-    ...  Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report if the RNIS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 012 2.1.1, clause 6.4.11
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about S1-U bearer   
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.10
     Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    ${json}=    Get File    schemas/NrMeasRepUeSubscription.schema.json
-    Log  Creating mock request and response to handle UE Measurement notification
-    &{req}=    Create Mock Request Matcher    POST    ${callback_endpoint}/meas_rep_ue    body_type="JSON_SCHEMA"    body=${json}
-    &{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    &{rsp}=    Create Mock Response    headers=&{appjson_hdrs}    status_code=204
-    Create Mock Expectation    ${req}    ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation    ${req}
-    Log  Cleaning the endpoint
-    Clear Requests    ${callback_endpoint}
-
-
-# TC_MEC_SRV_RNIS_010_OK
-    # [Documentation]   TC_MEC_SRV_RNIS_010_OK
-    # ...  Check that the RNIS service sends an RNIS notification on subscription expiration if the RNIS service has an associated subscription and the event is generated
-    # ...  ETSI GS MEC 012 2.0.4, clause 6.4.9
-    # ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
-    # Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
-    # ${json}=    Get File    schemas/RadioNetworkInformationAPI.schema.json
-    # Log  Creating mock request and response to handle UE Measurement notification
-    # &{req}=    Create Mock Request Matcher    POST    ${callback_uri}${callback_endpoint}    body_type="JSON_SCHEMA"    body=${json}
-    #&{appjson_hdrs}=    Create Dictionary    Content-type=application/json
-    # &{rsp}=    Create Mock Response    &{appjson_hdrs}    status_code=204
-    # Create Mock Expectation    ${req}    ${rsp}
-    # Wait Until Keyword Succeeds    ${total_polling_time}    ${polling_interval}    Verify Mock Expectation    ${req}
-    # Log  Verifying results
-    # Verify Mock Expectation    ${req}
-    # Log  Cleaning the endpoint
-    # Clear Requests    ${callback_endpoint}
+    [Setup]  Send a request for a subscription    S1BearerSubscription
+    Spawn Notification Server       S1BearerNotification
+    Validate Json   S1BearerNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+
 
+TC_MEC_MEC012_SRV_RNIS_009_OK
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report
+    ...  if the RNIS service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.11
+    Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
+    [Setup]  Send a request for a subscription    NrMeasRepUeSubscription
+    Spawn Notification Server     NrMeasRepUeNotification
+    Validate Json   NrMeasRepUeNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+
+TC_MEC_MEC012_SRV_RNIS_010_OK
+    [Documentation]   
+    ...  Check that the RNIS service sends an RNIS notification about cell change if the RNIS 
+    ...  service has an associated subscription and the event is generated
+    ...  ETSI GS MEC 012 2.2.1, clause 6.4.2
+    Should Be True    ${PIC_RNIS_NOTIFICATIONS} == 1
+    [Setup]  Send a request for a subscription    CellChangeSubscriptionRequestWithExpiration
+    Spawn Notification Server       ExpiryNotification
+    Validate Json   ExpiryNotification.schema.json    ${payload_notification}
+    [TearDown]   Delete subscription   ${SUB_ID} 
+    
+    
+*** Keywords ***
+Send a request for a subscription    
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[4]} 
+
+
+Delete subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    Set Suite Variable    ${payload_notification}    ${output}
diff --git a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot b/MEC012/SRV/RNIS/RnisQuery.robot
similarity index 56%
rename from MEC012/SRV/RNIS/RnisQuery_BI_BO.robot
rename to MEC012/SRV/RNIS/RnisQuery.robot
index 172fb0d14cd86bd7ff6b357b4b06325697876462..4ebe27f835428d719b3e5ea43fcfd438dc20268e 100644
--- a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot
+++ b/MEC012/SRV/RNIS/RnisQuery.robot
@@ -1,11 +1,10 @@
-''[Documentation]   robot --outputdir ../../outputs ./RnisQuery_BI_BO.robot
+''[Documentation]   robot --outputdir ../../outputs ./RnisQuery_BV.robot
 ...    Test Suite to validate RNIS/Subscription (RNIS) operations.
 
 *** Settings ***
 Resource    environment/variables.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
-Resource    resources/RadioNetworkInformationAPI.robot
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
 
 
@@ -13,28 +12,26 @@ Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_v
 *** Test Cases ***
 TC_MEC_MEC012_SRV_RNIS_016_BR
     [Documentation]   Request RabInfo info using wrong parameters
-    ...  Check that the RNIS service returns an error when the RAB information is requested with a malformatted message
-    ...  ETSI GS MEC 012 2.1.1, clause 7.3.3.1
+    ...  Check that the RNIS service returns an error when the RAB 
+    ...  information is requested with a malformatted message
+    ...  ETSI GS MEC 012 2.2.1, clause 7.3.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo
     Get RabInfo info using wrong parameters
     Check HTTP Response Status Code Is    400
-    Run Keyword If    ${PIC_PROBLEM_DETAILS_ON_4xx} == 1    Check ProblemDetails    400
 
 
 TC_MEC_MEC012_SRV_RNIS_016_NF
     [Documentation]   Request RabInfo info using non existing cell id
     ...  Check that the RNIS service returns an error when the RAB information for a not existing element is requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.3.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.3.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo
     Get RabInfo info using non existing cell id
-    Check HTTP Response Status Code Is    200
-    # TODO Check the returned list is empty    
-    # Run Keyword If    ${PIC_PROBLEM_DETAILS_ON_4xx} == 1    Check ProblemDetails    404
+    Check HTTP Response Status Code Is    404
 
 TC_MEC_MEC012_SRV_RNIS_017_BR
     [Documentation]   Request Plmn info using wrong parameters
     ...  Check that the RNIS service returns an error when the PLMN information is requested with a malformatted message
-    ...  ETSI GS MEC 012 2.1.1, clause 7.4.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.4.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo
     Get PLMN info using wrong parameters
     Check HTTP Response Status Code Is    400
@@ -44,39 +41,36 @@ TC_MEC_MEC012_SRV_RNIS_017_BR
 TC_MEC_MEC012_SRV_RNIS_017_NF
     [Documentation]   Request Plmn info using non existing application id
     ...  Check that the RNIS service returns an error when the PLMN information for a not existing element is requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.4.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.4.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo
-    Get PLMN info using non existing application id
-    Check HTTP Response Status Code Is    200
-    # TODO Check the returned list is empty    
-    # Run Keyword If    ${PIC_PROBLEM_DETAILS_ON_4xx} == 1    Check ProblemDetails    404
+    Get PLMN info using non existing app id
+    Check HTTP Response Status Code Is    404
 
 
 TC_MEC_MEC012_SRV_RNIS_018_BR
     [Documentation]   Request S1Bearer info using wrong parameters
     ...  Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
     Get S1Bearer info using wrong parameters
     Check HTTP Response Status Code Is    400
-    Run Keyword If    ${PIC_PROBLEM_DETAILS_ON_4xx} == 1    Check ProblemDetails    400
+    
 
 
 TC_MEC_MEC012_SRV_RNIS_018_NF
     [Documentation]   Request S1Bearer info using non existing cell id
     ...  Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
     Get S1Bearer info using non existing cell id
-    Check HTTP Response Status Code Is    200
-    # TODO Check the returned list is empty    
-    #Run Keyword If    ${PIC_PROBLEM_DETAILS_ON_4xx} == 1    Check ProblemDetails    404
+    Check HTTP Response Status Code Is    404
 
 
+    
 TC_MEC_MEC012_SRV_RNIS_019_BR
     [Documentation]   Request L2Meas info using wrong parameters
     ...  Check that the RNIS service returns an error when the L2 measurements information is requested with a malformatted message
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5a.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5a.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
     Get L2Meas info using wrong parameters
     Check HTTP Response Status Code Is    400
@@ -86,11 +80,56 @@ TC_MEC_MEC012_SRV_RNIS_019_BR
 TC_MEC_MEC012_SRV_RNIS_019_NF
     [Documentation]   Request L2Meas info using non existing cell id
     ...  Check that the RNIS service returns an error when the L2 measurements information for a not existing element is requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5a.3.1
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5a.3.1
     ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
     Get L2Meas info using non existing cell id
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC012_SRV_RNIS_016_OK
+    [Documentation]   Request RabInfo info
+    ...  Check that the RNIS service returns the RAB information when requested
+    ...  ETSI GS MEC 012 2.2.1, clause 7.3.3.1
+    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo
+    Get RabInfo info
     Check HTTP Response Status Code Is    200
-    # TODO Check the returned list is empty    
+    Check HTTP Response Body Json Schema Is   RabInfo
+    Check RabInfo    ${response['body']}
+
+
+
+TC_MEC_MEC012_SRV_RNIS_017_OK
+    [Documentation]   Request Plmn info
+    ...  Check that the RNIS service returns the PLMN information when requested
+    ...  ETSI GS MEC 012 2.2.1, clause 7.4.3.1
+    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo
+    Get PLMN info
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   PlmnInfos
+    Check PlmnInfo    ${response['body'][0]}
+
+
+TC_MEC_MEC012_SRV_RNIS_018_OK
+    [Documentation]   Request S1Bearer info
+    ...  Check that the RNIS service returns the S1 bearer information
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5.3.1
+    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
+    Get S1Bearer info
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   S1BearerInfo
+    Check S1BearerInfo    ${response['body']}
+
+
+TC_MEC_MEC012_SRV_RNIS_019_OK
+        [Documentation]   Request L2Meas info
+    ...  Check that the RNIS service returns the L2 measurements information
+    ...  ETSI GS MEC 012 2.2.1, clause 7.5a.3.1
+    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas
+    Get Layer2Meas Info
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   L2Meas
+    Check L2MeasInfo    ${response['body']}
+
 
 *** Keywords ***
 Get RabInfo info using wrong parameters
@@ -99,7 +138,7 @@ Get RabInfo info using wrong parameters
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/rab_info?c_id=${C_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/rab_info?cId=${CELL_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -120,18 +159,18 @@ Get Plmn info using wrong parameters
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_id=${APP_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?cId=${NOT_EXISTENT_CELL_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 
-Get Plmn info using non existing application id
+Get Plmn info using non existing app id
     Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${NOT_EXISTENT_APP_INS_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?appInstanceId=${NOT_EXISTENT_APP_INS_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -142,7 +181,7 @@ Get S1Bearer info using wrong parameters
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?c_id=${C_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cId=${CELL_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -153,7 +192,7 @@ Get S1Bearer info using non existing cell id
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${NOT_EXISTENT_CELL_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?appInstanceId=${NOT_EXISTENT_APP_INS_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -164,7 +203,7 @@ Get L2Meas info using wrong parameters
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?c_id=${C_ID}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?c_id=${CELL_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -178,3 +217,73 @@ Get L2Meas info using non existing cell id
     Get    ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${NOT_EXISTENT_CELL_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
+
+
+
+Get RabInfo info
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${CELL_ID}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get Plmn info
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${APP_INS_ID}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get S1Bearer info
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${CELL_ID}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get Layer2Meas Info
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${CELL_ID}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Check RabInfo
+    [Arguments]    ${received_value}
+    log    ${received_value}
+    Should Not Be Empty    ${received_value['requestId']}
+    Run Keyword If    'cellUserInfo' in ${received_value}    Should Be Equal As Strings    ${received_value['cellUserInfo'][0]['ecgi']['cellId']}    ${CELL_ID}
+
+Check PlmnInfo
+    [Arguments]    ${received_value}
+    log    ${received_value}
+    Should Be Equal As Strings   ${received_value['appInstanceId']}    ${APP_INS_ID}
+    Should Not Be Empty    ${received_value['plmn'][0]['mcc']}    
+    Should Not Be Empty    ${received_value['plmn'][0]['mnc']}    
+
+
+Check S1BearerInfo
+    [Arguments]    ${received_value}
+    log    ${received_value}
+    Should Be Equal As Strings    ${received_value['s1UeInfo'][0]['ecgi'][0]['cellId']}    ${CELL_ID}
+    
+Check L2MeasInfo
+    [Arguments]    ${received_value}
+    log    ${received_value}
+    Should Be Equal As Strings    ${received_value['cellInfo'][0]['ecgi'][0]['cellId']}    ${CELL_ID}
+    #Should Be Equal As Strings    ${received_value['cellInfo'][0]['ecgi']['cellId']}    ${CELL_ID}
diff --git a/MEC012/SRV/RNIS/RnisQuery_BV.robot b/MEC012/SRV/RNIS/RnisQuery_BV.robot
deleted file mode 100644
index 17722be12f668bf3f22f84486b13a64d71ebb362..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/RnisQuery_BV.robot
+++ /dev/null
@@ -1,100 +0,0 @@
-''[Documentation]   robot --outputdir ../../outputs ./RnisQuery_BV.robot
-...    Test Suite to validate RNIS/Subscription (RNIS) operations.
-
-*** Settings ***
-Resource    environment/variables.txt
-Resource    ../../../pics.txt
-Resource    ../../../GenericKeywords.robot
-Resource    resources/RadioNetworkInformationAPI.robot
-Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-
-
-
-*** Test Cases ***
-TC_MEC_MEC012_SRV_RNIS_016_OK
-    [Documentation]   Request RabInfo info
-    ...  Check that the RNIS service returns the RAB information when requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.3.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo
-    Get RabInfo info
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   RabInfo
-    Check RabInfo    ${response['body']}
-
-
-TC_MEC_MEC012_SRV_RNIS_017_OK
-    [Documentation]   Request Plmn info
-    ...  Check that the RNIS service returns the PLMN information when requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.4.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo
-    Get PLMN info
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   PlmnInfos
-    Check PlmnInfo    ${response['body'][0]}
-
-
-TC_MEC_MEC012_SRV_RNIS_018_OK
-    [Documentation]   Request S1Bearer info
-    ...  Check that the RNIS service returns the S1 bearer information
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
-    Get S1Bearer info
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   S1BearerInfos
-    #log    ${response['body']}
-    Check S1BearerInfo    ${response['body']}
-
-
-TC_MEC_MEC012_SRV_RNIS_019_OK
-        [Documentation]   Request L2Meas info
-    ...  Check that the RNIS service returns the L2 measurements information
-    ...  ETSI GS MEC 012 2.1.1, clause 7.5a.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas
-    Get Layer2Meas Info
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   L2Meas
-    Check L2MeasInfo    ${response['body']}
-
-
-*** Keywords ***
-Get RabInfo info
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${CELL_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-Get Plmn info
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${APP_INS_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Get S1Bearer info
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${CELL_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Get Layer2Meas Info
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${CELL_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/RnisSpecificSubscription.robot b/MEC012/SRV/RNIS/RnisSpecificSubscription.robot
new file mode 100644
index 0000000000000000000000000000000000000000..3b6ba712811e44c2e7f5718393f60410450e8007
--- /dev/null
+++ b/MEC012/SRV/RNIS/RnisSpecificSubscription.robot
@@ -0,0 +1,166 @@
+''[Documentation]   robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot
+...    Test Suite to validate RNIS/Subscription (RNIS) operations.
+
+*** Settings ***
+Library    OperatingSystem
+Resource    environment/variables.txt
+Resource    ../../../GenericKeywords.robot
+Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
+Library     String
+
+
+*** Test Cases ***
+TC_MEC_MEC012_SRV_RNIS_013_NF
+    [Documentation]    Get an Individual RNIS subscription
+    ...    Check that the RNIS service responds with error when a not existing 
+    ...    RNIS subscription is requested
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.1
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Delete Individual RNIS Subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Get Individual RNIS Subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Check HTTP Response Status Code Is    404
+
+
+
+TC_MEC_MEC012_SRV_RNIS_014_BR
+    [Documentation]    Update an Individual RNIS subscription
+    ...    Check that the RNIS service sends an error when it receives a malformed modify
+    ...    request for a RNIS subscription
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.2
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Post RNIS subscription request    CellChangeSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]} 
+    Update Individual RNIS Subscription  ${SUB_ID}    UpdateCellChangeSubscriptionRequestBr
+    Check HTTP Response Status Code Is    400
+    [TearDown]  Delete Individual RNIS Subscription    ${SUB_ID}
+
+
+TC_MEC_MEC012_SRV_RNIS_014_NF
+    [Documentation]    Update an Individual RNIS subscription
+    ...    Check that the RNIS service responds with error when a modification for a not existing RNIS subscription is requested
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.2
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Delete Individual RNIS Subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Update Individual RNIS Subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}    UpdateCellChangeSubscriptionRequestNf
+    Check HTTP Response Status Code Is    404
+    
+TC_MEC_MEC012_SRV_RNIS_015_NF
+    [Documentation]    Update an Individual RNIS subscription
+    ...   Check that the RNIS service responds with error when the deletion of a not existing RNIS subscription is requested
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.5
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Delete Individual RNIS Subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Delete Individual RNIS Subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Check HTTP Response Status Code Is    404
+    
+
+TC_MEC_MEC012_SRV_RNIS_013_OK
+    [Documentation]    Get an Individual RNIS subscription
+    ...    Check that the RNIS service sends a RNIS subscription when requested
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.1
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Post RNIS subscription request    CellChangeSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[-1]} 
+    Get Individual RNIS Subscription    ${SUB_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   CellChangeSubscription
+    ${sub_type}    Get value entry from JSON file    CellChangeSubscription    subscriptionType
+    ${callbackReference}    Get value entry from JSON file    CellChangeSubscription    callbackReference
+    Should be Equal   ${response['body']['subscriptionType']}     ${sub_type}
+    Should be Equal   ${response['body']['callbackReference']}    ${callbackReference}
+    [TearDown]  Delete Individual RNIS Subscription    ${SUB_ID}
+
+TC_MEC_MEC012_SRV_RNIS_014_OK
+    [Documentation]    Update an Individual RNIS subscription
+    ...    Check that the RNIS service modifies a RNIS subscription when requested
+    ...    ETSI GS MEC 012 2.2.1, clause 7.8.3.2
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Post RNIS subscription request    CellChangeSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[4]} 
+    Update Individual RNIS Subscription  ${SUB_ID}    UpdateCellChangeSubscriptionRequest
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   CellChangeSubscription
+    ${sub_type}    Get value entry from JSON file    UpdateCellChangeSubscriptionRequest    subscriptionType
+    ${callbackReference}    Get value entry from JSON file    UpdateCellChangeSubscriptionRequest    callbackReference
+    Should be Equal   ${response['body']['subscriptionType']}     ${sub_type}
+    Should be Equal   ${response['body']['callbackReference']}    ${callbackReference}
+    [TearDown]  Delete Individual RNIS Subscription    ${SUB_ID}
+     
+TC_MEC_MEC012_SRV_RNIS_015_OK
+    [Documentation]    Remove an Individual RNIS subscription
+    ...    Check that the RNIS service deletes a RNIS subscription when requested
+    ...    ETSI GS MEC 012 2.1.1, clause 7.8.3.5
+    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
+    [Setup]   Post RNIS subscription request    CellChangeSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[4]} 
+    Delete Individual RNIS Subscription    ${SUB_ID}
+    Check HTTP Response Status Code Is    204
+
+*** Keywords ***
+Get RNIS subscription list
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Post RNIS subscription request
+    [Arguments]    ${content}
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${json_file} =    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${json_file}
+    ${body}=    Replace String    ${body}    \${HREF}    ${HREF}
+    ${body}=    Replace String    ${body}    \${LINKS_SELF}    ${LINKS_SELF}
+    Post    ${apiRoot}/rni/${apiVersion}/subscriptions    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get Individual RNIS Subscription
+    [Arguments]    ${subscription_id}
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Get    ${apiRoot}/rni/${apiVersion}/subscriptions/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Update Individual RNIS Subscription
+    [Arguments]    ${subscription_id}   ${content}
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${json_file} =    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${json_file}
+    #${body}=    Replace String    ${body}    \${HREF}    ${HREF}
+    #${body}=    Replace String    ${body}    \${LINKS_SELF}    ${LINKS_SELF}
+    Put    ${apiRoot}/rni/${apiVersion}/subscriptions/${subscription_id}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Delete Individual RNIS Subscription
+    [Arguments]    ${subscription_id}
+    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    Delete    ${apiRoot}/rni/${apiVersion}/subscriptions/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot
deleted file mode 100644
index 0a05314ccfb956441e81f25289a97fe7c6bd4687..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot
+++ /dev/null
@@ -1,49 +0,0 @@
-''[Documentation]   robot --outputdir ../../outputs ./RnisSpecificSubscription_BI_BO.robot
-...    Test Suite to validate RNIS/Subscription (RNIS) operations.
-
-*** Settings ***
-Resource    environment/variables.txt
-Resource    ../../../pics.txt
-Resource    ../../../GenericKeywords.robot
-Resource    resources/RadioNetworkInformationAPI.robot
-Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-
-*** Test Cases ***
-TC_MEC_MEC012_SRV_RNIS_011_BR
-    [Documentation]   Request RNIS subscription list using bad parameters
-    ...  Check that the RNIS service responds with an error when it receives a request to get all RNIS subscriptions with a wrong subscription type
-    ...  ETSI GS MEC 012 2.1.1, clause 7.6.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList
-    Get RNIS subscription list with wrong parameter
-    Check HTTP Response Status Code Is    400
-    
-
-TC_MEC_MEC012_SRV_RNIS_012_BR
-    [Documentation]   Create RNIS subscription using bad parameters
-    ...  Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format
-    ...  ETSI GS MEC 012 2.1.1, clause 7.6.3.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Post RNIS subscription request    {"CellChangeSubscription": {"subscriptionType": "CelCangeSubscription", "callbackReference": "${HREF}", "_links": {"self": { "href": "${LINKS_SELF}" } }, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}}
-    Check HTTP Response Status Code Is    400
-
-*** Keywords ***
-Get RNIS subscription list with wrong parameter
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=wrongSubscriptionType
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Post RNIS subscription request
-    [Arguments]    ${content}
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Post    ${apiRoot}/rni/${apiVersion}/subscriptions    ${content}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot
deleted file mode 100644
index 44301fe702412252b15baed3cbcbb5998fd91aa6..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot
+++ /dev/null
@@ -1,127 +0,0 @@
-''[Documentation]   robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot
-...    Test Suite to validate RNIS/Subscription (RNIS) operations.
-
-*** Settings ***
-Library    OperatingSystem
-Resource    environment/variables.txt
-Resource    ../../../GenericKeywords.robot
-Resource    resources/RadioNetworkInformationAPI.robot
-Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library     String
-
-
-*** Test Cases ***
-TC_MEC_MEC012_SRV_RNIS_011_OK
-    [Documentation]   Request RNIS subscription list
-    ...  Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested
-    ...  ETSI GS MEC 012 2.1.1, clause 7.6.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList
-    Get RNIS subscription list
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   SubscriptionLinkList
-    # The following step is faulty in the design, thus it is commented. It is kept since
-    # it is required by the Test Purpose TP_MEC_SRV_RNIS_011_OK
-    # Check Subscription    ${response['body']}    ${SUBSCRIPTION_VALUE}
-
-
-TC_MEC_MEC012_SRV_RNIS_012_OK
-    [Documentation]   Create RNIS subscription
-    ...  Check that the RNIS service creates a new RNIS subscription
-    ...  ETSI GS MEC 012 2.1.1, clause 7.6.3.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Post RNIS subscription request    CellChangeSubscriptionRequest
-    Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is   CellChangeSubscription
-    Check CellChangeSubscription    ${response['body']}
-
-
-TC_MEC_MEC012_SRV_RNIS_013_OK
-    [Documentation]    Get an Individual RNIS subscription
-    ...    Check that the RNIS service sends a RNIS subscription when requested
-    ...    ETSI GS MEC 012 2.1.1, clause 7.8.3.1
-    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Get Individual RNIS Subscription
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   CellChangeSubscription
-
-
-TC_MEC_MEC012_SRV_RNIS_014_OK
-    [Documentation]    Update an Individual RNIS subscription
-    ...    Check that the RNIS service modifies a RNIS subscription when requested
-    ...    ETSI GS MEC 012 2.1.1, clause 7.8.3.2
-    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Update Individual RNIS Subscription
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   CellChangeSubscription
-    
-
-TC_MEC_MEC012_SRV_RNIS_015_OK
-    [Documentation]    Remove an Individual RNIS subscription
-    ...    Check that the RNIS service deletes a RNIS subscription when requested
-    ...    ETSI GS MEC 012 2.1.1, clause 7.8.3.5
-    ...    Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml
-    Delete Individual RNIS Subscription
-    Check HTTP Response Status Code Is    204
-
-*** Keywords ***
-Get RNIS subscription list
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Post RNIS subscription request
-    [Arguments]    ${content}
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    ${json_file} =    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${json_file}
-    ${body}=    Replace String    ${body}    \${HREF}    ${HREF}
-    ${body}=    Replace String    ${body}    \${LINKS_SELF}    ${LINKS_SELF}
-    Log    ${body}
-    Post    ${apiRoot}/rni/${apiVersion}/subscriptions    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Get Individual RNIS Subscription
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Update Individual RNIS Subscription
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    ${body}    Get File    jsons/UpdateCellChangeSubscriptionRequest.json
-    ${body}=    Replace String    ${body}    \${HREF}    ${HREF}
-    ${body}=    Replace String    ${body}    \${LINKS_SELF}    ${LINKS_SELF}
-    Log    ${body}
-    Put    ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID}    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Delete Individual RNIS Subscription
-    Should Be True    ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Delete    ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/environment/variables.txt b/MEC012/SRV/RNIS/environment/variables.txt
index 8853f8d96d4ec0422c3f0c1918695f8c0c17a717..e49404199e1183d923e0a7f517e15e6ed6b39acc 100644
--- a/MEC012/SRV/RNIS/environment/variables.txt
+++ b/MEC012/SRV/RNIS/environment/variables.txt
@@ -1,35 +1,30 @@
 *** Variables ***
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     my-rnis-example.com
-${MEC-APP_PORT}                     8080
-${SUBSCRIPTION_ID}                  7777
-${NON_EXISTENT_SUBSCRIPTION_ID}     6666
-${LINKS_SELF}                       http://example.com/exampleAPI/rni/v2/subscriptions
-${SUBSCRIPTION_HREF_VALUE}          cell_changed
-${SUBSCRIPTION_TYPE}                CELL_CHANGE
-${HREF}                             http://notify-me.com:80/notify
-${SUBSCRIPTION_VALUE}               {'href': 'http://notify-me.com:80/notify', 'subscriptionType': 'CELL_CHANGE'}
-${CELL_ID}                          6060606
-${C_ID}                             6060606
-${NOT_EXISTENT_CELL_ID}             0x8000099
-${APP_INS_ID}                       
-${APP_ID}                           10
-${NOT_EXISTENT_APP_INS_ID}          99
-${response}                         {}
-${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${MEC-APP_HOST}                     127.0.0.1
+${MEC-APP_PORT}                     8085
+${apiRoot}      
+${apiName}      rni
+${apiVersion}    v2
 
 
-${apiRoot}      /example
-${apiVersion}    v2
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${SUB_ID}
 
-${PIC_PROBLEM_DETAILS_ON_4xx}    0
 
-# Notifications variables
-${MOCK_SERVER_JAR}    ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
 
-${callback_port}                    80
-${callback_uri}                     http://notify-me.com
-${callback_endpoint}                /notify
-${callback_endpoint_error}          /subs_404
-${total_polling_time}               2 min
-${polling_interval}                 10 sec
+${PIC_RNIS_SPECIFIC_SUBSCRIPTION}    1
+${NON_EXISTENT_SUBSCRIPTION_ID}       123456789
+${APP_INS_ID}                 appInsId
+${NOT_EXISTENT_APP_INS_ID}    NOT_EXISTENT_APP_INS_ID
+${NOT_EXISTENT_CELL_ID}       0x8000099
+${CELL_ID}                    6060606
+${HREF}
+${LINKS_SELF}
+${PIC_PROBLEM_DETAILS_ON_4xx}     0
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/environment/variables_sandbox.txt b/MEC012/SRV/RNIS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..baa76a15463f0387567fd308851aaf6841adea5b
--- /dev/null
+++ b/MEC012/SRV/RNIS/environment/variables_sandbox.txt
@@ -0,0 +1,33 @@
+*** Variables ***
+####Env variable for the ETSI MEC Sandbox
+${MEC-APP_SCHEMA}                   https
+${MEC-APP_HOST}                     try-mec.etsi.org
+${MEC-APP_PORT}                     443
+#${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}		  /<id_returned_by_sandbox>/mep1 
+${apiName}        rni
+${apiVersion}     v2
+
+
+
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${SUB_ID}                           15
+
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
+
+
+${NON_EXISTENT_SUBSCRIPTION_ID}       123456789
+${APP_INS_ID}                 appInsId
+${NOT_EXISTENT_APP_INS_ID}    NOT_EXISTENT_APP_INS_ID
+${NOT_EXISTENT_CELL_ID}       0xffff8000099
+${CELL_ID}                    6060606
+${HREF}
+${LINKS_SELF}
+${PIC_PROBLEM_DETAILS_ON_4xx}     0
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CaReconfNotification.json b/MEC012/SRV/RNIS/jsons/CaReconfNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..d7182b7901ddbe44323219c13e7870e22b91ea01
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CaReconfNotification.json
@@ -0,0 +1,15 @@
+{
+    "notificationType": "CaReconfNotification",
+    "ecgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json b/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..efc0791d7eb67b57d1203c8ced03b9ed47521554
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "CaReconfSubscription",
+    "callbackReference": "http://10.30.8.189:8080/callback_url",
+    "filterCriteriaAssoc": {
+        "appInstanceId": "appInstanceId"
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CellChangeNotification.json b/MEC012/SRV/RNIS/jsons/CellChangeNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..ebd520a1ff3f4315b3cfb90a6fa67a7011f66848
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CellChangeNotification.json
@@ -0,0 +1,29 @@
+{
+    "associateId": [{ 
+           "type": 1,
+           "value": "somevalue"
+    }],
+    "hoStatus": 1,
+    "notificationType": "CellChangeNotification",
+    "srcEcgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "trgEcgi": [
+        {
+            "cellId": "AnotherCellId",
+            "plmn": {
+                "mcc": "999",
+                "mnc": "99"
+            }
+        }
+    ],
+    "_links": {
+    "subscription": {
+      "href": "somesuburl/subscriptions/subscriptionId"
+    }
+  }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..8997a182ef046e6762984645b342e76b8c263fea
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json
@@ -0,0 +1,17 @@
+{
+    "subscriptionType": "CellChangeSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "_links": {
+        "self": {
+            "href": "someLinks"
+        }
+    },
+    "filterCriteriaAssocHo": {
+        "associateId": [
+            { 
+            "type":0,
+            "value":"associatedId"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json
new file mode 100644
index 0000000000000000000000000000000000000000..aa371ca1cbe774e9f8b50e54d86dac9e3d3ee81f
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json
@@ -0,0 +1,18 @@
+{
+    "subscriptionType": "CelChangeSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "_links": {
+        "self": {
+            "href": "someLinks"
+        }
+    },
+    "filterCriteriaAssocHo": {
+        "associateId": [
+            "associatedId"
+        ]
+    },
+    "expiryDeadline":{ 
+    	"seconds":199999,
+    	"nanoSeconds":0
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a01966ac0994658b78e862efb7d2ad01f2e594f
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json
@@ -0,0 +1,18 @@
+{
+    "subscriptionType": "CellChangeSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "_links": {
+        "self": {
+            "href": "someLinks"
+        }
+    },
+    "filterCriteriaAssocHo": {
+        "associateId": [
+            "associatedId"
+        ]
+    },
+    "expiryDeadline":{ 
+    	"seconds":199999,
+    	"nanoSeconds":0
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/ExpiryNotification.json b/MEC012/SRV/RNIS/jsons/ExpiryNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c5a7313cc4eaca6d2a1d59e4d1cc77b5992f460
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/ExpiryNotification.json
@@ -0,0 +1,12 @@
+{
+    "notificationType": "ExpiryNotification",
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    },
+    "expiryDeadline": {
+        "nanoSeconds": 34684608,
+        "seconds": 21329786
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json b/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..b1140b940815d0e78b834c19275893d889c4df46
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json
@@ -0,0 +1,18 @@
+{
+    "notificationType": "MeasRepUeNotification",
+    "ecgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "rsrp": -50,
+    "rsrq": -20,
+    "trigger": 10,
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json b/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..82c9c35c0ade11fe5d701a5b33ecbbf286ec0789
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "MeasRepUeSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "filterCriteriaAssocTri": {
+        "appInstanceId": "appInstanceId"
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/MeasTaNotification.json b/MEC012/SRV/RNIS/jsons/MeasTaNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..fad8697e67bf2b38cce015655bc3a051fec42602
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/MeasTaNotification.json
@@ -0,0 +1,16 @@
+{
+    "notificationType": "MeasTaNotification",
+    "ecgi": {
+      "cellId": "cellId",
+      "plmn": {
+        "mcc": "999",
+        "mnc": "99"
+      }
+    },
+    "timingAdvance": 1234567,
+      "_links": {
+      "subscription": {
+        "href": "somesuburl/subscriptions/subscriptionId"
+      }
+    }
+  }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json b/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..e50b5f14257af6e097426d55dddb7cd634e290d6
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "MeasTaSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "filterCriteriaAssoc": {
+        "appInstanceId": "appInstanceId"
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json b/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..be2c853ab14a089f2444162ed6f833df38509599
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json
@@ -0,0 +1,9 @@
+{
+    "notificationType": "NrMeasRepUeNotification",
+    "triggerNr": 1,
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json b/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..51bdb65803e2e409fabf80389007ef65c367be47
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json
@@ -0,0 +1,8 @@
+{
+    "subscriptionType": "NrMeasRepUeSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "filterCriteriaNrMrs": {
+        "appInstanceId": "appInstanceId",
+        "associateId":["assoicateId01"]
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabEstNotification.json b/MEC012/SRV/RNIS/jsons/RabEstNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..cff7c1d96a67d35606dd0ed3541eea24845ddd1c
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabEstNotification.json
@@ -0,0 +1,16 @@
+{
+    "notificationType": "RabEstNotification",
+    "ecgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "erabId": 1234,
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..64732525eaa04ffe34e821933265c2e5d61cc552
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "RabEstSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "filterCriteriaQci": {
+        "qci": 9
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabModNotification.json b/MEC012/SRV/RNIS/jsons/RabModNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..ba943c306dcc0890a55a0604a474a8863cb20caa
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabModNotification.json
@@ -0,0 +1,16 @@
+{
+    "notificationType": "RabModNotification",
+    "ecgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "erabId": 1234,
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabModSubscription.json b/MEC012/SRV/RNIS/jsons/RabModSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..f80926413c53e21bc28d436abeb6af755beb7433
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabModSubscription.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "RabModSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+
+    "filterCriteriaQci": {
+        "erabId": 123,
+        "qci": 9
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabRelNotification.json b/MEC012/SRV/RNIS/jsons/RabRelNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..25ee08f2accb010560d33345b683f44d0dc13aa7
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabRelNotification.json
@@ -0,0 +1,18 @@
+{
+    "notificationType": "RabRelNotification",
+    "ecgi": {
+        "cellId": "cellId",
+        "plmn": {
+            "mcc": "999",
+            "mnc": "99"
+        }
+    },
+    "erabReleaseInfo": {
+        "erabId": 1234
+    },
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/RabRelSubscription.json b/MEC012/SRV/RNIS/jsons/RabRelSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..c1c4bac9d0b71a3b8ed9134c29aae5943eec0777
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/RabRelSubscription.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "RabRelSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+
+    "filterCriteriaQci": {
+        "erabId": 123,
+        "qci": 9
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/S1BearerNotification.json b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..56d2e002075386e99abae0b8190fe04900ebd99f
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json
@@ -0,0 +1,33 @@
+{
+    "notificationType": "S1BearerNotification",
+    "s1Event": 0,
+    "s1UeInfo": {
+        "ecgi": [
+            {
+                "cellId": "cellId",
+                "plmn": {
+                    "mcc": "999",
+                    "mnc": "99"
+                }
+            }
+        ],
+        "s1BearerInfo": [
+            {
+                "enbInfo": {
+                    "ipAddress": "127.0.0.1",
+                    "tunnelId": "tunnelId"
+                },
+                "erabId": 1234,
+                "sGwInfo": {
+                    "ipAddress": "127.0.0.1",
+                    "tunnelId": "tunnelId"
+                }
+            }
+        ]
+    },
+    "_links": {
+        "subscription": {
+            "href": "somesuburl/subscriptions/subscriptionId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json b/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..bd9032b970683a829afe163c9955faa61479792d
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "S1BearerSubscription",
+    "callbackReference": "http://10.30.8.189:8888/callback_url",
+    "eventType":1,
+    "S1BearerSubscriptionCriteria": {
+    }
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json
index 321f1d20eb337cf461cca8ed1f85639e988d3157..8910d5bf0a09834132a667ba5e65a0aced8a467f 100644
--- a/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json
+++ b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json
@@ -1,6 +1,6 @@
 {
   "subscriptionType": "CellChangeSubscription",
-  "callbackReference": "${HREF}",
+  "callbackReference": "http://10.30.8.189:8888/new_callback_url",
   "_links": {
     "self": {
       "href": "${LINKS_SELF}"
diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json
similarity index 70%
rename from MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json
rename to MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json
index 321f1d20eb337cf461cca8ed1f85639e988d3157..d4771e54ab6be21c45e051aed3b9101d0a5a9647 100644
--- a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json
+++ b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json
@@ -1,6 +1,6 @@
 {
   "subscriptionType": "CellChangeSubscription",
-  "callbackReference": "${HREF}",
+  "callbackRefer": "http://10.30.8.189:8888/new_callback_url",
   "_links": {
     "self": {
       "href": "${LINKS_SELF}"
diff --git a/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestNf.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestNf.json
new file mode 100644
index 0000000000000000000000000000000000000000..8910d5bf0a09834132a667ba5e65a0aced8a467f
--- /dev/null
+++ b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestNf.json
@@ -0,0 +1,10 @@
+{
+  "subscriptionType": "CellChangeSubscription",
+  "callbackReference": "http://10.30.8.189:8888/new_callback_url",
+  "_links": {
+    "self": {
+      "href": "${LINKS_SELF}"
+    }
+  },
+  "filterCriteriaAssocHo": {}
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/libraries/Server.py b/MEC012/SRV/RNIS/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337
--- /dev/null
+++ b/MEC012/SRV/RNIS/libraries/Server.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        return notification_json
+        
diff --git a/MEC012/SRV/RNIS/resources/LocationAPI.robot b/MEC012/SRV/RNIS/resources/LocationAPI.robot
deleted file mode 100644
index 012566b6272c851febfcbd5da8e253a8e7733b2c..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/resources/LocationAPI.robot
+++ /dev/null
@@ -1,12 +0,0 @@
-*** Settings ***
-Resource    ../environment/variables.txt
-Resource    LocationAPI.robot
-#Library    REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library    JSONSchemaLibrary    schemas/
-
-*** Keywords ***
-Check Location
-    [Arguments]    ${value}
-    Log    Check Location for userInfo element
-    Should be Equal    ${response['body']['userInfo']['zoneId']}    ${value}
-    Log    Location OK
diff --git a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot
deleted file mode 100644
index 51323d4182be85895502c43b2fc2fd419e2fb897..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot
+++ /dev/null
@@ -1,47 +0,0 @@
-*** Settings ***
-Resource    ../environment/variables.txt
-Resource    ../../../../pics.txt
-Resource    ../../../../GenericKeywords.robot
-Library    REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library    JSONSchemaLibrary    schemas/
-
-
-*** Keywords ***
-Check Subscription
-    [Arguments]    ${received_value}    ${expected_value}
-    Should Be Equal    ${received_value['_links']['self']}    ${LINKS_SELF}
-    ${length}    Get Length    ${received_value['subscription']}
-    :FOR  ${item}  IN RANGE    0    ${length} 
-    \  Exit For Loop If    ${received_value['subscription'][${item}]} == ${expected_value}
-    Log    Item found ${received_value['subscription'][${item}]}
-    [return]    ${received_value['subscription'][${item}]}
-
-
-Check CellChangeSubscription
-    [Arguments]    ${received_value}
-    Should Be Equal    ${received_value['_links']['self']['href']}    ${LINKS_SELF}
-
-
-Check RabInfo
-    [Arguments]    ${received_value}
-    log    ${received_value}
-    Should Not Be Empty    ${received_value['requestId']}
-    Run Keyword If    'cellUserInfo' in ${received_value}    Should Be Equal As Strings    ${received_value['cellUserInfo'][0]['ecgi']['cellId']}    ${CELL_ID}
-
-Check PlmnInfo
-    [Arguments]    ${received_value}
-    log    ${received_value}
-    Should Be Equal As Strings   ${received_value['appInstanceId']}    ${APP_INS_ID}
-    Should Not Be Empty    ${received_value['plmn'][0]['mcc']}    
-    Should Not Be Empty    ${received_value['plmn'][0]['mnc']}    
-
-
-Check S1BearerInfo
-    [Arguments]    ${received_value}
-    log    ${received_value}
-    Should Be Equal As Strings    ${received_value['s1UeIffo']['ecgi']['cellId']}    ${CELL_ID}
-    
-Check L2MeasInfo
-    [Arguments]    ${received_value}
-    log    ${received_value}
-    Should Be Equal As Strings    ${received_value['cellInfo'][0]['ecgi']['cellId']}    ${CELL_ID}
diff --git a/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json b/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..51c09b03a6c394e4f3b916777c91333af51fa0c3
--- /dev/null
+++ b/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json
@@ -0,0 +1,277 @@
+{
+        "title": "CaReconfNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "ecgi",
+              "_links"
+            ],
+            "type": "object",
+            "properties": {
+              "associateId": {
+                "type": "array",
+                "items": {
+                  "title": "AssociateId",
+                  "type": "object",
+                  "properties": {
+                    "type": {
+                      "title": "Type",
+                      "enum": [
+                        0,
+                        1,
+                        2,
+                        3,
+                        4
+                      ],
+                      "type": "integer",
+                      "description": "Numeric value (0-255) corresponding to specified type of identifier as following: 0 = reserved. 1 = UE_IPv4_ADDRESS. 2 = UE_IPV6_ADDRESS. 3 = NATED_IP_ADDRESS. 4 = GTP_TEID.",
+                      "examples": [
+                        0
+                      ]
+                    },
+                    "value": {
+                      "type": "string",
+                      "description": "Value for the identifier."
+                    }
+                  }
+                },
+                "description": "0 to N identifiers to associate the event for a specific UE or flow."
+              },
+              "carrierAggregationMeasInfo": {
+                "type": "array",
+                "items": {
+                  "title": "CarrierAggregationMeasInfo",
+                  "type": "object",
+                  "required": [
+                    "cellIdSrv",
+                    "cellIdNei"
+                  ],
+                  "properties": {
+                    "cellIdNei": {
+                      "type": "string",
+                      "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                    },
+                    "cellIdSrv": {
+                      "type": "string",
+                      "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                    },
+                    "rsrpNei": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].",
+                      "contentEncoding": "int32"
+                    },
+                    "rsrpSrv": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].",
+                      "contentEncoding": "int32"
+                    },
+                    "rsrqNei": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].",
+                      "contentEncoding": "int32"
+                    },
+                    "rsrqSrv": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].",
+                      "contentEncoding": "int32"
+                    }
+                  }
+                },
+                "description": "This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to N."
+              },
+              "ecgi": {
+                "title": "Ecgi",
+                "required": [
+                  "cellId",
+                  "plmn"
+                ],
+                "type": "object",
+                "properties": {
+                  "cellId": {
+                    "type": "string",
+                    "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                  },
+                  "plmn": {
+                    "title": "Plmn",
+                    "required": [
+                      "mcc",
+                      "mnc"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "mcc": {
+                        "type": "string",
+                        "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "mnc": {
+                        "type": "string",
+                        "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      }
+                    }
+                  }
+                }
+              },
+              "secondaryCellAdd": {
+                "type": "array",
+                "items": {
+                  "title": "SecondaryCellAdd",
+                  "type": "object",
+                  "required": [
+                    "ecgi"
+                  ],
+                  "properties": {
+                    "ecgi": {
+                      "title": "Ecgi",
+                      "required": [
+                        "cellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "cellId": {
+                          "type": "string",
+                          "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "description": ""
+              },
+              "secondaryCellRemove": {
+                "type": "array",
+                "items": {
+                  "title": "SecondaryCellRemove",
+                  "type": "object",
+                  "required": [
+                    "ecgi"
+                  ],
+                  "properties": {
+                    "ecgi": {
+                      "title": "Ecgi",
+                      "required": [
+                        "cellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "cellId": {
+                          "type": "string",
+                          "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "description": ""
+              },
+              "timeStamp": {
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              },
+              "_links": {
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json b/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json
index 4266f1a1ba19edb6226f3fb117808d8f58d7eb5d..ae3f9da3df99ba3d8e5477ef9df1fd4a025d8219 100644
--- a/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json
+++ b/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json
@@ -1,158 +1,218 @@
 {
-        "properties": {
-          "associateId": {
-            "description": "0 to N identifiers to associate the event for a specific UE or flow.",
-            "items": {
+  "title": "CellChangeNotification",
+  "description": "This type represents a notification from RNIS with regards to cell change procedure\nNOTE:\tCardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.\n",
+  "allOf": [
+    {
+      "title": "InlineNotification",
+      "required": [
+        "notificationType"
+      ],
+      "type": "object",
+      "properties": {
+        "notificationType": {
+          "type": "string"
+        }
+      },
+      "discriminator": {
+        "propertyName": "notificationType",
+        "mapping": {
+          "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+          "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+          "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+          "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+          "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+          "RabEstNotification": "#/components/schemas/RabEstNotification",
+          "RabModNotification": "#/components/schemas/RabModNotification",
+          "RabRelNotification": "#/components/schemas/RabRelNotification",
+          "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+          "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+          "TestNotification": "#/components/schemas/TestNotification"
+        }
+      }
+    },
+    {
+      "required": [
+        "hoStatus",
+        "srcEcgi",
+        "trgEcgi",
+        "_links"
+      ],
+      "type": "object",
+      "properties": {
+        "associateId": {
+          "type": "array",
+          "items": {
+            "title": "AssociateId",
+            "type": "object",
+            "properties": {
+              "type": {
+                "title": "Type",
+                "enum": [
+                  0,
+                  1,
+                  2,
+                  3,
+                  4
+                ],
+                "type": "integer",
+                "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                "examples": [
+                  0
+                ]
+              },
+              "value": {
+                "type": "string",
+                "description": "Value for the identifier."
+              }
+            }
+          },
+          "description": "0 to N identifiers to associate the event for a specific UE or flow."
+        },
+        "hoStatus": {
+          "title": "HoStatus",
+          "enum": [
+            1,
+            2,
+            3,
+            4,
+            5
+          ],
+          "type": "integer",
+          "description": "Indicate the status of the UE handover procedure. Values are defined as following: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED.",
+          "examples": [
+            1
+          ]
+        },
+        "srcEcgi": {
+          "title": "Ecgi",
+          "required": [
+            "cellId",
+            "plmn"
+          ],
+          "type": "object",
+          "properties": {
+            "cellId": {
+              "type": "string",
+              "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+            },
+            "plmn": {
+              "title": "Plmn",
+              "required": [
+                "mcc",
+                "mnc"
+              ],
+              "type": "object",
               "properties": {
-                "type": {
-                  "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.",
-                  "enum": [
-                    "SEE_DESCRIPTION"
-                  ],
+                "mcc": {
                   "type": "string",
-                  "x-etsi-mec-cardinality": "1",
-                  "x-etsi-mec-origin-type": "Enum"
+                  "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
                 },
-                "value": {
-                  "description": "Value for the identifier.",
+                "mnc": {
                   "type": "string",
-                  "x-etsi-mec-cardinality": "1",
-                  "x-etsi-mec-origin-type": "String"
+                  "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
                 }
-              },
-              "required": [
-                "type",
-                "value"
-              ],
-              "type": "object",
-              "x-etsi-ref": "6.5.4"
+              }
+            }
+          }
+        },
+        "tempUeId": {
+          "title": "TempUeId",
+          "required": [
+            "mmec",
+            "mtmsi"
+          ],
+          "type": "object",
+          "properties": {
+            "mmec": {
+              "type": "string",
+              "description": "MMEC as defined in ETSI TS 136 413 [i.3]."
             },
-            "type": "array",
-            "x-etsi-mec-cardinality": "0..N",
-            "x-etsi-mec-origin-type": "AssociateId"
+            "mtmsi": {
+              "type": "string",
+              "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+            }
           },
-          "hoStatus": {
-            "description": "Indicate the status of the UE handover procedure. Values are defined as following:\n1 = IN_PREPARATION.\n2 = IN_EXECUTION.\n3 = COMPLETED.\n4 = REJECTED.\n5 = CANCELLED.",
-            "enum": [
-              "SEE_DESCRIPTION"
+          "description": "The temporary identifier allocated for the specific UE as defined below."
+        },
+        "timeStamp": {
+          "title": "TimeStamp",
+          "required": [
+            "nanoSeconds",
+            "seconds"
+          ],
+          "type": "object",
+          "properties": {
+            "nanoSeconds": {
+              "type": "integer",
+              "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+              "contentEncoding": "int32"
+            },
+            "seconds": {
+              "type": "integer",
+              "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+              "contentEncoding": "int32"
+            }
+          }
+        },
+        "trgEcgi": {
+          "type": "array",
+          "items": {
+            "title": "Ecgi",
+            "required": [
+              "cellId",
+              "plmn"
             ],
-            "type": "string",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "Enum"
-          },
-          "notificationType": {
-            "description": "Shall be set to \"CellChangeNotification\".",
-            "type": "string",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "String"
-          },
-          "srcEcgi": {
+            "type": "object",
             "properties": {
               "cellId": {
-                "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-                "type": "string"
+                "type": "string",
+                "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
               },
               "plmn": {
+                "title": "Plmn",
+                "required": [
+                  "mcc",
+                  "mnc"
+                ],
+                "type": "object",
                 "properties": {
                   "mcc": {
-                    "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
                     "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
+                    "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
                   },
                   "mnc": {
-                    "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
                     "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
+                    "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
                   }
-                },
-                "required": [
-                  "mcc",
-                  "mnc"
-                ],
-                "type": "object",
-                "x-etsi-ref": "6.5.5"
-              }
-            },
-            "required": [
-              "plmn",
-              "cellId"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.6"
-          },
-          "tempUeId": {
-            "description": "The temporary identifier allocated for the specific UE as defined below.",
-            "type": "object",
-            "x-etsi-mec-cardinality": "0..1",
-            "x-etsi-mec-origin-type": "Structure (inlined)"
-          },
-          "timeStamp": {
-            "properties": {
-              "nanoSeconds": {
-                "type": "number"
-              },
-              "seconds": {
-                "type": "number"
+                }
               }
-            },
-            "required": [
-              "seconds",
-              "nanoSeconds"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.3"
+            }
           },
-          "trgEcgi": {
-            "description": "E-UTRAN CelI Global Identifier of the target cell.\nNOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.",
-            "items": {
-              "properties": {
-                "cellId": {
-                  "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-                  "type": "string"
-                },
-                "plmn": {
-                  "properties": {
-                    "mcc": {
-                      "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                      "type": "string",
-                      "x-etsi-mec-cardinality": "1",
-                      "x-etsi-mec-origin-type": "String"
-                    },
-                    "mnc": {
-                      "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                      "type": "string",
-                      "x-etsi-mec-cardinality": "1",
-                      "x-etsi-mec-origin-type": "String"
-                    }
-                  },
-                  "required": [
-                    "mcc",
-                    "mnc"
-                  ],
-                  "type": "object",
-                  "x-etsi-ref": "6.5.5"
-                }
-              },
+          "description": "E-UTRAN Cell Global Identifier of the target cell. See note.\n"
+        },
+        "_links": {
+          "description": "Links to resources related to this notification.",
+          "required": [
+            "subscription"
+          ],
+          "properties": {
+            "subscription": {
+              "description": "A link to the related subscription.",
+              "title": "LinkType",
               "required": [
-                "plmn",
-                "cellId"
+                "href"
               ],
               "type": "object",
-              "x-etsi-ref": "6.5.6"
-            },
-            "type": "array",
-            "x-etsi-mec-cardinality": "1..N",
-            "x-etsi-mec-origin-type": "Ecgi"
+              "properties": {
+                "href": {
+                  "type": "string",
+                  "description": "URI referring to a resource"
+                }
+              }
+            }
           }
-        },
-        "required": [
-          "notificationType",
-          "srcEcgi",
-          "trgEcgi",
-          "hoStatus"
-        ],
-        "type": "object",
-        "x-etsi-ref": "6.4.2"
-      }
\ No newline at end of file
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json b/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..df78249a35329fa2405970429814ffe072bedcc8
--- /dev/null
+++ b/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json
@@ -0,0 +1,107 @@
+{
+        "title": "ExpiryNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "_links",
+              "expiryDeadline"
+            ],
+            "type": "object",
+            "properties": {
+              "_links": {
+                "title": "Links2",
+                "required": [
+                  "subscription"
+                ],
+                "type": "object",
+                "properties": {
+                  "subscription": {
+                    "description": "URI identifying the subscription which has expired.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                },
+                "description": "List of hyperlinks related to the resource."
+              },
+              "expiryDeadline": {
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              },
+              "timeStamp": {
+                "description": "Time stamp of the notification.",
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json b/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..88bed1e2eaa317c20eb56d69a4c2cccfcae167da
--- /dev/null
+++ b/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json
@@ -0,0 +1,151 @@
+{
+        "title": "MeasTaNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "ecgi",
+              "timingAdvance",
+              "_links"
+            ],
+            "type": "object",
+            "properties": {
+              "associateId": {
+                "type": "array",
+                "items": {
+                  "title": "AssociateId",
+                  "type": "object",
+                  "properties": {
+                    "type": {
+                      "title": "Type",
+                      "enum": [
+                        0,
+                        1,
+                        2,
+                        3,
+                        4
+                      ],
+                      "type": "integer",
+                      "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                      "examples": [
+                        0
+                      ]
+                    },
+                    "value": {
+                      "type": "string",
+                      "description": "Value for the identifier."
+                    }
+                  }
+                },
+                "description": "0 to N identifiers to associate the event for a specific UE or flow."
+              },
+              "ecgi": {
+                "title": "Ecgi",
+                "required": [
+                  "cellId",
+                  "plmn"
+                ],
+                "type": "object",
+                "properties": {
+                  "cellId": {
+                    "type": "string",
+                    "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                  },
+                  "plmn": {
+                    "title": "Plmn",
+                    "required": [
+                      "mcc",
+                      "mnc"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "mcc": {
+                        "type": "string",
+                        "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "mnc": {
+                        "type": "string",
+                        "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      }
+                    }
+                  }
+                }
+              },
+              "timeStamp": {
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              },
+              "timingAdvance": {
+                "type": "integer",
+                "description": "The timing advance as defined in ETSI TS 136 214 [i.5].",
+                "contentEncoding": "int32"
+              },
+              "_links": {
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json b/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..d39064a3448cfcab554f0bf3c2f68b5f24a651b4
--- /dev/null
+++ b/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json
@@ -0,0 +1,723 @@
+{
+        "title": "NrMeasRepUeNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "triggerNr",
+              "_links"
+            ],
+            "type": "object",
+            "properties": {
+              "associateId": {
+                "type": "array",
+                "items": {
+                  "title": "AssociateId",
+                  "type": "object",
+                  "properties": {
+                    "type": {
+                      "title": "Type",
+                      "enum": [
+                        0,
+                        1,
+                        2,
+                        3,
+                        4
+                      ],
+                      "type": "integer",
+                      "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                      "examples": [
+                        0
+                      ]
+                    },
+                    "value": {
+                      "type": "string",
+                      "description": "Value for the identifier."
+                    }
+                  }
+                },
+                "description": "0 to N identifiers to associate the event for a specific UE or flow."
+              },
+              "eutraNeighCellMeasInfo": {
+                "type": "array",
+                "items": {
+                  "title": "EutraNeighCellMeasInfo",
+                  "type": "object",
+                  "required": [
+                    "ecgi"
+                  ],
+                  "properties": {
+                    "ecgi": {
+                      "description": "E-UTRAN Cell Global Identifier.",
+                      "title": "Ecgi",
+                      "required": [
+                        "cellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "cellId": {
+                          "type": "string",
+                          "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "rsrp": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                      "contentEncoding": "int32"
+                    },
+                    "rsrq": {
+                      "type": "integer",
+                      "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                      "contentEncoding": "int32"
+                    },
+                    "sinr": {
+                      "type": "integer",
+                      "description": "Reference Signal plus Interference Noise Ratio as defined in ETSI TS138331[i.13].",
+                      "contentEncoding": "int32"
+                    }
+                  }
+                },
+                "description": "This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if nrNeighCellMeasInfo is included."
+              },
+              "nrNeighCellMeasInfo": {
+                "type": "array",
+                "items": {
+                  "title": "NrNeighCellMeasInfo",
+                  "type": "object",
+                  "required": [
+                    "nrcgi"
+                  ],
+                  "properties": {
+                    "measQuantityResultsCsiRsCell": {
+                      "title": "MeasQuantityResultsNr",
+                      "type": "object",
+                      "properties": {
+                        "rsrp": {
+                          "type": "integer",
+                          "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        },
+                        "rsrq": {
+                          "type": "integer",
+                          "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        },
+                        "sinr": {
+                          "type": "integer",
+                          "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        }
+                      }
+                    },
+                    "measQuantityResultsSsbCell": {
+                      "title": "MeasQuantityResultsNr",
+                      "type": "object",
+                      "properties": {
+                        "rsrp": {
+                          "type": "integer",
+                          "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        },
+                        "rsrq": {
+                          "type": "integer",
+                          "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        },
+                        "sinr": {
+                          "type": "integer",
+                          "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                          "contentEncoding": "int32"
+                        }
+                      }
+                    },
+                    "nrcgi": {
+                      "description": "NR Cell Global Identifier.",
+                      "title": "Nrcgi",
+                      "required": [
+                        "nrCellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "nrcellId": {
+                          "type": "string",
+                          "description": "String representing the NR Cell Identity. Encoded as a bit string (size (36)) as defined in ETSI TS 138 423 [i.17]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "rsIndexResults": {
+                      "title": "RsIndexResults",
+                      "required": [
+                        "resultsCsiRsIndexes",
+                        "resultsSsbIndexes"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "resultsCsiRsIndexes": {
+                          "title": "ResultsPerCsiRsIndexList",
+                          "type": "object",
+                          "properties": {
+                            "resultsPerCsiRsIndex": {
+                              "type": "array",
+                              "items": {
+                                "title": "ResultsPerCsiRsIndex",
+                                "required": [
+                                  "csiRsIndex"
+                                ],
+                                "type": "object",
+                                "properties": {
+                                  "csiRsIndex": {
+                                    "type": "integer",
+                                    "contentEncoding": "int32"
+                                  },
+                                  "csiRsResults": {
+                                    "title": "MeasQuantityResultsNr",
+                                    "type": "object",
+                                    "properties": {
+                                      "rsrp": {
+                                        "type": "integer",
+                                        "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "rsrq": {
+                                        "type": "integer",
+                                        "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "sinr": {
+                                        "type": "integer",
+                                        "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      }
+                                    }
+                                  }
+                                }
+                              },
+                              "description": ""
+                            }
+                          }
+                        },
+                        "resultsSsbIndexes": {
+                          "title": "ResultsPerSsbIndexList",
+                          "type": "object",
+                          "properties": {
+                            "resultsPerSsbIndex": {
+                              "type": "array",
+                              "items": {
+                                "title": "ResultsPerSsbIndex",
+                                "required": [
+                                  "ssbIndex"
+                                ],
+                                "type": "object",
+                                "properties": {
+                                  "ssbIndex": {
+                                    "type": "integer",
+                                    "contentEncoding": "int32"
+                                  },
+                                  "ssbResults": {
+                                    "title": "MeasQuantityResultsNr",
+                                    "type": "object",
+                                    "properties": {
+                                      "rsrp": {
+                                        "type": "integer",
+                                        "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "rsrq": {
+                                        "type": "integer",
+                                        "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "sinr": {
+                                        "type": "integer",
+                                        "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                        "contentEncoding": "int32"
+                                      }
+                                    }
+                                  }
+                                }
+                              },
+                              "description": ""
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "description": "This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if eutraNeighCellMeasInfo is included."
+              },
+              "servCellMeasInfo": {
+                "type": "array",
+                "items": {
+                  "title": "ServCellMeasInfo",
+                  "type": "object",
+                  "required": [
+                    "nrcgi",
+                    "sCell"
+                  ],
+                  "properties": {
+                    "nCell": {
+                      "title": "NCell",
+                      "type": "object",
+                      "properties": {
+                        "measQuantityResultsCsiRsCell": {
+                          "title": "MeasQuantityResultsNr",
+                          "type": "object",
+                          "properties": {
+                            "rsrp": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "rsrq": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "sinr": {
+                              "type": "integer",
+                              "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            }
+                          }
+                        },
+                        "measQuantityResultsSsbCell": {
+                          "title": "MeasQuantityResultsNr",
+                          "type": "object",
+                          "properties": {
+                            "rsrp": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "rsrq": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "sinr": {
+                              "type": "integer",
+                              "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            }
+                          }
+                        },
+                        "rsIndexResults": {
+                          "title": "RsIndexResults",
+                          "required": [
+                            "resultsCsiRsIndexes",
+                            "resultsSsbIndexes"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "resultsCsiRsIndexes": {
+                              "title": "ResultsPerCsiRsIndexList",
+                              "type": "object",
+                              "properties": {
+                                "resultsPerCsiRsIndex": {
+                                  "type": "array",
+                                  "items": {
+                                    "title": "ResultsPerCsiRsIndex",
+                                    "required": [
+                                      "csiRsIndex"
+                                    ],
+                                    "type": "object",
+                                    "properties": {
+                                      "csiRsIndex": {
+                                        "type": "integer",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "csiRsResults": {
+                                        "title": "MeasQuantityResultsNr",
+                                        "type": "object",
+                                        "properties": {
+                                          "rsrp": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "rsrq": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "sinr": {
+                                            "type": "integer",
+                                            "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  },
+                                  "description": ""
+                                }
+                              }
+                            },
+                            "resultsSsbIndexes": {
+                              "title": "ResultsPerSsbIndexList",
+                              "type": "object",
+                              "properties": {
+                                "resultsPerSsbIndex": {
+                                  "type": "array",
+                                  "items": {
+                                    "title": "ResultsPerSsbIndex",
+                                    "required": [
+                                      "ssbIndex"
+                                    ],
+                                    "type": "object",
+                                    "properties": {
+                                      "ssbIndex": {
+                                        "type": "integer",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "ssbResults": {
+                                        "title": "MeasQuantityResultsNr",
+                                        "type": "object",
+                                        "properties": {
+                                          "rsrp": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "rsrq": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "sinr": {
+                                            "type": "integer",
+                                            "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  },
+                                  "description": ""
+                                }
+                              }
+                            }
+                          }
+                        }
+                      },
+                      "description": "Measurement information relating to the best neighbour of this serving cell."
+                    },
+                    "nrcgi": {
+                      "title": "Nrcgi",
+                      "required": [
+                        "nrCellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "nrcellId": {
+                          "type": "string",
+                          "description": "String representing the NR Cell Identity. Encoded as a bit string (size (36)) as defined in ETSI TS 138 423 [i.17]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "sCell": {
+                      "title": "SCell",
+                      "type": "object",
+                      "properties": {
+                        "measQuantityResultsCsiRsCell": {
+                          "title": "MeasQuantityResultsNr",
+                          "type": "object",
+                          "properties": {
+                            "rsrp": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "rsrq": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "sinr": {
+                              "type": "integer",
+                              "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            }
+                          }
+                        },
+                        "measQuantityResultsSsbCell": {
+                          "title": "MeasQuantityResultsNr",
+                          "type": "object",
+                          "properties": {
+                            "rsrp": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "rsrq": {
+                              "type": "integer",
+                              "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            },
+                            "sinr": {
+                              "type": "integer",
+                              "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                              "contentEncoding": "int32"
+                            }
+                          }
+                        },
+                        "rsIndexResults": {
+                          "title": "RsIndexResults",
+                          "required": [
+                            "resultsCsiRsIndexes",
+                            "resultsSsbIndexes"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "resultsCsiRsIndexes": {
+                              "title": "ResultsPerCsiRsIndexList",
+                              "type": "object",
+                              "properties": {
+                                "resultsPerCsiRsIndex": {
+                                  "type": "array",
+                                  "items": {
+                                    "title": "ResultsPerCsiRsIndex",
+                                    "required": [
+                                      "csiRsIndex"
+                                    ],
+                                    "type": "object",
+                                    "properties": {
+                                      "csiRsIndex": {
+                                        "type": "integer",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "csiRsResults": {
+                                        "title": "MeasQuantityResultsNr",
+                                        "type": "object",
+                                        "properties": {
+                                          "rsrp": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "rsrq": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "sinr": {
+                                            "type": "integer",
+                                            "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  },
+                                  "description": ""
+                                }
+                              }
+                            },
+                            "resultsSsbIndexes": {
+                              "title": "ResultsPerSsbIndexList",
+                              "type": "object",
+                              "properties": {
+                                "resultsPerSsbIndex": {
+                                  "type": "array",
+                                  "items": {
+                                    "title": "ResultsPerSsbIndex",
+                                    "required": [
+                                      "ssbIndex"
+                                    ],
+                                    "type": "object",
+                                    "properties": {
+                                      "ssbIndex": {
+                                        "type": "integer",
+                                        "contentEncoding": "int32"
+                                      },
+                                      "ssbResults": {
+                                        "title": "MeasQuantityResultsNr",
+                                        "type": "object",
+                                        "properties": {
+                                          "rsrp": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "rsrq": {
+                                            "type": "integer",
+                                            "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          },
+                                          "sinr": {
+                                            "type": "integer",
+                                            "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].",
+                                            "contentEncoding": "int32"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  },
+                                  "description": ""
+                                }
+                              }
+                            }
+                          }
+                        }
+                      },
+                      "description": "Measurement information relating to this serving cell."
+                    }
+                  }
+                },
+                "description": "This parameter can be repeated to contain information of all the serving cells up to N."
+              },
+              "timeStamp": {
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              },
+              "triggerNr": {
+                "title": "TriggerNr",
+                "enum": [
+                  0,
+                  1,
+                  2,
+                  10,
+                  11,
+                  12,
+                  13,
+                  14,
+                  15,
+                  20,
+                  21,
+                  30,
+                  31
+                ],
+                "type": "integer",
+                "description": "The enumeration Trigger represents specified triggers for a 5G UE Measurement Report. Full details can be found in ETSI TS 138 331 [i.13]). <p>0 = NOT_AVAILABLE <p>1 = NR_PERIODICAL <p>2 = NR_CGI <p>10 = EVENT_A1 <p>11 = EVENT_A2 <p>12 = EVENT_A3 <p>13 = EVENT_A4 <p>14 = EVENT_A5 <p>15 = EVENT_A6 <p>20 = INTER_RAT_PERIODICAL <p>21 = INTER_RAT_CGI <p>30 = EVENT_B1 <p>31 = EVENT_B2",
+                "examples": [
+                  0
+                ]
+              },
+              "_links": {
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json b/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json
index 72f2ac15a48bd67c8aafa13cf9d25c53fdb0e5f5..91c9164046220696512aa90264ada1c9abdf117f 100644
--- a/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json
+++ b/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json
@@ -1,64 +1,59 @@
 {
   "type": "array",
   "items": {
-    "type": "object",
-    "properties": {
-      "appInstanceId": {
-        "description": "Unique identifier for the MEC application instance.",
-        "type": "string",
-        "x-etsi-mec-cardinality": "1",
-        "x-etsi-mec-origin-type": "String"
-      },
-      "plmn": {
-        "description": "Public Land Mobile Network Identity.",
-        "items": {
-          "properties": {
-            "mcc": {
-              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-              "type": "string",
-              "x-etsi-mec-cardinality": "1",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "mnc": {
-              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-              "type": "string",
-              "x-etsi-mec-cardinality": "1",
-              "x-etsi-mec-origin-type": "String"
-            }
-          },
-          "required": [
-            "mcc",
-            "mnc"
-          ],
-          "type": "object",
-          "x-etsi-ref": "6.5.5"
-        },
-        "minItems": 1,
-        "type": "array",
-        "x-etsi-mec-cardinality": "1..N",
-        "x-etsi-mec-origin-type": "Plmn"
-      },
-      "timeStamp": {
-        "properties": {
-          "nanoSeconds": {
-            "type": "number"
-          },
-          "seconds": {
-            "type": "number"
-          }
-        },
+        "title": "PlmnInfo",
         "required": [
-          "seconds",
-          "nanoSeconds"
+          "appInstanceId",
+          "plmn"
         ],
         "type": "object",
-        "x-etsi-ref": "6.5.3"
+        "properties": {
+          "appInstanceId": {
+            "type": "string",
+            "description": "Unique identifier for the MEC application instance."
+          },
+          "plmn": {
+            "type": "array",
+            "items": {
+              "title": "Plmn",
+              "required": [
+                "mcc",
+                "mnc"
+              ],
+              "type": "object",
+              "properties": {
+                "mcc": {
+                  "type": "string",
+                  "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                },
+                "mnc": {
+                  "type": "string",
+                  "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                }
+              }
+            },
+            "description": "Public Land Mobile Network Identity."
+          },
+          "timeStamp": {
+            "title": "TimeStamp",
+            "required": [
+              "nanoSeconds",
+              "seconds"
+            ],
+            "type": "object",
+            "properties": {
+              "nanoSeconds": {
+                "type": "integer",
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
+              },
+              "seconds": {
+                "type": "integer",
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
+              }
+            }
+          }
+        }
       }
-    },
-    "required": [
-      "appInstanceId",
-      "plmn"
-    ],
-    "x-etsi-ref": "6.2.2"
-  }
 }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json
index 095fb26c70b804b57d8fa7f93a52df4a070e1d7a..dd77919127b1351242326a59ffddac83246c826a 100644
--- a/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json
+++ b/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json
@@ -1,129 +1,201 @@
 {
-	"properties": {
-		"associateId": {
-			"description": "0 to N identifiers to bind the event for a specific UE or flow. ",
-			"items": {
-				"properties": {
-					"type": {
-						"description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.",
-						"enum": [
-							"SEE_DESCRIPTION"
-						],
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "Enum"
-					},
-					"value": {
-						"description": "Value for the identifier.",
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "String"
-					}
-				},
-				"required": [
-					"type",
-					"value"
-				],
-				"type": "object",
-				"x-etsi-ref": "6.5.4"
-			},
-			"type": "array",
-			"x-etsi-mec-cardinality": "0..N",
-			"x-etsi-mec-origin-type": "AssociateId"
-		},
-		"ecgi": {
-			"properties": {
-				"cellId": {
-					"description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-					"type": "string"
-				},
-				"plmn": {
-					"properties": {
-						"mcc": {
-							"description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "String"
-						},
-						"mnc": {
-							"description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "String"
-						}
-					},
-					"required": [
-						"mcc",
-						"mnc"
-					],
-					"type": "object",
-					"x-etsi-ref": "6.5.5"
-				}
-			},
-			"required": [
-				"plmn",
-				"cellId"
-			],
-			"type": "object",
-			"x-etsi-ref": "6.5.6"
-		},
-		"erabId": {
-			"description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
-			"type": "integer",
-			"x-etsi-mec-cardinality": "1",
-			"x-etsi-mec-origin-type": "Integer"
-		},
-		"erabQosParameters": {
-			"description": "QoS parameters for the E-RAB as defined below.",
-			"properties": {
-				"qci": {
-					"description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "1",
-					"x-etsi-mec-origin-type": "Integer"
-				}
-			},
-			"required": [
-				"qci"
-			],
-			"type": "object",
-			"x-etsi-mec-cardinality": "0..1",
-			"x-etsi-mec-origin-type": "Structure (inlined)"
-		},
-		"notificationType": {
-			"description": "Shall be set to \"RabEstNotification\".",
-			"type": "string",
-			"x-etsi-mec-cardinality": "1",
-			"x-etsi-mec-origin-type": "String"
-		},
-		"tempUeId": {
-			"description": "The temporary identifier allocated for the specific UE as defined below. ",
-			"type": "object",
-			"x-etsi-mec-cardinality": "0..1",
-			"x-etsi-mec-origin-type": "Structure (inlined)"
-		},
-		"timeStamp": {
-			"properties": {
-				"nanoSeconds": {
-					"type": "number"
-				},
-				"seconds": {
-					"type": "number"
-				}
-			},
-			"required": [
-				"seconds",
-				"nanoSeconds"
-			],
-			"type": "object",
-			"x-etsi-ref": "6.5.3"
-		}
-	},
-	"required": [
-		"notificationType",
-		"ecgi",
-		"erabId"
-	],
-	"type": "object",
-	"x-etsi-ref": "6.4.3"
-}
\ No newline at end of file
+        "title": "RabEstNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "ecgi",
+              "erabId",
+              "_links"
+            ],
+            "type": "object",
+            "properties": {
+              "associateId": {
+                "type": "array",
+                "items": {
+                  "title": "AssociateId",
+                  "type": "object",
+                  "properties": {
+                    "type": {
+                      "title": "Type",
+                      "enum": [
+                        0,
+                        1,
+                        2,
+                        3,
+                        4
+                      ],
+                      "type": "integer",
+                      "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                      "examples": [
+                        0
+                      ]
+                    },
+                    "value": {
+                      "type": "string",
+                      "description": "Value for the identifier."
+                    }
+                  }
+                },
+                "description": "0 to N identifiers to bind the event for a specific UE or flow."
+              },
+              "ecgi": {
+                "title": "Ecgi",
+                "required": [
+                  "cellId",
+                  "plmn"
+                ],
+                "type": "object",
+                "properties": {
+                  "cellId": {
+                    "type": "string",
+                    "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                  },
+                  "plmn": {
+                    "title": "Plmn",
+                    "required": [
+                      "mcc",
+                      "mnc"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "mcc": {
+                        "type": "string",
+                        "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "mnc": {
+                        "type": "string",
+                        "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      }
+                    }
+                  }
+                }
+              },
+              "erabId": {
+                "type": "integer",
+                "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
+                "contentEncoding": "int32"
+              },
+              "erabQosParameters": {
+                "title": "ErabQosParameters",
+                "required": [
+                  "qci"
+                ],
+                "type": "object",
+                "properties": {
+                  "qci": {
+                    "type": "integer",
+                    "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].",
+                    "contentEncoding": "int32"
+                  },
+                  "qosInformation": {
+                    "title": "QosInformation",
+                    "required": [
+                      "erabGbrDl",
+                      "erabGbrUl",
+                      "erabMbrDl",
+                      "erabMbrUl"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "erabGbrDl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabGbrUl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabMbrDl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabMbrUl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      }
+                    },
+                    "description": "The QoS information for the E-RAB."
+                  }
+                },
+                "description": "QoS parameters for the E-RAB as defined below."
+              },
+              "tempUeId": {
+                "title": "TempUeId",
+                "required": [
+                  "mmec",
+                  "mtmsi"
+                ],
+                "type": "object",
+                "properties": {
+                  "mmec": {
+                    "type": "string",
+                    "description": "MMEC as defined in ETSI TS 136 413 [i.3]."
+                  },
+                  "mtmsi": {
+                    "type": "string",
+                    "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+                  }
+                },
+                "description": "The temporary identifier allocated for the specific UE as defined below."
+              },
+              "timeStamp": {
+                "_links": null,
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                },
+                "title": "TimeStamp",
+                "type": "object"
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/RabInfo.schema.json b/MEC012/SRV/RNIS/schemas/RabInfo.schema.json
index bb3c80831db46022713e68bc6622b46683adadf7..8d60b57b9681ea507d98a9620ac4fa81d9ad9976 100644
--- a/MEC012/SRV/RNIS/schemas/RabInfo.schema.json
+++ b/MEC012/SRV/RNIS/schemas/RabInfo.schema.json
@@ -1,152 +1,189 @@
 {
-  "type": "object",
-  "properties": {
-    "appInstanceId": {
-      "description": "Unique identifier for the MEC application instance.",
-      "type": "string",
-      "x-etsi-mec-cardinality": "1",
-      "x-etsi-mec-origin-type": "String"
-    },
-    "cellUserInfo": {
-      "description": "The information on users per cell as defined below.",
-      "items": {
+        "title": "RabInfo",
+        "required": [
+          "appInstanceId",
+          "requestId"
+        ],
+        "type": "object",
         "properties": {
-          "ecgi": {
-            "properties": {
-              "cellId": {
-                "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-                "type": "string"
-              },
-              "plmn": {
-                "properties": {
-                  "mcc": {
-                    "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                    "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
-                  },
-                  "mnc": {
-                    "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                    "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
-                  }
-                },
-                "required": [
-                  "mcc",
-                  "mnc"
-                ],
-                "type": "object",
-                "x-etsi-ref": "6.5.5"
-              }
-            },
-            "required": [
-              "plmn",
-              "cellId"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.6"
+          "appInstanceId": {
+            "type": "string",
+            "description": "Unique identifier for the MEC application instance."
           },
-          "ueInfo": {
-            "description": "Information on UEs in the specific cell as defined below.",
+          "cellUserInfo": {
+            "type": "array",
             "items": {
+              "title": "CellUserInfo",
+              "type": "object",
+              "required": [
+                "ecgi",
+                "ueInfo"
+              ],
               "properties": {
-                "associateId": {
-                  "description": "0 to N identifiers to associate the event for a specific UE or flow.",
+                "ecgi": {
+                  "title": "Ecgi",
+                  "required": [
+                    "cellId",
+                    "plmn"
+                  ],
+                  "type": "object",
+                  "properties": {
+                    "cellId": {
+                      "type": "string",
+                      "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                    },
+                    "plmn": {
+                      "title": "Plmn",
+                      "required": [
+                        "mcc",
+                        "mnc"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "mcc": {
+                          "type": "string",
+                          "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                        },
+                        "mnc": {
+                          "type": "string",
+                          "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                        }
+                      }
+                    }
+                  }
+                },
+                "ueInfo": {
+                  "type": "array",
                   "items": {
+                    "title": "UeInfo",
+                    "type": "object",
+                    "required": [
+                      "erabInfo"
+                    ],
                     "properties": {
-                      "type": {
-                        "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.",
-                        "type": "number",
-                        "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "Enum"
+                      "associateId": {
+                        "type": "array",
+                        "items": {
+                          "title": "AssociateId",
+                          "type": "object",
+                          "properties": {
+                            "type": {
+                              "title": "Type",
+                              "enum": [
+                                0,
+                                1,
+                                2,
+                                3,
+                                4
+                              ],
+                              "type": "integer",
+                              "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                              "examples": [
+                                0
+                              ]
+                            },
+                            "value": {
+                              "type": "string",
+                              "description": "Value for the identifier."
+                            }
+                          }
+                        },
+                        "description": "0 to N identifiers to associate the event for a specific UE or flow."
                       },
-                      "value": {
-                        "description": "Value for the identifier.",
-                        "type": "string",
-                        "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
+                      "erabInfo": {
+                        "type": "array",
+                        "items": {
+                          "title": "ErabInfo",
+                          "type": "object",
+                          "properties": {
+                            "erabId": {
+                              "type": "integer",
+                              "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
+                              "contentEncoding": "int32"
+                            },
+                            "erabQosParameters": {
+                              "title": "ErabQosParameters",
+                              "required": [
+                                "qci"
+                              ],
+                              "type": "object",
+                              "properties": {
+                                "qci": {
+                                  "type": "integer",
+                                  "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].",
+                                  "contentEncoding": "int32"
+                                },
+                                "qosInformation": {
+                                  "title": "QosInformation",
+                                  "required": [
+                                    "erabGbrDl",
+                                    "erabGbrUl",
+                                    "erabMbrDl",
+                                    "erabMbrUl"
+                                  ],
+                                  "type": "object",
+                                  "properties": {
+                                    "erabGbrDl": {
+                                      "type": "integer",
+                                      "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                                      "contentEncoding": "int32"
+                                    },
+                                    "erabGbrUl": {
+                                      "type": "integer",
+                                      "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                                      "contentEncoding": "int32"
+                                    },
+                                    "erabMbrDl": {
+                                      "type": "integer",
+                                      "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                                      "contentEncoding": "int32"
+                                    },
+                                    "erabMbrUl": {
+                                      "type": "integer",
+                                      "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                                      "contentEncoding": "int32"
+                                    }
+                                  },
+                                  "description": "The QoS information for the E-RAB."
+                                }
+                              },
+                              "description": "QoS parameters for the E-RAB as defined below."
+                            }
+                          }
+                        },
+                        "description": "Information on E-RAB as defined below."
                       }
-                    },
-                    "required": [
-                      "type",
-                      "value"
-                    ],
-                    "type": "object",
-                    "x-etsi-ref": "6.5.4"
-                  },
-                  "type": "array",
-                  "x-etsi-mec-cardinality": "0..N",
-                  "x-etsi-mec-origin-type": "AssociateId"
-                },
-                "erabInfo": {
-                  "description": "Information on E-RAB as defined below.",
-                  "items": {
-                    "type": "object"
-                  },
-                  "properties": {
-                    "erabId": {
-                      "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
-                      "type": "integer",
-                      "x-etsi-mec-cardinality": "1",
-                      "x-etsi-mec-origin-type": "Integer"
-                    },
-                    "erabQosParameters": {
-                      "description": "QoS parameters for the E-RAB as defined below.",
-                      "type": "object",
-                      "x-etsi-mec-cardinality": "0..1",
-                      "x-etsi-mec-origin-type": "Structure (inlined)"
                     }
                   },
-                  "required": [
-                    "erabId"
-                  ],
-                  "type": "array",
-                  "x-etsi-mec-cardinality": "1..N",
-                  "x-etsi-mec-origin-type": "Structure (inlined)"
+                  "description": "Information on UEs in the specific cell as defined below."
                 }
-              },
-              "type": "object"
+              }
             },
+            "description": "The information on users per cell as defined below."
+          },
+          "requestId": {
+            "type": "string",
+            "description": "Unique identifier allocated by the service consumer for the RAB Information request."
+          },
+          "timeStamp": {
+            "title": "TimeStamp",
             "required": [
-              "erabInfo"
+              "nanoSeconds",
+              "seconds"
             ],
-            "type": "array",
-            "x-etsi-mec-cardinality": "1..N",
-            "x-etsi-mec-origin-type": "Structure (inlined)"
+            "type": "object",
+            "properties": {
+              "nanoSeconds": {
+                "type": "integer",
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
+              },
+              "seconds": {
+                "type": "integer",
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
+              }
+            }
           }
-        },
-        "type": "object",
-        "required": [
-          "ecgi",
-          "ueInfo"
-        ]
-      },
-      "type": "array",
-      "x-etsi-mec-cardinality": "0..N",
-      "x-etsi-mec-origin-type": "Structure (inlined)"
-    },
-    "requestId": {
-      "description": "Unique identifier allocated by the service consumer for the RAB Information request.",
-      "type": "string",
-      "x-etsi-mec-cardinality": "1",
-      "x-etsi-mec-origin-type": "String"
-    },
-    "timeStamp": {
-      "properties": {
-        "nanoSeconds": {
-          "type": "number"
-        },
-        "seconds": {
-          "type": "number"
         }
-      },
-      "required": [
-        "seconds",
-        "nanoSeconds"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.3"
-    }
-  }
-}
+      }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json
index c0cd6eceb437779d81730c1af1340c0e6f885d83..679ac23270c5743dadfe3166b91fb5b20870c982 100644
--- a/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json
+++ b/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json
@@ -1,123 +1,199 @@
 {
-        "properties": {
-          "associateId": {
-            "description": "0 to N identifiers to bind the event for a specific UE or flow. ",
-            "items": {
-              "properties": {
-                "type": {
-                  "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.",
-                  "enum": [
-                    "SEE_DESCRIPTION"
-                  ],
-                  "type": "string",
-                  "x-etsi-mec-cardinality": "1",
-                  "x-etsi-mec-origin-type": "Enum"
-                },
-                "value": {
-                  "description": "Value for the identifier.",
-                  "type": "string",
-                  "x-etsi-mec-cardinality": "1",
-                  "x-etsi-mec-origin-type": "String"
-                }
-              },
-              "required": [
-                "type",
-                "value"
-              ],
-              "type": "object",
-              "x-etsi-ref": "6.5.4"
+        "title": "RabModNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
             },
-            "type": "array",
-            "x-etsi-mec-cardinality": "0..N",
-            "x-etsi-mec-origin-type": "AssociateId"
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
           },
-          "ecgi": {
+          {
+            "required": [
+              "ecgi",
+              "erabId",
+              "_links"
+            ],
+            "type": "object",
             "properties": {
-              "cellId": {
-                "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-                "type": "string"
+              "associateId": {
+                "type": "array",
+                "items": {
+                  "title": "AssociateId",
+                  "type": "object",
+                  "properties": {
+                    "type": {
+                      "title": "Type",
+                      "enum": [
+                        0,
+                        1,
+                        2,
+                        3,
+                        4
+                      ],
+                      "type": "integer",
+                      "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                      "examples": [
+                        0
+                      ]
+                    },
+                    "value": {
+                      "type": "string",
+                      "description": "Value for the identifier."
+                    }
+                  }
+                },
+                "description": "0 to N identifiers to bind the event for a specific UE or flow."
               },
-              "plmn": {
+              "ecgi": {
+                "title": "Ecgi",
+                "required": [
+                  "cellId",
+                  "plmn"
+                ],
+                "type": "object",
                 "properties": {
-                  "mcc": {
-                    "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
+                  "cellId": {
                     "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
+                    "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
                   },
-                  "mnc": {
-                    "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                    "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
+                  "plmn": {
+                    "title": "Plmn",
+                    "required": [
+                      "mcc",
+                      "mnc"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "mcc": {
+                        "type": "string",
+                        "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "mnc": {
+                        "type": "string",
+                        "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                      }
+                    }
+                  }
+                }
+              },
+              "erabId": {
+                "type": "integer",
+                "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
+                "contentEncoding": "int32"
+              },
+              "erabQosParameters": {
+                "title": "ErabQosParameters2",
+                "required": [
+                  "qci"
+                ],
+                "type": "object",
+                "properties": {
+                  "qci": {
+                    "type": "integer",
+                    "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].",
+                    "contentEncoding": "int32"
+                  },
+                  "qosInformation": {
+                    "title": "QosInformation2",
+                    "required": [
+                      "erabGbrDl",
+                      "erabGbrUl",
+                      "erabMbrDl",
+                      "erabMbrUl"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "erabGbrDl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabGbrUl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabMbrDl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      },
+                      "erabMbrUl": {
+                        "type": "integer",
+                        "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.",
+                        "contentEncoding": "int32"
+                      }
+                    },
+                    "description": "The QoS Information for the E-RAB as defined below."
                   }
                 },
+                "description": "The QoS parameters for the E-RAB as defined below."
+              },
+              "timeStamp": {
+                "title": "TimeStamp",
                 "required": [
-                  "mcc",
-                  "mnc"
+                  "nanoSeconds",
+                  "seconds"
                 ],
                 "type": "object",
-                "x-etsi-ref": "6.5.5"
-              }
-            },
-            "required": [
-              "plmn",
-              "cellId"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.6"
-          },
-          "erabId": {
-            "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].",
-            "type": "integer",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "Integer"
-          },
-          "erabQosParameters": {
-            "description": "The QoS parameters for the E-RAB as defined below.",
-            "properties": {
-              "qci": {
-                "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].",
-                "type": "integer",
-                "x-etsi-mec-cardinality": "1",
-                "x-etsi-mec-origin-type": "Integer"
-              }
-            },
-            "required": [
-              "qci"
-            ],
-            "type": "object",
-            "x-etsi-mec-cardinality": "0..1",
-            "x-etsi-mec-origin-type": "Structure (inlined)"
-          },
-          "notificationType": {
-            "description": "Shall be set to \"RabModNotification\".",
-            "type": "string",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "String"
-          },
-          "timeStamp": {
-            "properties": {
-              "nanoSeconds": {
-                "type": "number"
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
               },
-              "seconds": {
-                "type": "number"
+              "_links": {
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                }
               }
-            },
-            "required": [
-              "seconds",
-              "nanoSeconds"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.3"
+            }
           }
-        },
-        "required": [
-          "notificationType",
-          "ecgi",
-          "erabId"
-        ],
-        "type": "object",
-        "x-etsi-ref": "6.4.4"
+        ]
       }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json
index 35efd72ec658459c7daa4e10a5203cb9aabe0b64..3bd04e8f42ed2ca985f48884b6c203da2f85341c 100644
--- a/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json
+++ b/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json
@@ -1,178 +1,189 @@
 {
   "type": "array",
   "items": {
-    "type": "object",
-    "properties": {
-      "s1UeIffo": {
-        "description": "1..N",
+        "title": "S1BearerInfo",
+        "required": [
+          "s1UeInfo"
+        ],
+        "type": "object",
         "properties": {
-          "associateId": {
-            "properties": {
-              "type": {
-                "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.",
-                "enum": [
-                  "SEE_DESCRIPTION"
-                ],
-                "type": "string",
-                "x-etsi-mec-cardinality": "1",
-                "x-etsi-mec-origin-type": "Enum"
-              },
-              "value": {
-                "description": "Value for the identifier.",
-                "type": "string",
-                "x-etsi-mec-cardinality": "1",
-                "x-etsi-mec-origin-type": "String"
-              }
-            },
-            "required": [
-              "type",
-              "value"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.4"
-          },
-          "ecgi": {
-            "properties": {
-              "cellId": {
-                "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].",
-                "type": "string"
-              },
-              "plmn": {
-                "properties": {
-                  "mcc": {
-                    "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                    "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
+          "s1UeInfo": {
+            "type": "array",
+            "items": {
+              "title": "S1UeInfo",
+              "type": "object",
+              "required": [
+                "associateId",
+                "ecgi",
+                "s1BearerInfoDetailed"
+              ],
+              "properties": {
+                "associateId": {
+                  "type": "array",
+                  "items": {
+                    "title": "AssociateId",
+                    "type": "object",
+                    "properties": {
+                      "type": {
+                        "title": "Type",
+                        "enum": [
+                          0,
+                          1,
+                          2,
+                          3,
+                          4
+                        ],
+                        "type": "integer",
+                        "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                        "examples": [
+                          0
+                        ]
+                      },
+                      "value": {
+                        "type": "string",
+                        "description": "Value for the identifier."
+                      }
+                    }
                   },
-                  "mnc": {
-                    "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].",
-                    "type": "string",
-                    "x-etsi-mec-cardinality": "1",
-                    "x-etsi-mec-origin-type": "String"
-                  }
+                  "description": "1 to N identifiers to associate the information for a specific UE or flow."
                 },
-                "required": [
-                  "mcc",
-                  "mnc"
-                ],
-                "type": "object",
-                "x-etsi-ref": "6.5.5"
-              }
-            },
-            "required": [
-              "plmn",
-              "cellId"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.6"
-          },
-          "s1BearerInfoDetailed": {
-            "description": "1..N",
-            "properties": {
-              "erabId": {
-                "description": "The attribute that uniquely identifies a S1 bearer for a specific UE,  as defined in ETSI TS 136 413 [i.3].",
-                "type": "integer",
-                "x-etsi-mec-cardinality": 1,
-                "x-etsi-mec-origin-type": "Integer"
-              },
-              "enbInfo": {
-                "description": "S1 bearer information on eNB",
-                "properties": {
-                  "ipAddress": {
-                    "type": "string",
-                    "description": "eNB transport layer address of this S1 bearer."
+                "ecgi": {
+                  "type": "array",
+                  "items": {
+                    "title": "Ecgi",
+                    "required": [
+                      "cellId",
+                      "plmn"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "cellId": {
+                        "type": "string",
+                        "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "plmn": {
+                        "title": "Plmn",
+                        "required": [
+                          "mcc",
+                          "mnc"
+                        ],
+                        "type": "object",
+                        "properties": {
+                          "mcc": {
+                            "type": "string",
+                            "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                          },
+                          "mnc": {
+                            "type": "string",
+                            "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                          }
+                        }
+                      }
+                    }
                   },
-                  "tunnelId": {
-                    "type": "string",
-                    "description": "eNB GTP-U TEID of this S1 bearer."
-                  }
+                  "description": "E-UTRAN Cell Global Identifier."
                 },
-                "required": [
-                  "ipAddress",
-                  "tunnelId"
-                ]
-              },
-              "sGwInfo": {
-                "properties": {
-                  "ipAddress": {
-                    "type": "string",
-                    "description": "SGW transport layer address of this S1 bearer."
+                "s1BearerInfoDetailed": {
+                  "type": "array",
+                  "items": {
+                    "title": "S1BearerInfoDetailed",
+                    "type": "object",
+                    "required": [
+                      "erabId",
+                      "erabInfo",
+                      "sGwInfo"
+                    ],
+                    "properties": {
+                      "enbInfo": {
+                        "title": "EnbInfo",
+                        "required": [
+                          "ipAddress",
+                          "tunnelId"
+                        ],
+                        "type": "object",
+                        "properties": {
+                          "ipAddress": {
+                            "type": "string",
+                            "description": "eNB transport layer address of this S1 bearer."
+                          },
+                          "tunnelId": {
+                            "type": "string",
+                            "description": "eNB GTP-U TEID of this S1 bearer."
+                          }
+                        },
+                        "description": "S1 bearer information on eNB side as defined below."
+                      },
+                      "erabId": {
+                        "type": "integer",
+                        "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].",
+                        "contentEncoding": "int32"
+                      },
+                      "sGwInfo": {
+                        "title": "SGwInfo",
+                        "required": [
+                          "ipAddress",
+                          "tunnelId"
+                        ],
+                        "type": "object",
+                        "properties": {
+                          "ipAddress": {
+                            "type": "string",
+                            "description": "SGW transport layer address of this S1 bearer."
+                          },
+                          "tunnelId": {
+                            "type": "string",
+                            "description": "SGW GTP-U TEID of this S1 bearer."
+                          }
+                        },
+                        "description": "S1 bearer information on GW side as defined below."
+                      }
+                    }
                   },
-                  "tunnelId": {
-                    "type": "string",
-                    "description": "SGW GTP-U TEID of this S1 bearer."
-                  }
+                  "description": "S1 bearer information as defined below."
                 },
-                "required": [
-                  "ipAddress",
-                  "tunnelId"
-                ]
+                "tempUeId": {
+                  "title": "TempUeId",
+                  "required": [
+                    "mmec",
+                    "mtmsi"
+                  ],
+                  "type": "object",
+                  "properties": {
+                    "mmec": {
+                      "type": "string",
+                      "description": "MMEC as defined in ETSI TS 136 413 [i.3]."
+                    },
+                    "mtmsi": {
+                      "type": "string",
+                      "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+                    }
+                  },
+                  "description": "The temporary identifier allocated for the specific UE as defined below."
+                }
               }
             },
+            "description": "Information on a specific UE as defined below."
+          },
+          "timeStamp": {
+            "title": "TimeStamp",
             "required": [
-              "erabId",
-              "enbInfo"
+              "nanoSeconds",
+              "seconds"
             ],
             "type": "object",
-            "x-etsi-mec-cardinality": "Structure (inlined)",
-            "x-etsi-mec-origin-type": "Structure (inlined)"
-          },
-          "tempUeId": {
-            "description": "0..1",
             "properties": {
-              "mmec": {
-                "description": "1",
-                "type": "string",
-                "x-etsi-mec-cardinality": "String",
-                "x-etsi-mec-origin-type": "String"
+              "nanoSeconds": {
+                "type": "integer",
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
               },
-              "mtmsi": {
-                "description": "1",
-                "type": "string",
-                "x-etsi-mec-cardinality": "String",
-                "x-etsi-mec-origin-type": "String"
+              "seconds": {
+                "type": "integer",
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "contentEncoding": "int32"
               }
-            },
-            "required": [
-              "mmec",
-              "mtmsi"
-            ],
-            "type": "object",
-            "x-etsi-mec-cardinality": "Structure (inlined)",
-            "x-etsi-mec-origin-type": "Structure (inlined)"
-          }
-        },
-        "required": [
-          "tempUeId",
-          "associateId",
-          "ecgi",
-          "s1BearerInfoDetailed"
-        ],
-        "type": "object",
-        "x-etsi-mec-cardinality": "Structure (inlined)",
-        "x-etsi-mec-origin-type": "Structure (inlined)"
-      },
-      "timeStamp": {
-        "properties": {
-          "nanoSeconds": {
-            "type": "number"
-          },
-          "seconds": {
-            "type": "number"
+            }
           }
-        },
-        "required": [
-          "seconds",
-          "nanoSeconds"
-        ],
-        "type": "object",
-        "x-etsi-ref": "6.5.3"
+        }
       }
-    },
-    "required": [
-      "s1UeInfo"
-    ],
-    "x-etsi-ref": "6.2.4"
-  }
 }
\ No newline at end of file
diff --git a/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..91009d3974fc5e0af4daf2c93c66ba5296f612a7
--- /dev/null
+++ b/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json
@@ -0,0 +1,243 @@
+{
+        "title": "S1BearerNotification",
+        "allOf": [
+          {
+            "title": "InlineNotification",
+            "required": [
+              "notificationType"
+            ],
+            "type": "object",
+            "properties": {
+              "notificationType": {
+                "type": "string"
+              }
+            },
+            "discriminator": {
+              "propertyName": "notificationType",
+              "mapping": {
+                "CaReconfNotification": "#/components/schemas/CaReconfNotification",
+                "CellChangeNotification": "#/components/schemas/CellChangeNotification",
+                "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification",
+                "MeasTaNotification": "#/components/schemas/MeasTaNotification",
+                "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification",
+                "RabEstNotification": "#/components/schemas/RabEstNotification",
+                "RabModNotification": "#/components/schemas/RabModNotification",
+                "RabRelNotification": "#/components/schemas/RabRelNotification",
+                "S1BearerNotification": "#/components/schemas/S1BearerNotification",
+                "ExpiryNotification": "#/components/schemas/ExpiryNotification",
+                "TestNotification": "#/components/schemas/TestNotification"
+              }
+            }
+          },
+          {
+            "required": [
+              "s1Event",
+              "s1UeInfo",
+              "_links"
+            ],
+            "type": "object",
+            "properties": {
+              "s1Event": {
+                "type": "integer",
+                "description": "The subscribed event that triggered this notification in S1BearerSubscription.",
+                "contentEncoding": "int32"
+              },
+              "s1UeInfo": {
+                "title": "S1UeInfo1",
+                "required": [
+                  "ecgi",
+                  "s1BearerInfo"
+                ],
+                "type": "object",
+                "properties": {
+                  "associateId": {
+                    "type": "array",
+                    "items": {
+                      "title": "AssociateId",
+                      "type": "object",
+                      "properties": {
+                        "type": {
+                          "title": "Type",
+                          "enum": [
+                            0,
+                            1,
+                            2,
+                            3,
+                            4
+                          ],
+                          "type": "integer",
+                          "description": "Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.",
+                          "examples": [
+                            0
+                          ]
+                        },
+                        "value": {
+                          "type": "string",
+                          "description": "Value for the identifier."
+                        }
+                      }
+                    },
+                    "description": "0 to N identifiers to associate the information for a specific UE or flow."
+                  },
+                  "ecgi": {
+                    "type": "array",
+                    "items": {
+                      "title": "Ecgi",
+                      "required": [
+                        "cellId",
+                        "plmn"
+                      ],
+                      "type": "object",
+                      "properties": {
+                        "cellId": {
+                          "type": "string",
+                          "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+                        },
+                        "plmn": {
+                          "title": "Plmn",
+                          "required": [
+                            "mcc",
+                            "mnc"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "mcc": {
+                              "type": "string",
+                              "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            },
+                            "mnc": {
+                              "type": "string",
+                              "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]."
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "description": "E-UTRAN Cell Global Identifier."
+                  },
+                  "s1BearerInfo": {
+                    "type": "array",
+                    "items": {
+                      "title": "S1BearerInfo1",
+                      "type": "object",
+                      "required": [
+                        "enbInfo",
+                        "erabId",
+                        "sGwInfo"
+                      ],
+                      "properties": {
+                        "enbInfo": {
+                          "title": "EnbInfo",
+                          "required": [
+                            "ipAddress",
+                            "tunnelId"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "ipAddress": {
+                              "type": "string",
+                              "description": "eNB transport layer address of this S1 bearer."
+                            },
+                            "tunnelId": {
+                              "type": "string",
+                              "description": "eNB GTP-U TEID of this S1 bearer."
+                            }
+                          },
+                          "description": "S1 bearer information on eNB side as defined below."
+                        },
+                        "erabId": {
+                          "type": "integer",
+                          "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].",
+                          "contentEncoding": "int32"
+                        },
+                        "sGwInfo": {
+                          "title": "SGwInfo",
+                          "required": [
+                            "ipAddress",
+                            "tunnelId"
+                          ],
+                          "type": "object",
+                          "properties": {
+                            "ipAddress": {
+                              "type": "string",
+                              "description": "SGW transport layer address of this S1 bearer."
+                            },
+                            "tunnelId": {
+                              "type": "string",
+                              "description": "SGW GTP-U TEID of this S1 bearer."
+                            }
+                          },
+                          "description": "S1 bearer information on GW side as defined below."
+                        }
+                      }
+                    },
+                    "description": "S1 bearer information as defined below."
+                  },
+                  "tempUeId": {
+                    "title": "TempUeId",
+                    "required": [
+                      "mmec",
+                      "mtmsi"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "mmec": {
+                        "type": "string",
+                        "description": "MMEC as defined in ETSI TS 136 413 [i.3]."
+                      },
+                      "mtmsi": {
+                        "type": "string",
+                        "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+                      }
+                    },
+                    "description": "The temporary identifier allocated for the specific UE as defined below."
+                  }
+                },
+                "description": "Information on specific UE that matches the criteria in S1BearerSubscription as defined below."
+              },
+              "timeStamp": {
+                "title": "TimeStamp",
+                "required": [
+                  "nanoSeconds",
+                  "seconds"
+                ],
+                "type": "object",
+                "properties": {
+                  "nanoSeconds": {
+                    "type": "integer",
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  },
+                  "seconds": {
+                    "type": "integer",
+                    "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                    "contentEncoding": "int32"
+                  }
+                }
+              },
+              "_links": {
+                "description": "Links to resources related to this notification.",
+                "required": [
+                  "subscription"
+                ],
+                "properties": {
+                  "subscription": {
+                    "description": "A link to the related subscription.",
+                    "title": "LinkType",
+                    "required": [
+                      "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                      "href": {
+                        "type": "string",
+                        "description": "URI referring to a resource"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot b/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot
index 11e4ced2ca1235839ea32e06ed1c02503ab6695b..4ad2c8b3c0dd1f9a4fb910d9334bb79be18ad9a9 100644
--- a/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot
+++ b/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot
@@ -14,35 +14,77 @@ Default Tags    TC_MEC_SRV_RLOCLOOK
 
 *** Test Cases ***
 
+
 TC_MEC_MEC013_SRV_RLOCLOOK_001_OK
     [Documentation]
     ...    Check that the IUT responds with the list of radio nodes currently associated with the MEC host and the location of each radio node
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.7
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/AccessPointList
+    ...    Reference
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.2.1
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.9.3.1
 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    INCLUDE_UNDEFINED_SCHEMAS
-    Get the access points list        ${ZONE_ID}
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    
+    Get the access points list by zone identifier    ${ZONE_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    AccessPointList
-    Should Be Equal As Strings    ${response['body']['accessPointList']['zoneId']}    ${ZONE_ID}
+    Should Be Equal As Strings    ${response['body']['zoneId']}    ${ZONE_ID}
+
 
 
 TC_MEC_MEC013_SRV_RLOCLOOK_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
+    ...    a request for an URI that cannot be mapped to a valid resource URI
+    ...    is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.7
+    ...    Reference
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.2.1
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.9.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get the access points list        ${NON_EXISTENT_ZONE_ID}
+    Get the access points list by zone identifier       ${NON_EXISTENT_ZONE_ID}
     Check HTTP Response Status Code Is    404
     
 
+
+TC_MEC_MEC013_SRV_RLOCLOOK_002_OK
+    [Documentation]
+    ...    Check that the IUT responds with the radio nodes when queried 
+    ...    by a MEC Application
+    ...
+    ...    Reference
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.2.1
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.10.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    
+    Get the access points list by zone identifier and access point  ${ZONE_ID}    ${AP_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    AccessPointList
+    Should Be Equal As Strings    ${response['body']['zoneId']}    ${ZONE_ID}
+    Should Be Equal As Strings    ${response['body']['accessPoint'][0]['accessPointId']}    ${AP_ID}
+
+
+TC_MEC_MEC013_SRV_RLOCLOOK_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error when the 
+    ...    radio nodes does not exist
+    ...
+    ...    Reference
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.2.1
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.10.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    
+    Get the access points list by zone identifier and access point  ${ZONE_ID}    ${NON_EXISTENT_AP_ID}
+    Check HTTP Response Status Code Is    404
+
+
 *** Keywords ***
-Get the access points list 
+Get the access points list by zone identifier
     [Arguments]    ${zoneId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
@@ -51,5 +93,13 @@ Get the access points list
     Set Suite Variable    ${response}    ${output}
 
 
+Get the access points list by zone identifier and access point
+    [Arguments]    ${zoneId}    ${accessPointId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/zones/${zoneId}/accessPoints/${accessPointId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
 
 
diff --git a/MEC013/SRV/RLOCLOOK/environment/variables.txt b/MEC013/SRV/RLOCLOOK/environment/variables.txt
index a9bf262d487dcf1465071bbaa445ce33425ffcd5..58b70406b3a4892714c95f4a3cbfea992eb05c70 100644
--- a/MEC013/SRV/RLOCLOOK/environment/variables.txt
+++ b/MEC013/SRV/RLOCLOOK/environment/variables.txt
@@ -1,14 +1,16 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
 # Specific variables
 ${ZONE_ID}                    5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
 ${NON_EXISTENT_ZONE_ID}       NON_EXISTENT_ZONE_ID
+${AP_ID}                      ap01
+${NON_EXISTENT_AP_ID}         NON_EXISTENT_AP_ID
\ No newline at end of file
diff --git a/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json b/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json
index 2a37408f034eacecfab37db3eb2aad2d9e503676..f321b15e6f9f2fc1e8d8b60992b6d716a9455eab 100644
--- a/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json
+++ b/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json
@@ -1,270 +1,255 @@
 {
-	"accessPointList": {
-		"description": "A type containing list of access points.",
-		"properties": {
-			"accessPoint": {
-				"description": "Collection of the access point information list.",
-				"items": {
-					"description": "A type containing access point information.",
-					"properties": {
-						"accessPointId": {
-							"description": "Identifier of access point.",
-							"type": "string",
-							"x-etsi-mec-cardinality": 1,
-							"x-etsi-mec-origin-type": "string"
-						},
-						"connectionType": {
-							"description": "The connection type for the access point",
-							"enum": [
-								"Femto",
-								"LTE-femto",
-								"Smallcell",
-								"LTE-smallcell",
-								"Wifi",
-								"Pico",
-								"Micro",
-								"Macro",
-								"Wimax",
-								"Unknown"
-							],
-							"type": "string"
-						},
-						"interestRealm": {
-							"description": "Interest realm of access point.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "string"
-						},
-						"locationInfo": {
-							"properties": {
-								"accuracy": {
-									"description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"accuracyAltitude": {
-									"description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"accuracySemiMinor": {
-									"description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"altitude": {
-									"description": "Location altitude relative to the WGS84 ellipsoid surface.",
-									"format": "float",
-									"type": "number",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "Float"
-								},
-								"confidence": {
-									"description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"includedAngle": {
-									"description": "Present only if \"shape\" equals 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"innerRadius": {
-									"description": "Present only if \"shape\" equals 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"latitude": {
-									"description": "Location latitude, expressed in the range -90� to +90�. Cardinality greater than one only if \"shape\" equals 7.",
-									"items": {
-										"format": "float",
-										"type": "number"
-									},
-									"minItems": 1,
-									"type": "array",
-									"x-etsi-mec-cardinality": "1..N",
-									"x-etsi-mec-origin-type": "Float"
-								},
-								"longitude": {
-									"description": "Location longitude, expressed in the range -180� to +180�. Cardinality greater than one only if \"shape\" equals 7.",
-									"items": {
-										"format": "float",
-										"type": "number"
-									},
-									"minItems": 1,
-									"type": "array",
-									"x-etsi-mec-cardinality": "1..N",
-									"x-etsi-mec-origin-type": "Float"
-								},
-								"offsetAngle": {
-									"description": "Present only if \"shape\" equals 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"orientationMajorAxis": {
-									"description": "Angle of orientation of the major axis, expressed in the range 0� to 180�, as defined in [14]. Present only if \"shape\" equals 4 or 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"shape": {
-									"description": "Shape information, as detailed in [14], associated with the reported location coordinate: <p>1 = ELLIPSOID_ARC <p>2 = ELLIPSOID_POINT <p>3 = ELLIPSOID_POINT_ALTITUDE <p>4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID <p>5 = ELLIPSOID_POINT_UNCERT_CIRCLE <p>6 = ELLIPSOID_POINT_UNCERT_ELLIPSE <p>7 = POLYGON",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "1",
-									"x-etsi-mec-origin-type": "Enum_inlined"
-								},
-								"timestamp": {
-									"properties": {
-										"nanoSeconds": {
-											"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-											"format": "int32",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "1",
-											"x-etsi-mec-origin-type": "Uint32"
-										},
-										"seconds": {
-											"description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-											"format": "int32",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "1",
-											"x-etsi-mec-origin-type": "Uint32"
-										}
-									},
-									"required": [
-										"seconds",
-										"nanoSeconds"
-									],
-									"type": "object",
-									"x-etsi-ref": "6.5.2"
-								},
-								"uncertaintyRadius": {
-									"description": "Present only if \"shape\" equals 6",
-									"type": "integer",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "UnsignedInt"
-								},
-								"velocity": {
-									"description": "Structure with attributes relating to the target entity's velocity, as defined in [14].",
-									"properties": {
-										"bearing": {
-											"description": "Bearing, expressed in the range 0 deg to 360 deg, as defined in [14].",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "1",
-											"x-etsi-mec-origin-type": "UnsignedInt"
-										},
-										"horizontalSpeed": {
-											"description": "Horizontal speed, expressed in km/h and defined in [14].",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "1",
-											"x-etsi-mec-origin-type": "UnsignedInt"
-										},
-										"uncertainty": {
-											"description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "0..1",
-											"x-etsi-mec-origin-type": "UnsignedInt"
-										},
-										"velocityType": {
-											"description": "Velocity information, as detailed in [14], associated with the reported location coordinate: <p>1 = HORIZONTAL <p>2 = HORIZONTAL_VERTICAL <p>3 = HORIZONTAL_UNCERT <p>4 = HORIZONTAL_VERTICAL_UNCERT",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "1",
-											"x-etsi-mec-origin-type": "Enum_inlined"
-										},
-										"verticalSpeed": {
-											"description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "0..1",
-											"x-etsi-mec-origin-type": "Int"
-										},
-										"verticalUncertainty": {
-											"description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4",
-											"type": "integer",
-											"x-etsi-mec-cardinality": "0..1",
-											"x-etsi-mec-origin-type": "UnsignedInt"
-										}
-									},
-									"required": [
-										"velocityType",
-										"bearing",
-										"horizontalSpeed"
-									],
-									"type": "object",
-									"x-etsi-mec-cardinality": "0..1",
-									"x-etsi-mec-origin-type": "Structure (inlined)"
-								}
-							},
-							"required": [
-								"latitude",
-								"longitude",
-								"shape"
-							],
-							"type": "object",
-							"x-etsi-ref": "6.5.3"
-						},
-						"numberOfUsers": {
-							"description": "Number of users currently on the access point.",
-							"type": "integer",
-							"x-etsi-mec-cardinality": 1,
-							"x-etsi-mec-origin-type": "integer"
-						},
-						"operationStatus": {
-							"enum": [
-								"Serviceable",
-								"Unserviceable",
-								"Unknown"
-							],
-							"type": "string"
-						},
-						"resourceURL": {
-							"description": "Self referring URL",
-							"type": "string",
-							"x-etsi-mec-cardinality": 1,
-							"x-etsi-mec-origin-type": "anyURI"
-						},
-						"timezone": {
-							"description": "Time zone of access point.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "dateTimeStamp"
-						}
-					},
-					"required": [
-						"accessPointId",
-						"connectionType",
-						"operationStatus",
-						"numberOfUsers",
-						"resourceURL"
-					],
-					"type": "object"
-				},
-				"type": "array",
-				"x-etsi-mec-cardinality": "0..N",
-				"x-etsi-mec-origin-type": "AccessPointInfo"
-			},
-			"resourceURL": {
-				"description": "Self referring URL",
-				"type": "string",
-				"x-etsi-mec-cardinality": 1,
-				"x-etsi-mec-origin-type": "anyURI"
-			},
-			"zoneId": {
-				"description": "Identifier of zone",
-				"type": "string",
-				"x-etsi-mec-cardinality": 1,
-				"x-etsi-mec-origin-type": "string"
-			}
-		},
-		"required": [
-			"zoneId",
-			"resourceURL"
-		],
-		"type": "object"
-	}
-}
\ No newline at end of file
+                "description": "A type containing list of access points.",
+                "properties": {
+                    "accessPoint": {
+                        "description": "Collection of the access point information list.",
+                        "items": {
+                            "description": "A type containing access point information.",
+                            "properties": {
+                                "accessPointId": {
+                                    "description": "Identifier of access point.",
+                                    "type": "string",
+                                    "x-etsi-mec-cardinality": 1,
+                                    "x-etsi-mec-origin-type": "string"
+                                },
+                                "connectionType": {
+                                    "description": "This enumeration represents the connection type of an access point",
+                                    "enum": [
+                                        "LTE",
+                                        "Wifi",
+                                        "Wimax",
+                                        "5G NR",
+                                        "UNKNOWN"
+                                    ],
+                                    "type": "string"
+                                },
+                                "interestRealm": {
+                                    "description": "Interest realm of access point.",
+                                    "type": "string",
+                                    "x-etsi-mec-cardinality": "0..1",
+                                    "x-etsi-mec-origin-type": "string"
+                                },
+                                "locationInfo": {
+                                    "properties": {
+                                        "accuracy": {
+                                            "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "accuracyAltitude": {
+                                            "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "accuracySemiMinor": {
+                                            "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "altitude": {
+                                            "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                                            "format": "float",
+                                            "type": "number",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "Float"
+                                        },
+                                        "confidence": {
+                                            "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "includedAngle": {
+                                            "description": "Present only if \"shape\" equals 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "innerRadius": {
+                                            "description": "Present only if \"shape\" equals 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "latitude": {
+                                            "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                                            "format": "float",
+                                            "items": {
+                                                "type": "number"
+                                            },
+                                            "minItems": 1,
+                                            "type": "array",
+                                            "x-etsi-mec-cardinality": "1..N",
+                                            "x-etsi-mec-origin-type": "Float"
+                                        },
+                                        "longitude": {
+                                            "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                                            "format": "float",
+                                            "items": {
+                                                "type": "number"
+                                            },
+                                            "minItems": 1,
+                                            "type": "array",
+                                            "x-etsi-mec-cardinality": "1..N",
+                                            "x-etsi-mec-origin-type": "Float"
+                                        },
+                                        "offsetAngle": {
+                                            "description": "Present only if \"shape\" equals 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "orientationMajorAxis": {
+                                            "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "shape": {
+                                            "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                                            "enum": [
+                                                1,
+                                                2,
+                                                3,
+                                                4,
+                                                5,
+                                                6,
+                                                7
+                                            ],
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "1",
+                                            "x-etsi-mec-origin-type": "Enum_inlined"
+                                        },
+                                        "uncertaintyRadius": {
+                                            "description": "Present only if \"shape\" equals 6.",
+                                            "type": "integer",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "UnsignedInt"
+                                        },
+                                        "velocity": {
+                                            "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                                            "properties": {
+                                                "bearing": {
+                                                    "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "1",
+                                                    "x-etsi-mec-origin-type": "UnsignedInt"
+                                                },
+                                                "horizontalSpeed": {
+                                                    "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "1",
+                                                    "x-etsi-mec-origin-type": "UnsignedInt"
+                                                },
+                                                "uncertainty": {
+                                                    "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "0..1",
+                                                    "x-etsi-mec-origin-type": "UnsignedInt"
+                                                },
+                                                "velocityType": {
+                                                    "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                                                    "enum": [
+                                                        1,
+                                                        2,
+                                                        3,
+                                                        4
+                                                    ],
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "1",
+                                                    "x-etsi-mec-origin-type": "Enum_inlined"
+                                                },
+                                                "verticalSpeed": {
+                                                    "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "0..1",
+                                                    "x-etsi-mec-origin-type": "Int"
+                                                },
+                                                "verticalUncertainty": {
+                                                    "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                                                    "type": "integer",
+                                                    "x-etsi-mec-cardinality": "0..1",
+                                                    "x-etsi-mec-origin-type": "UnsignedInt"
+                                                }
+                                            },
+                                            "required": [
+                                                "velocityType",
+                                                "bearing",
+                                                "horizontalSpeed"
+                                            ],
+                                            "type": "object",
+                                            "x-etsi-mec-cardinality": "0..1",
+                                            "x-etsi-mec-origin-type": "Structure (inlined)"
+                                        }
+                                    },
+                                    "required": [
+                                        "latitude",
+                                        "longitude",
+                                        "shape"
+                                    ],
+                                    "type": "object",
+                                    "x-etsi-ref": "6.5.3"
+                                },
+                                "numberOfUsers": {
+                                    "description": "Number of users currently on the access point.",
+                                    "type": "integer",
+                                    "x-etsi-mec-cardinality": 1,
+                                    "x-etsi-mec-origin-type": "integer"
+                                },
+                                "operationStatus": {
+                                    "description": "An enumeration defining the operations status of an access point.",
+                                    "enum": [
+                                        "Serviceable",
+                                        "Unserviceable",
+                                        "Unknown"
+                                    ],
+                                    "type": "string"
+                                },
+                                "resourceURL": {
+                                    "description": "Self referring URL",
+                                    "type": "string",
+                                    "x-etsi-mec-cardinality": 1,
+                                    "x-etsi-mec-origin-type": "anyURI"
+                                },
+                                "timezone": {
+                                    "description": "Time zone of access point.",
+                                    "type": "string",
+                                    "x-etsi-mec-cardinality": "0..1",
+                                    "x-etsi-mec-origin-type": "dateTimeStamp"
+                                }
+                            },
+                            "required": [
+                                "accessPointId",
+                                "connectionType",
+                                "operationStatus",
+                                "numberOfUsers",
+                                "resourceURL"
+                            ],
+                            "type": "object"
+                        },
+                        "type": "array",
+                        "x-etsi-mec-cardinality": "0..N",
+                        "x-etsi-mec-origin-type": "AccessPointInfo"
+                    },
+                    "resourceURL": {
+                        "description": "Self referring URL",
+                        "type": "string",
+                        "x-etsi-mec-cardinality": 1,
+                        "x-etsi-mec-origin-type": "anyURI"
+                    },
+                    "zoneId": {
+                        "description": "Identifier of zone",
+                        "type": "string",
+                        "x-etsi-mec-cardinality": 1,
+                        "x-etsi-mec-origin-type": "string"
+                    }
+                },
+                "required": [
+                    "zoneId",
+                    "resourceURL"
+                ],
+                "type": "object"
+            }
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREALOOK/PlatUeAreaLookup.robot b/MEC013/SRV/UEAREALOOK/PlatUeAreaLookup.robot
new file mode 100644
index 0000000000000000000000000000000000000000..153174ec96f124e6bbee92f86995911a4afee777
--- /dev/null
+++ b/MEC013/SRV/UEAREALOOK/PlatUeAreaLookup.robot
@@ -0,0 +1,143 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating UE Area Lookup (UEAREALOOK) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    ../../../pics.txt
+Resource    environment/variables.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem 
+Library     String
+
+Default Tags    TC_MEC_SRV_UEAREASUB
+
+
+
+*** Test Cases ***
+TC_MEC_MEC013_SRV_UEAREALOOK_001_OK_01
+    [Documentation]
+    ...    Check that the IUT responds with a list of UE area subscriptions 
+    ...    when queried by a MEC Application - No filter
+    ...
+    ...    Reference   ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.16.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id    UserAreaSubscription
+    Get all Subscriptions
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    Check HTTP Response Status Code Is    200
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    UserAreaSubscription
+    [TearDown]   Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEAREALOOK_001_OK_02
+    [Documentation]
+    ...    Check that the IUT responds with a list of UE area subscriptions 
+    ...    when queried by a MEC Application - No filter
+    ...
+    ...    Reference   ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.16.3.4
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id    UserAreaSubscription
+    Get all Subscriptions with filter  ${SUB_TYPE_FILTER}
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    Check HTTP Response Status Code Is    200
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    UserAreaSubscription
+    [TearDown]   Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEAREALOOK_002_OK
+    [Documentation]
+    ...    Check that the IUT acknowledges the change of UE area subscription request 
+    ...    when commanded by a MEC Application
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.17.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id    UserAreaSubscription
+    Get specific Subscription  ${SUB_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserAreaNotification
+    Should be Equal   ${response['body']['notificationType']}    UserAreaNotification  
+    [TearDown]   Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEAREALOOK_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.17.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Remove subscription    ${NON_EXISTING_SUBSCRIPTION_ID}
+    Get specific Subscription  ${NON_EXISTING_SUBSCRIPTION_ID}
+    Check HTTP Response Status Code Is    404
+
+
+
+*** Keywords ***
+Create new subscription and get sub id
+    [Arguments]    ${content}    
+    Create new subscription     ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]} 
+         
+
+Get all Subscriptions
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get specific Subscription
+    [Arguments]    ${subscriptionId}   
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Get all Subscriptions with filter
+    [Arguments]    ${filter}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area?subscription_type=${filter}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Create new subscription
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Log     ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Remove subscription
+    [Arguments]    ${subscriptionId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
diff --git a/MEC013/SRV/ZOINFOLOOK/README.md b/MEC013/SRV/UEAREALOOK/README.md
similarity index 100%
rename from MEC013/SRV/ZOINFOLOOK/README.md
rename to MEC013/SRV/UEAREALOOK/README.md
diff --git a/MEC013/SRV/UEAREALOOK/environment/variables.txt b/MEC013/SRV/UEAREALOOK/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1956375a166b73927cc7afff63d7eb7e7d2c2438
--- /dev/null
+++ b/MEC013/SRV/UEAREALOOK/environment/variables.txt
@@ -0,0 +1,14 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                   http
+${HOST}                     127.0.0.1
+${PORT}                     8081
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}        location
+${apiVersion}     v3
+
+${SUB_TYPE_FILTER}                 event
+${SUB_TYPE_FILTER_ERROR}           dummy
+${NON_EXISTING_SUBSCRIPTION_ID}    NON_EXISTING_SUBSCRIPTION_ID
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREALOOK/jsons/UserAreaSubscription.json b/MEC013/SRV/UEAREALOOK/jsons/UserAreaSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d710e73a7169980507255735f894b3df8d30bd3
--- /dev/null
+++ b/MEC013/SRV/UEAREALOOK/jsons/UserAreaSubscription.json
@@ -0,0 +1,18 @@
+{
+    "subscriptionType": "UserAreaSubscription",
+    "callbackReference" :"somecallback",
+    "areaDefine": {
+        "shape": 1,
+        "points": [
+            {
+                "latitide": 50,
+                "longitude": 52
+            }
+        ],
+        "radius": 100
+    },
+    "addressList": [
+        "http://someuri.com/123"
+    ],
+    "trackingAccuracy": 99
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREALOOK/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEAREALOOK/schemas/NotificationSubscriptionList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b245317effbe3f5a5e90afcf44f372bba29e50c
--- /dev/null
+++ b/MEC013/SRV/UEAREALOOK/schemas/NotificationSubscriptionList.schema.json
@@ -0,0 +1,55 @@
+{
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREALOOK/schemas/UserAreaNotification.schema.json b/MEC013/SRV/UEAREALOOK/schemas/UserAreaNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..42d19dea617e06a378a9d0dccdd609ed5685f1f5
--- /dev/null
+++ b/MEC013/SRV/UEAREALOOK/schemas/UserAreaNotification.schema.json
@@ -0,0 +1,539 @@
+{
+    "properties": {
+        "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+                "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                }
+            },
+            "required": [
+                "href"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+        },
+        "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uri"
+        },
+        "civicInfo": {
+            "description": "Indicates a Civic address",
+            "type": "object",
+            "required": [
+                "country"
+            ],
+            "properties": {
+                "country": {
+                    "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": 1,
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A1": {
+                    "description": "National subdivisions (state, canton, region, province, prefecture)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A2": {
+                    "description": "County, parish, gun (JP), district (IN)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A3": {
+                    "description": "City, township, shi (JP)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A4": {
+                    "description": "City division, borough, city district, ward, chou (JP)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A5": {
+                    "description": "Neighbourhood, block",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "A6": {
+                    "description": "Group of streets below the neighbourhood level",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "PRD": {
+                    "description": "Leading street direction",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "POD": {
+                    "description": "Trailing street suffix",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "STS": {
+                    "description": "Street suffix or type",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "HNO": {
+                    "description": "House number",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "HNS": {
+                    "description": "House number suffix",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "LMK": {
+                    "description": "Landmark or vanity address",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "LOC": {
+                    "description": "Additional location information",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "NAM": {
+                    "description": "Name (residence and office occupant)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "PC": {
+                    "description": "Postal/zip code",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "BLD": {
+                    "description": "Building (structure)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "UNIT": {
+                    "description": "Unit (apartment, suite)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "FLR": {
+                    "description": "Floor",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "ROOM": {
+                    "description": "Room",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "PLC": {
+                    "description": "Place-type",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "PCN": {
+                    "description": "Postal community name",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "POBOX": {
+                    "description": "Post office box (P.O. box)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "ADDCODE": {
+                    "description": "Additional code",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "SEAT": {
+                    "description": "Seat (desk, cubicle, workstation)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "RD": {
+                    "description": "Primary road or street",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "RDSEC": {
+                    "description": "Road clause",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "RDBR": {
+                    "description": "Road branch",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "RDSUBBR": {
+                    "description": "Road sub-branch",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "PRM": {
+                    "description": "Road pre-modifier",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "POM": {
+                    "description": "Road post-modifier",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "usageRules": {
+                    "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "method": {
+                    "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                },
+                "providedBy": {
+                    "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                }
+            }
+        },
+        "locationInfo": {
+            "properties": {
+                "accuracy": {
+                    "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "accuracyAltitude": {
+                    "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "accuracySemiMinor": {
+                    "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "altitude": {
+                    "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "confidence": {
+                    "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "includedAngle": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "innerRadius": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "latitude": {
+                    "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                    "format": "float",
+                    "items": {
+                        "type": "number"
+                    },
+                    "minItems": 1,
+                    "type": "array",
+                    "x-etsi-mec-cardinality": "1..N",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "longitude": {
+                    "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                    "format": "float",
+                    "items": {
+                        "type": "number"
+                    },
+                    "minItems": 1,
+                    "type": "array",
+                    "x-etsi-mec-cardinality": "1..N",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "offsetAngle": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "orientationMajorAxis": {
+                    "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "shape": {
+                    "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                    "enum": [
+                        1,
+                        2,
+                        3,
+                        4,
+                        5,
+                        6,
+                        7
+                    ],
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Enum_inlined"
+                },
+                "uncertaintyRadius": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                },
+                "velocity": {
+                    "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                    "properties": {
+                        "bearing": {
+                            "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "horizontalSpeed": {
+                            "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "uncertainty": {
+                            "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "velocityType": {
+                            "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                            "enum": [
+                                1,
+                                2,
+                                3,
+                                4
+                            ],
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "Enum_inlined"
+                        },
+                        "verticalSpeed": {
+                            "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Int"
+                        },
+                        "verticalUncertainty": {
+                            "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "UnsignedInt"
+                        }
+                    },
+                    "required": [
+                        "velocityType",
+                        "bearing",
+                        "horizontalSpeed"
+                    ],
+                    "type": "object",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Structure (inlined)"
+                }
+            },
+            "required": [
+                "latitude",
+                "longitude",
+                "shape"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.3"
+        },
+        "notificationType": {
+            "description": "Shall be set to \"UserAreaNotification\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+        },
+        "relativeLocationInfo": {
+            "properties": {
+                "X": {
+                    "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "Y": {
+                    "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "Z": {
+                    "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                },
+                "mapInfo": {
+                    "properties": {
+                        "ancillaryMapInfo": {
+                            "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                            "type": "object",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Not_specified"
+                        },
+                        "mapId": {
+                            "description": "Indicates the ID of the map. ",
+                            "type": "string",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "String"
+                        },
+                        "origin": {
+                            "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                            "properties": {
+                                "altitude": {
+                                    "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                                    "format": "float",
+                                    "type": "number",
+                                    "x-etsi-mec-cardinality": "0..1",
+                                    "x-etsi-mec-origin-type": "Float"
+                                },
+                                "latitude": {
+                                    "description": "Location latitude, expressed in the range -90° to +90°.",
+                                    "format": "float",
+                                    "type": "number",
+                                    "x-etsi-mec-cardinality": "1",
+                                    "x-etsi-mec-origin-type": "Float"
+                                },
+                                "longitude": {
+                                    "description": "Location longitude, expressed in the range -180° to +180°.",
+                                    "format": "float",
+                                    "type": "number",
+                                    "x-etsi-mec-cardinality": "1",
+                                    "x-etsi-mec-origin-type": "Float"
+                                }
+                            },
+                            "required": [
+                                "latitude",
+                                "longitude"
+                            ],
+                            "type": "object",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Structure(inlined)"
+                        }
+                    },
+                    "required": [
+                        "mapId"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.2.4"
+                }
+            },
+            "required": [
+                "mapInfo",
+                "X",
+                "Y"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.2.3"
+        },
+        "timeStamp": {
+            "properties": {
+                "nanoSeconds": {
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                    "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uint32"
+                }
+            },
+            "required": [
+                "seconds",
+                "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+        },
+        "userLocationEvent": {
+            "description": "This type represents specified event types for UE location report.",
+            "enum": [
+                "ENTERING_AREA_EVENT",
+                "LEAVING_AREA_EVENT"
+            ],
+            "type": "string"
+        }
+    },
+    "required": [
+        "notificationType",
+        "address",
+        "userLocationEvent",
+        "_links"
+    ],
+    "type": "object",
+    "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription.",
+    "x-etsi-ref": "6.4.8"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot b/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot
index 35eb1170e9699033bb5d03b61549fdac01096631..78baa86e9e94543e848c79736d9362dcc452ab18 100644
--- a/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot
+++ b/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot
@@ -6,9 +6,10 @@ Documentation
 Resource    ../../../GenericKeywords.robot
 Resource    ../../../pics.txt
 Resource    environment/variables.txt
+Library     libraries/Server.py
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
-
+Library     String
 Default Tags    TC_MEC_SRV_UEAREASUB
 
 
@@ -16,58 +17,73 @@ Default Tags    TC_MEC_SRV_UEAREASUB
 *** Test Cases ***
 TC_MEC_MEC013_SRV_UEAREASUB_001_OK
     [Documentation]
-    ...    Check that the IUT acknowledges the UE area change subscription request when
-    ...    commanded by a MEC Application and notifies it when the UE enters the specified circle
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.11
-    ...    OpenAPI    # TODO check this
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    INCLUDE_UNDEFINED_SCHEMAS
-    Create new subscription    CircleNotificationSubscription
+    ...    Check that the IUT acknowledges the creation of UE area subscription request when commanded by a MEC Application
+    ...    Reference ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.16.3.4
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Create new subscription    UserAreaNotification
     Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    CircleNotificationSubscription
-    Should Be Equal As Strings    ${response['body']['circleNotificationSubscription']['callbackReference']}        ${APP_UEAREASUB_CALLBACK_URI}
-    Should Be Equal As Strings    ${response['body']['circleNotificationSubscription']['address']}    ${IP_ADDRESS}
-    
+    Check HTTP Response Body Json Schema Is    UserAreaNotification
+    Should Be Equal As Strings    ${response['body']['notificationType']}    UserAreaNotification
+    Spawn Notification Server     UserAreaNotification
+    Validate Json   UserAreaNotification.schema.json    ${payload_notification}
 
 
+    
 TC_MEC_MEC013_SRV_UEAREASUB_001_BR
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.11
+    ...    Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - 
+    ...    Neither callbackReference nor websockNotifConfig provided
+    ...    Reference ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.16.3.4
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    CircleNotificationSubscriptionError
+    Create new subscription    UserAreaNotificationError
     Check HTTP Response Status Code Is    400
 
 
 TC_MEC_MEC013_SRV_UEAREASUB_002_OK
     [Documentation]
-    ...    Check that the IUT acknowledges the cancellation of UE area change notifications
-    ...    when commanded by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    204
+    ...    Check that the IUT acknowledges the change of UE area subscription request when commanded by a MEC Application
+    ...    Reference ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.17.3.2
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id   UserAreaNotification
+    Update subscription    ${SUB_ID}     UserAreaNotificationUpdate
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserAreaNotification
+    Should Be Equal As Strings    ${response['body']['notificationType']}    UserAreaNotification
+    [TearDown]   Remove subscription    ${SUB_ID}
+    
 
 
 TC_MEC_MEC013_SRV_UEAREASUB_002_NF
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request sent by a MEC Application doesn't comply with a required condition
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    ...    Check that the IUT acknowledges the change of UE area subscription request when commanded by a MEC Application
+    ...    Reference ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.17.3.2
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]    Remove subscription    ${NON_EXISTING_SUBSCRIPTION_ID}
+    Update subscription    ${NON_EXISTING_SUBSCRIPTION_ID}     UserAreaNotificationUpdate
     Check HTTP Response Status Code Is    404
 
 
 *** Keywords ***
+Create new subscription and get sub id
+    [Arguments]    ${content}    
+    Create new subscription     ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]} 
+
 Create new subscription
     [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
@@ -75,14 +91,30 @@ Create new subscription
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/circle    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    
+
+Update subscription
+    [Arguments]    ${subscription_id}    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/${subscription_id}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+        
 Remove subscription
     [Arguments]    ${subscriptionId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/circle/${subscriptionId}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/${subscriptionId}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
+    
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    Set Suite Variable    ${payload_notification}    ${output}
diff --git a/MEC013/SRV/UEAREASUB/environment/variables.txt b/MEC013/SRV/UEAREASUB/environment/variables.txt
index ffb1ccff26b9014d49edd028fc99599375b69fff..f9812b80c0b21a468b1f417fb258d79dea6e51b7 100644
--- a/MEC013/SRV/UEAREASUB/environment/variables.txt
+++ b/MEC013/SRV/UEAREASUB/environment/variables.txt
@@ -1,18 +1,22 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
+${SUB_ID}
+${NON_EXISTING_SUBSCRIPTION_ID}       NON_EXISTING_SUBSCRIPTION_ID
+
 
-# Specific variables
-${UEAREASUB_CLIENT_ID}                   0123
-${APP_UEAREASUB_CALLBACK_URI}            {"callbackData": "1234", "notifyURL": "http://application.example.com/notifications/distance_notifications/123456"}
-${IP_ADDRESS}                            acr:10.0.0.1
-${SUBSCRIPTION_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
-${NON_EXISTENT_SUBSCRIPTION_ID}          NON_EXISTENT_SUBSCRIPTION_ID
   
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json b/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json
deleted file mode 100644
index 17b185bf2813579d602252751c22af5b74bb6d3d..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "circleNotificationSubscription": {
-    "clientCorrelator": "0123",
-    "callbackReference": {
-      "callbackData": "1234",
-      "notifyURL": "http://clientApp.example.com/location_notifications/123456"
-    },
-    "address": "acr:10.0.0.1",
-    "checkImmediate": true,
-    "enteringLeavingCriteria": "Entering",
-    "frequency": 10,
-    "latitude": -80.88,
-    "longitude": 41.277,
-    "radius": 500,
-    "trackingAccuracy": 10
-  }
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json b/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json
deleted file mode 100644
index 337880370f87affc6fe003a5848e47eabc7d5691..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "circleNotificationSubscription": {
-    "clientCorrelator": "0123",
-    "callback": {
-      "callbackData": "1234",
-      "notifyURL": "http://clientApp.example.com/location_notifications/123456"
-    },
-    "address": "acr:10.0.0.1",
-    "checkImmediate": true,
-    "enteringLeavingCriteria": "Entering",
-    "frequency": 10,
-    "latitude": -80.88,
-    "longitude": 41.277,
-    "radius": 500,
-    "trackingAccuracy": 10
-  }
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/jsons/UserAreaNotification.json b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..21d73f3e205c839d5eb5d40baa22d7822e208e1d
--- /dev/null
+++ b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotification.json
@@ -0,0 +1,12 @@
+{
+    "notificationType": "UserAreaNotification",
+    "callbackReference":"127.0.0.1:8888/callback_uri",
+    "address": "http://someuri.com/123",
+    "civicInfo": { 
+    	"country": "A1"
+    },
+    "userLocationEvent": "ENTERING_AREA_EVENT",
+    "_links": {
+        "subscription": "someuri"
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationError.json b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationError.json
new file mode 100644
index 0000000000000000000000000000000000000000..0100ceddaf246dc843a67e0a32675951b0ee716c
--- /dev/null
+++ b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationError.json
@@ -0,0 +1,11 @@
+{
+    "notificationType": "UserAreaNotification",
+    "address": "http://someuri.com/123",
+    "civicInfo": { 
+    	"country": "A1"
+    },
+    "userLocationEvent": "ENTERING_AREA_EVENT",
+    "_links": {
+        "subscription": "someuri"
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationUpdate.json b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..039608def8c30994008648b386fff82941d8cca3
--- /dev/null
+++ b/MEC013/SRV/UEAREASUB/jsons/UserAreaNotificationUpdate.json
@@ -0,0 +1,22 @@
+{
+    "notificationType": "UserAreaNotification",
+    "callbackReference": "127.0.0.1:8888/callback_uri",
+    "addressList": ["acr:10.0.0.1"],
+    "civicInfo": {
+        "country": "A1"
+    },
+    "userLocationEvent": "ENTERING_AREA_EVENT",
+    "_links": {
+        "subscription": "someuri"
+    },
+    "areaDefine": {
+        "shape": 1,
+        "points": [
+            {
+                "latitude": -80.86302,
+                "longitude": 41.277306
+            }
+        ],
+        "radius": 500
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/libraries/Server.py b/MEC013/SRV/UEAREASUB/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337
--- /dev/null
+++ b/MEC013/SRV/UEAREASUB/libraries/Server.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        return notification_json
+        
diff --git a/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json b/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json
deleted file mode 100644
index 84f4a28f6a731357923960954f2c507bef5d4c24..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json
+++ /dev/null
@@ -1,177 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"circleNotificationSubscription": {
-			"description": "A type containing data for notifications, when the area is defined as a circle.",
-			"properties": {
-				"address": {
-					"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-					"items": {
-						"type": "string"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "1..N",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"callbackReference": {
-					"properties": {
-						"callbackData": {
-							"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "string"
-						},
-						"notificationFormat": {
-							"enum": [
-								"XML",
-								"JSON"
-							],
-							"type": "string"
-						},
-						"notifyURL": {
-							"description": "Notify Callback URL",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "anyURI"
-						}
-					},
-					"required": [
-						"notifyURL"
-					],
-					"type": "object"
-				},
-				"checkImmediate": {
-					"description": "Check location immediately after establishing notification.",
-					"type": "boolean",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "boolean"
-				},
-				"clientCorrelator": {
-					"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "string"
-				},
-				"count": {
-					"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "int"
-				},
-				"duration": {
-					"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "int"
-				},
-				"enteringLeavingCriteria": {
-					"enum": [
-						"Entering",
-						"Leaving"
-					],
-					"type": "string"
-				},
-				"frequency": {
-					"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "int"
-				},
-				"latitude": {
-					"description": "Latitude of center point.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				},
-				"link": {
-					"description": "Link to other resources that are in relationship with the resource.",
-					"items": {
-						"description": "Link to other resources",
-						"properties": {
-							"href": {
-								"description": "URI",
-								"format": "anyURI",
-								"type": "string"
-							},
-							"rel": {
-								"description": "Describes the relationship between the URI and the resource.",
-								"type": "string"
-							}
-						},
-						"required": [
-							"rel",
-							"href"
-						],
-						"type": "object"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "0..N",
-					"x-etsi-mec-origin-type": "Link"
-				},
-				"longitude": {
-					"description": "Longitude of center point.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				},
-				"radius": {
-					"description": "Radius circle around center point in meters.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				},
-				"requester": {
-					"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"trackingAccuracy": {
-					"description": "Number of meters of acceptable error in tracking distance.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				}
-			},
-			"required": [
-				"callbackReference",
-				"address",
-				"latitude",
-				"longitude",
-				"radius",
-				"trackingAccuracy",
-				"enteringLeavingCriteria",
-				"checkImmediate",
-				"frequency"
-			],
-			"type": "object"
-		}
-	},
-	"example": {
-		"circleNotificationSubscription": {
-			"clientCorrelator": "0123",
-			"callbackReference": {
-				"callbackData": "1234",
-				"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-			},
-			"address": "acr:10.0.0.1",
-			"checkImmediate": true,
-			"enteringLeavingCriteria": "Entering",
-			"frequency": 10,
-			"latitude": -80.88,
-			"longitude": 41.277,
-			"radius": 500,
-			"trackingAccuracy": 10
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json
deleted file mode 100644
index 6b745ec421507748b6cdc299bf4a8c31d4ede14d..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json
+++ /dev/null
@@ -1,142 +0,0 @@
-{
-  "definitions": {},
-  "$schema": "http://json-schema.org/draft-07/schema#",
-  "$id": "http://example.com/root.json",
-  "type": "object",
-  "title": "The Root Schema",
-  "required": [
-    "address",
-    "callbackReference",
-    "checkImmediate",
-    "clientCorrelator",
-    "enteringLeavingCriteria",
-    "frequency",
-    "latitude",
-    "longitude",
-    "radius",
-    "trackingAccuracy"
-  ],
-  "properties": {
-    "address": {
-      "$id": "#/properties/address",
-      "type": "string",
-      "title": "The Address Schema",
-      "default": "",
-      "examples": [
-        "acr:10.0.0.1"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "callbackReference": {
-      "$id": "#/properties/callbackReference",
-      "type": "object",
-      "title": "The Callbackreference Schema",
-      "required": [
-        "callbackData",
-        "notifyURL"
-      ],
-      "properties": {
-        "callbackData": {
-          "$id": "#/properties/callbackReference/properties/callbackData",
-          "type": "string",
-          "title": "The Callbackdata Schema",
-          "default": "",
-          "examples": [
-            "1234"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "notifyURL": {
-          "$id": "#/properties/callbackReference/properties/notifyURL",
-          "type": "string",
-          "title": "The Notifyurl Schema",
-          "default": "",
-          "examples": [
-            "http://application.example.com/notifications/distance_notifications/123456"
-          ],
-          "pattern": "^(.*)$"
-        }
-      }
-    },
-    "checkImmediate": {
-      "$id": "#/properties/checkImmediate",
-      "type": "string",
-      "title": "The Checkimmediate Schema",
-      "default": "",
-      "examples": [
-        "true"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "clientCorrelator": {
-      "$id": "#/properties/clientCorrelator",
-      "type": "string",
-      "title": "The Clientcorrelator Schema",
-      "default": "",
-      "examples": [
-        "0123"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "enteringLeavingCriteria": {
-      "$id": "#/properties/enteringLeavingCriteria",
-      "type": "string",
-      "title": "The Enteringleavingcriteria Schema",
-      "default": "",
-      "examples": [
-        "Entering"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "frequency": {
-      "$id": "#/properties/frequency",
-      "type": "string",
-      "title": "The Frequency Schema",
-      "default": "",
-      "examples": [
-        "10"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "latitude": {
-      "$id": "#/properties/latitude",
-      "type": "string",
-      "title": "The Latitude Schema",
-      "default": "",
-      "examples": [
-        "-80.86302"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "longitude": {
-      "$id": "#/properties/longitude",
-      "type": "string",
-      "title": "The Longitude Schema",
-      "default": "",
-      "examples": [
-        "41.277306"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "radius": {
-      "$id": "#/properties/radius",
-      "type": "string",
-      "title": "The Radius Schema",
-      "default": "",
-      "examples": [
-        "500"
-      ],
-      "pattern": "^(.*)$"
-    },
-    "trackingAccuracy": {
-      "$id": "#/properties/trackingAccuracy",
-      "type": "string",
-      "title": "The Trackingaccuracy Schema",
-      "default": "",
-      "examples": [
-        "10"
-      ],
-      "pattern": "^(.*)$"
-    }
-  }
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json
index c7c8284e28dfbdd585aa5dca51b777560a30ea31..4b245317effbe3f5a5e90afcf44f372bba29e50c 100644
--- a/MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json
+++ b/MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json
@@ -1,715 +1,55 @@
 {
-	"type": "object",
-	"required": [
-		"notificationSubscriptionList"
-	],
-	"properties": {
-		"notificationSubscriptionList": {
-			"properties": {
-				"circleNotificationSubscription": {
-					"description": "Collection of CircleNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for notifications, when the area is defined as a circle.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"enteringLeavingCriteria": {
-								"enum": [
-									"Entering",
-									"Leaving"
-								],
-								"type": "string"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"latitude": {
-								"description": "Latitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"longitude": {
-								"description": "Longitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"radius": {
-								"description": "Radius circle around center point in meters.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"latitude",
-							"longitude",
-							"radius",
-							"trackingAccuracy",
-							"enteringLeavingCriteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "CircleNotificationSubscription"
-				},
-				"distanceNotificationSubscription": {
-					"description": "Collection of DistanceNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for distance subscription, with reference to other devices.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"criteria": {
-								"enum": [
-									"AllWithinDistance",
-									"AnyWithinDistance",
-									"AllBeyondDistance",
-									"AnyBeyondDistance"
-								],
-								"type": "string"
-							},
-							"distance": {
-								"description": "Distance between devices that shall be monitored.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"monitoredAddress": {
-								"description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"referenceAddress": {
-								"description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"monitoredAddress",
-							"distance",
-							"trackingAccuracy",
-							"criteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "DistanceNotificationSubscription"
-				},
-				"periodicNotificationSubscription": {
-					"description": "Collection of PeriodicNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for periodic subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"requestedAccuracy": {
-								"description": "Accuracy of the provided distance in meters.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"requestedAccuracy",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "PeriodicNotificationSubscription"
-				},
-				"resourceURL": {
-					"description": "Self-referring URL, see note 1.",
-					"format": "uri",
-					"type": "string",
-					"x-etsi-mec-cardinality": "1",
-					"x-etsi-mec-origin-type": "AnyURI"
-				},
-				"userTrackingSubscription": {
-					"description": "Collection of UserTrackingSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing user tracking subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "UserTrackingSubscription"
-				},
-				"zonalTrafficSubscription": {
-					"description": "Collection of ZonalTrafficSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zonal traffic subscription",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period (in seconds) of time notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the   period of time for which the subscription will still be valid.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"interestRealm": {
-								"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZonalTrafficSubscription"
-				},
-				"zoneStatusSubscription": {
-					"description": "Collection of ZoneStatusSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zone status subscription.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"numberOfUsersAPThreshold": {
-								"description": "Threshold number of users in an access point which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"numberOfUsersZoneThreshold": {
-								"description": "Threshold number of users in a zone which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"operationStatus": {
-								"description": "List of operation status values to generate notifications for (these apply to all access points within a zone).",
-								"items": {
-									"enum": [
-										"Serviceable",
-										"Unserviceable",
-										"Unknown"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "OperationStatus"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZoneStatusSubscription"
-				}
-			},
-			"required": [
-				"resourceURL"
-			],
-			"type": "object",
-			"x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.",
-			"x-etsi-ref": "6.3.3"
-		}
-	}
-}
\ No newline at end of file
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEAREASUB/schemas/UserAreaNotification.schema.json b/MEC013/SRV/UEAREASUB/schemas/UserAreaNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..ea82b65679385ff09ab2a7eb95f9e06527f67b1e
--- /dev/null
+++ b/MEC013/SRV/UEAREASUB/schemas/UserAreaNotification.schema.json
@@ -0,0 +1,539 @@
+{
+  "properties": {
+      "_links": {
+          "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+          "properties": {
+              "subscription": {
+                  "description": "URI referring to a resource.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+              }
+          },
+          "required": [
+              "subscription"
+          ],
+          "type": "object",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "Structure (inlined)"
+      },
+      "address": {
+          "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+          "format": "uri",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uri"
+      },
+      "civicInfo": {
+          "description": "Indicates a Civic address",
+          "type": "object",
+          "required": [
+              "country"
+          ],
+          "properties": {
+              "country": {
+                  "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": 1,
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A1": {
+                  "description": "National subdivisions (state, canton, region, province, prefecture)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A2": {
+                  "description": "County, parish, gun (JP), district (IN)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A3": {
+                  "description": "City, township, shi (JP)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A4": {
+                  "description": "City division, borough, city district, ward, chou (JP)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A5": {
+                  "description": "Neighbourhood, block",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A6": {
+                  "description": "Group of streets below the neighbourhood level",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PRD": {
+                  "description": "Leading street direction",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POD": {
+                  "description": "Trailing street suffix",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "STS": {
+                  "description": "Street suffix or type",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "HNO": {
+                  "description": "House number",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "HNS": {
+                  "description": "House number suffix",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "LMK": {
+                  "description": "Landmark or vanity address",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "LOC": {
+                  "description": "Additional location information",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "NAM": {
+                  "description": "Name (residence and office occupant)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PC": {
+                  "description": "Postal/zip code",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "BLD": {
+                  "description": "Building (structure)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "UNIT": {
+                  "description": "Unit (apartment, suite)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "FLR": {
+                  "description": "Floor",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "ROOM": {
+                  "description": "Room",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PLC": {
+                  "description": "Place-type",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PCN": {
+                  "description": "Postal community name",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POBOX": {
+                  "description": "Post office box (P.O. box)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "ADDCODE": {
+                  "description": "Additional code",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "SEAT": {
+                  "description": "Seat (desk, cubicle, workstation)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RD": {
+                  "description": "Primary road or street",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDSEC": {
+                  "description": "Road clause",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDBR": {
+                  "description": "Road branch",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDSUBBR": {
+                  "description": "Road sub-branch",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PRM": {
+                  "description": "Road pre-modifier",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POM": {
+                  "description": "Road post-modifier",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "usageRules": {
+                  "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "method": {
+                  "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "providedBy": {
+                  "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              }
+          }
+      },
+      "locationInfo": {
+          "properties": {
+              "accuracy": {
+                  "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracyAltitude": {
+                  "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracySemiMinor": {
+                  "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "altitude": {
+                  "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "confidence": {
+                  "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "includedAngle": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "innerRadius": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "latitude": {
+                  "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                  "format": "float",
+                  "items": {
+                      "type": "number"
+                  },
+                  "minItems": 1,
+                  "type": "array",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "longitude": {
+                  "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                  "format": "float",
+                  "items": {
+                      "type": "number"
+                  },
+                  "minItems": 1,
+                  "type": "array",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "offsetAngle": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "orientationMajorAxis": {
+                  "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "shape": {
+                  "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                  "enum": [
+                      1,
+                      2,
+                      3,
+                      4,
+                      5,
+                      6,
+                      7
+                  ],
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Enum_inlined"
+              },
+              "uncertaintyRadius": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "velocity": {
+                  "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                  "properties": {
+                      "bearing": {
+                          "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "horizontalSpeed": {
+                          "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "uncertainty": {
+                          "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "velocityType": {
+                          "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                          "enum": [
+                              1,
+                              2,
+                              3,
+                              4
+                          ],
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "Enum_inlined"
+                      },
+                      "verticalSpeed": {
+                          "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Int"
+                      },
+                      "verticalUncertainty": {
+                          "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      }
+                  },
+                  "required": [
+                      "velocityType",
+                      "bearing",
+                      "horizontalSpeed"
+                  ],
+                  "type": "object",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Structure (inlined)"
+              }
+          },
+          "required": [
+              "latitude",
+              "longitude",
+              "shape"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.3"
+      },
+      "notificationType": {
+          "description": "Shall be set to \"UserAreaNotification\".",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "String"
+      },
+      "relativeLocationInfo": {
+          "properties": {
+              "X": {
+                  "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "Y": {
+                  "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "Z": {
+                  "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "mapInfo": {
+                  "properties": {
+                      "ancillaryMapInfo": {
+                          "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Not_specified"
+                      },
+                      "mapId": {
+                          "description": "Indicates the ID of the map. ",
+                          "type": "string",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "String"
+                      },
+                      "origin": {
+                          "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                          "properties": {
+                              "altitude": {
+                                  "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "0..1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              },
+                              "latitude": {
+                                  "description": "Location latitude, expressed in the range -90° to +90°.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              },
+                              "longitude": {
+                                  "description": "Location longitude, expressed in the range -180° to +180°.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              }
+                          },
+                          "required": [
+                              "latitude",
+                              "longitude"
+                          ],
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Structure(inlined)"
+                      }
+                  },
+                  "required": [
+                      "mapId"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.2.4"
+              }
+          },
+          "required": [
+              "mapInfo",
+              "X",
+              "Y"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.2.3"
+      },
+      "timeStamp": {
+          "properties": {
+              "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+              }
+          },
+          "required": [
+              "seconds",
+              "nanoSeconds"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.2"
+      },
+      "userLocationEvent": {
+          "description": "This type represents specified event types for UE location report.",
+          "enum": [
+              "ENTERING_AREA_EVENT",
+              "LEAVING_AREA_EVENT"
+          ],
+          "type": "string"
+      }
+  },
+  "required": [
+      "notificationType",
+      "address",
+      "userLocationEvent",
+      "_links"
+  ],
+  "type": "object",
+  "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription.",
+  "x-etsi-ref": "6.4.8"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot b/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot
index 74dc0b1d55bebaeda29cfcbdca05caa8369e13b2..2ff8e90455c871c08cd88bd90af0d69625d71e5b 100644
--- a/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot
+++ b/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot
@@ -8,7 +8,7 @@ Resource    ../../../pics.txt
 Resource    environment/variables.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem   
-
+Library     String  
 Default Tags    TC_MEC_SRV_UEDISTLOOK
 
 
@@ -17,36 +17,121 @@ ${response}
 
 
 *** Test Cases ***
-
 TC_MEC_MEC013_SRV_UEDISTLOOK_001_OK
     [Documentation]
-    ...    Check that the IUT responds with the distance to a UE
+    ...    Check that the IUT responds with the list of UE distance subscriptions to a UE 
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.9
-    ...    OpenAPI    # TODO check this
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.14.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES   INCLUDE_UNDEFINED_SCHEMAS
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/distance?address=${LOC_QRY_UE_ADDRESS}&latitude=${LOC_QRY_UE_LAT}&longitude=${LOC_QRY_UE_LONG}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
+    [Setup]    Create new subscription and get sub id   UserDistanceSubscription 
+    Get all Subscriptions
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    TerminalDistance
-
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    UserDistanceSubscription
+    [TearDown]  Remove subscription    ${SUB_ID}    
 
 TC_MEC_MEC013_SRV_UEDISTLOOK_001_BR
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
+    ...    Check that the IUT responds with an error when a request with 
+    ...    incorrect parameters is sent by a MEC Application - Invalid filter
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.14.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES   INCLUDE_UNDEFINED_SCHEMAS
+    Get all Subscriptions with error
+    Check HTTP Response Status Code Is    400
+    
+TC_MEC_MEC013_SRV_UEDISTLOOK_002_OK
+    [Documentation]
+    ...    Check that the IUT responds with the distance to a UE 
+    ...    when queried by a MEC Application
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.15.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]    Create new subscription and get sub id   UserDistanceSubscription 
+    Get specific Subscription    ${SUB_ID} 
+    Check HTTP Response Body Json Schema Is    UserDistanceSubscription
+    Check HTTP Response Status Code Is    200
+   [TearDown]  Remove subscription     ${SUB_ID}    
+
+
+
+TC_MEC_MEC013_SRV_UEDISTLOOK_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with the distance to a UE 
+    ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.9
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.15.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]    Remove subscription     ${NON_EXISTING_SUBSCRIPTION_ID} 
+    Get specific Subscription    ${NON_EXISTING_SUBSCRIPTION_ID} 
+    Check HTTP Response Status Code Is    404
+   
 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+*** Keywords ***
+Create new subscription and get sub id
+    [Arguments]    ${content}    
+    Create new subscription     ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]} 
+    
+Create new subscription
+    [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/distance?address=${LOC_QRY_UE_ADDRESS}&lat=${LOC_QRY_UE_LAT}&longitude=${LOC_QRY_UE_LONG}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Log   ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    Check HTTP Response Status Code Is    400
+    
+Get all Subscriptions
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get specific Subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+    
+Get all Subscriptions with error
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance?event=123
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Remove subscription
+    [Arguments]    ${subscriptionId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTLOOK/environment/variables.txt b/MEC013/SRV/UEDISTLOOK/environment/variables.txt
index 217a0d95f84f9ff7d0f901469234a286a852270c..87fa46bd909160ebe688745567419e699420b282 100644
--- a/MEC013/SRV/UEDISTLOOK/environment/variables.txt
+++ b/MEC013/SRV/UEDISTLOOK/environment/variables.txt
@@ -1,14 +1,18 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
+
+
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
+${SUB_ID}
+${NON_EXISTING_SUBSCRIPTION_ID}      NON_EXISTING_SUBSCRIPTION_ID
 # Specific variables
 ${LOC_QRY_UE_ADDRESS}        acr:10.0.0.1
 ${LOC_QRY_UE_LAT}            -80.86302
diff --git a/MEC013/SRV/UEDISTLOOK/jsons/UserDistanceSubscription.json b/MEC013/SRV/UEDISTLOOK/jsons/UserDistanceSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c338c1da7dcbfb647b631d25ebc4e2f00ca55c6
--- /dev/null
+++ b/MEC013/SRV/UEDISTLOOK/jsons/UserDistanceSubscription.json
@@ -0,0 +1,16 @@
+{
+      "subscriptionType": "UserDistanceSubscription",
+      "clientCorrelator": "0123",
+      "callbackReference": "http://my.callback.com/user-distance/some-id",
+      "referenceAddress": [
+        "acr:10.0.0.3"
+      ],
+      "monitoredAddress": [
+        "acr:10.0.0.1",
+        "acr:10.0.0.2"
+      ],
+      "distance": 100,
+      "trackingAccuracy": 10,
+      "criteria": "AllWithinDistance",
+      "checkImmediate": true
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTLOOK/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEDISTLOOK/schemas/NotificationSubscriptionList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b245317effbe3f5a5e90afcf44f372bba29e50c
--- /dev/null
+++ b/MEC013/SRV/UEDISTLOOK/schemas/NotificationSubscriptionList.schema.json
@@ -0,0 +1,55 @@
+{
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json b/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json
deleted file mode 100644
index ccee80aa3c7a00fba3b0266c1dd071bee60fc1a5..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"terminalDistance": {
-			"description": "A type containing information about the distance from a terminal to a location or between two terminals, in addition the accuracy and a timestamp of the information are provided.",
-			"properties": {
-				"accuracy": {
-					"description": "Accuracy of the provided distance in meters",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "integer"
-				},
-				"distance": {
-					"description": "Distance from terminal to a location or between two terminals specified in meters",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "integer"
-				},
-				"timestamp": {
-					"properties": {
-						"nanoSeconds": {
-							"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-							"format": "int32",
-							"type": "integer",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "Uint32"
-						},
-						"seconds": {
-							"description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-							"format": "int32",
-							"type": "integer",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "Uint32"
-						}
-					},
-					"required": [
-						"seconds",
-						"nanoSeconds"
-					],
-					"type": "object",
-					"x-etsi-ref": "6.5.2"
-				}
-			},
-			"required": [
-				"distance"
-			],
-			"type": "object"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json b/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json
deleted file mode 100644
index b23ded186f8f1270e7ddcd32dd63515ebda4665c..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "definitions": {},
-  "$schema": "http://json-schema.org/draft-07/schema#",
-  "$id": "http://example.com/root.json",
-  "type": "object",
-  "title": "The Root Schema",
-  "required": [
-    " terminalDistance"
-  ],
-  "properties": {
-    " terminalDistance": {
-      "$id": "#/properties/ terminalDistance",
-      "type": "object",
-      "title": "The  terminaldistance Schema",
-      "required": [
-        "distance"
-      ],
-      "properties": {
-        "distance": {
-          "$id": "#/properties/ terminalDistance/properties/distance",
-          "type": "string",
-          "title": "The Distance Schema",
-          "default": "",
-          "examples": [
-            "123"
-          ],
-          "pattern": "^(.*)$"
-        }
-      }
-    }
-  }
-}
diff --git a/MEC013/SRV/UEDISTLOOK/schemas/UserDistanceSubscription.schema.json b/MEC013/SRV/UEDISTLOOK/schemas/UserDistanceSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6423a84b3cb0db0f248f3b75d48dac16cbdf182a
--- /dev/null
+++ b/MEC013/SRV/UEDISTLOOK/schemas/UserDistanceSubscription.schema.json
@@ -0,0 +1,168 @@
+{
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "checkImmediate": {
+            "type": "boolean"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "criteria": {
+            "description": "An enumeration, defining the distance criteria between devices.",
+            "enum": [
+              "AllWithinDistance",
+              "AnyWithinDistance",
+              "AllBeyondDistance",
+              "AnyBeyondDistance"
+            ],
+            "type": "string"
+          },
+          "distance": {
+            "description": "Distance between users that shall be monitored. The unit is meter.",
+            "format": "float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "monitoredAddress": {
+            "description": "Contains addresses of users to monitor (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 1,
+            "type": "array",
+            "x-etsi-mec-cardinality": "1..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "referenceAddress": {
+            "description": "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserDistanceSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "trackingAccuracy": {
+            "description": "Number of meters of acceptable error in tracking distance.",
+            "format": "float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        }
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot b/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot
index fd3e3a51f1ccb4c8bda2d8341febf9c4187d0be5..9e1cc58d943c2a139dd92fdc6adff2c56b6b12fa 100644
--- a/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot
+++ b/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot
@@ -8,7 +8,8 @@ Resource    ../../../pics.txt
 Resource    environment/variables.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem   
-
+Library     libraries/Server.py
+Library     String
 Default Tags    TC_MEC_SRV_UEDISTSUB
 
 
@@ -17,57 +18,83 @@ Default Tags    TC_MEC_SRV_UEDISTSUB
 TC_MEC_MEC013_SRV_UEDISTSUB_001_OK
     [Documentation]
     ...    Check that the IUT acknowledges the UE distance subscription request when commanded by a
-    ...    MEC Application and notifies it when (all) the requested UE(s) is (are) within the specified distance
+    ...   MEC Application and notifies it when (all) the requested UE(s) is (are) within the specified distance
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.10
-    ...    OpenAPI    # TODO check this
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.14.3.4
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    DistanceNotificationSubscription
+    Create new subscription    UserDistanceSubscription
     Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    DistanceNotificationSubscription
-    Check Result Contains    ${response['body']['distanceNotificationSubscription']}    clientCorrelator    ${UEDISTSUB_CLIENT_ID}
-    Check Result Contains    ${response['body']['distanceNotificationSubscription']}    callbackReference    ${APP_SRVSUB_NOTIF_CALLBACK_URI}
-    Check Result Contains    ${response['body']['distanceNotificationSubscription']}    monitoredAddress    ${UEDISTSUB_MONITORED_IP_ADDRESS}
-    Check Result Contains    ${response['body']['distanceNotificationSubscription']}    referenceAddress    ${UEDISTSUB_IP_ADDRESS}
-
+    Check HTTP Response Body Json Schema Is    UserDistanceSubscription
+    ${CLIENT_CORRELATOR}   Get value entry from JSON file    UserDistanceSubscription    clientCorrelator
+    ${CALLBACK_REF}   Get value entry from JSON file         UserDistanceSubscription    callbackReference
+    ${MON_ADDRESSED}   Get value entry from JSON file        UserDistanceSubscription    monitoredAddress
+    ${DISTANCE}   Get value entry from JSON file             UserDistanceSubscription    distance
+    ${TRACK_ACCURACY}   Get value entry from JSON file       UserDistanceSubscription    trackingAccuracy
+    ${CRITERIA}   Get value entry from JSON file             UserDistanceSubscription    criteria
+    ${CHECK_IMMEDIATE}   Get value entry from JSON file      UserDistanceSubscription    checkImmediate
+    
+    Should be Equal    ${response['body']['userDistanceSubscription']['clientCorrelator']}    ${CLIENT_CORRELATOR}
+    Should be Equal    ${response['body']['userDistanceSubscription']['callbackReference']}    ${CALLBACK_REF}
+    Should be Equal    ${response['body']['userDistanceSubscription']['distance']}    ${DISTANCE}
+    Should be Equal    ${response['body']['userDistanceSubscription']['trackingAccuracy']}    ${TRACK_ACCURACY}
+    Should be Equal    ${response['body']['userDistanceSubscription']['criteria']}    ${CRITERIA}
+    Should be Equal    ${response['body']['userDistanceSubscription']['checkImmediate']}    ${True}
+    Spawn Notification Server     UserDistanceNotification
+    Validate Json   UserDistanceNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove subscription  ${SUB_ID}
 
 TC_MEC_MEC013_SRV_UEDISTSUB_001_BR
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
+    ...    Check that the IUT responds with an error when a request with incorrect parameters is 
+    ...    sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.10
-
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.9
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.14.3.4
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    DistanceNotificationSubscriptionError
+    Create new subscription    UserDistanceSubscriptionError
     Check HTTP Response Status Code Is    400
 
 
 TC_MEC_MEC013_SRV_UEDISTSUB_002_OK
     [Documentation]
-    ...    Check that the IUT acknowledges the cancellation of UE distance notifications
-    ...    when commanded by a MEC Application
+    ...    Check that the IUT acknowledges the cancellation of UE distance 
+    ...    notifications when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.15.3.5
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${SUBSCRIPTION_ID}
+    [Setup]   Create new subscription and get sub id    UserDistanceSubscription
+    Remove subscription   ${SUB_ID}
     Check HTTP Response Status Code Is    204
 
 
 TC_MEC_MEC013_SRV_UEDISTSUB_002_NF
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
+    ...    Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI
+    ...    is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.15.3.5
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    [Setup]   Remove subscription    ${NON_EXISTING_SUBSCRIPTION_ID}
+    Remove subscription   ${NON_EXISTING_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
-
+    
 *** Keywords ***
+Create new subscription and get sub id
+    [Arguments]    ${content}    
+    Create new subscription     ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]} 
+    
 Create new subscription
     [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
@@ -79,10 +106,15 @@ Create new subscription
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
-Remove subscription  
+Remove subscription
     [Arguments]    ${subscriptionId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance/${subscriptionId}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
+    Set Suite Variable    ${response}    ${output}
+    
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    Set Suite Variable    ${payload_notification}    ${output}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/environment/variables.txt b/MEC013/SRV/UEDISTSUB/environment/variables.txt
index 83efa071861b4c237da7a02dc606b235ca6bf720..8e9b1912427ae523af3d053cc87a0693c7352209 100644
--- a/MEC013/SRV/UEDISTSUB/environment/variables.txt
+++ b/MEC013/SRV/UEDISTSUB/environment/variables.txt
@@ -1,18 +1,19 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
-# Specific variables
-${UEDISTSUB_CLIENT_ID}                0123
-${APP_SRVSUB_NOTIF_CALLBACK_URI}      "callbackReference": {"callbackData": "1234","notifyURL": "http://application.example.com/notifications/distance_notifications/123456"}
-${UEDISTSUB_MONITORED_IP_ADDRESS}     ["acr:10.0.0.1", "acr:10.0.0.2"]
-${UEDISTSUB_IP_ADDRESS}               acr:10.0.0.3
-${SUBSCRIPTION_ID}                    e0deee2b-6e50-4f33-ab09-8bf0585025d3
-${NON_EXISTENT_SUBSCRIPTION_ID}       NON_EXISTENT_SUBSCRIPTION_ID
\ No newline at end of file
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
+${SUB_ID}
+${NON_EXISTING_SUBSCRIPTION_ID}       NON_EXISTING_SUBSCRIPTION_ID
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json b/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json
deleted file mode 100644
index 57db8a1f52ce14eea607d3d0121e67a48c73339d..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-	"distanceNotificationSubscription": {
-		"callbackReference": {
-			"callbackData": "1234",
-			"notifyURL": "http://application.example.com/notifications/distance_notifications/123456"
-		},
-		"checkImmediate": "true",
-		"clientCorrelator": "0123",
-		"criteria": "AllWithinDistance",
-		"distance": "100",
-		"frequency": "10",
-		"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
-		"referenceAddress": "acr:10.0.0.3",
-		"trackingAccuracy": "10"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json b/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json
deleted file mode 100644
index 7c13bd9328315741ddb1c3feadc0842022887835..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-	"distanceNotificationSubscription": {
-		"callbackReference": {
-			"callbackData": "1234",
-			"notifyURL": "http://application.example.com/notifications/distance_notifications/123456"
-		},
-		"checkImmediate": "true",
-		"clientCorrelator": "0123",
-		"criteria": "AllWithinDistance",
-		"distance": "100",
-		"frequency": "10",
-		"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
-		"reference": "acr:10.0.0.3",
-		"trackingAccuracy": "10"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/jsons/UserDistanceNotification.json b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae75946373d81bfbfc985e400c64ba85c1f4c43f
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceNotification.json
@@ -0,0 +1,24 @@
+{
+    "notificationType": "UserDistanceNotification",
+    "_links": {
+        "subscription": {
+            "href": "https://sDZdgInDNnbFYppR.rt/aa"
+        }
+    },
+    "distanceEvent": "AllWithinDistance",
+    "monitoredUsers": {
+        "resourceURL": "http://meAppServer.example.com/location/v3/queries/users",
+        "user": [
+            {
+                "address": "acr:10.0.0.1",
+                "accessPointId": "001010000000000000000000000000001",
+                "zoneId": "zone01",
+                "resourceURL": "sunt",
+                "timestamp": {
+                    "nanoSeconds": 22688093,
+                    "seconds": 0
+                }
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscription.json b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..0e3babb9085e219f3f31a0e3ad369c86b30f27c6
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscription.json
@@ -0,0 +1,16 @@
+{
+                      "subscriptionType": "UserDistanceSubscription",
+                      "clientCorrelator": "0123",
+                      "callbackReference": "http://my.callback.com/user-distance/some-id",
+                      "referenceAddress": [
+                        "acr:10.0.0.3"
+                      ],
+                      "monitoredAddress": [
+                        "acr:10.0.0.1",
+                        "acr:10.0.0.2"
+                      ],
+                      "distance": 100,
+                      "trackingAccuracy": 10,
+                      "criteria": "AllWithinDistance",
+                      "checkImmediate": "true"
+                  }
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscriptionError.json b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscriptionError.json
new file mode 100644
index 0000000000000000000000000000000000000000..6db16431d5943c6f5ee3d88966cf11d0f9ef724b
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/jsons/UserDistanceSubscriptionError.json
@@ -0,0 +1,15 @@
+{
+                      "subscriptionType": "UserDistanceSubscription",
+                      "clientCorrelator": "0123",
+                      "referenceAddress": [
+                        "acr:10.0.0.3"
+                      ],
+                      "monitoredAddress": [
+                        "acr:10.0.0.1",
+                        "acr:10.0.0.2"
+                      ],
+                      "distance": 100,
+                      "trackingAccuracy": 10,
+                      "criteria": "AllWithinDistance",
+                      "checkImmediate": "true"
+                  }
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/libraries/Server.py b/MEC013/SRV/UEDISTSUB/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/libraries/Server.py
@@ -0,0 +1,144 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        return notification_json
+        
diff --git a/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json b/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json
deleted file mode 100644
index cfa696350851e711f3d75b16615bba9fc8f6febf..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"distanceNotificationSubscription": {
-			"description": "A type containing data for distance subscription, with reference to other devices.",
-			"properties": {
-				"callbackReference": {
-					"properties": {
-						"callbackData": {
-							"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "string"
-						},
-						"notificationFormat": {
-							"enum": [
-								"XML",
-								"JSON"
-							],
-							"type": "string"
-						},
-						"notifyURL": {
-							"description": "Notify Callback URL",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "anyURI"
-						}
-					},
-					"required": [
-						"notifyURL"
-					],
-					"type": "object"
-				},
-				"checkImmediate": {
-					"description": "Check location immediately after establishing notification.",
-					"type": "boolean",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "boolean"
-				},
-				"clientCorrelator": {
-					"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "string"
-				},
-				"count": {
-					"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "int"
-				},
-				"criteria": {
-					"enum": [
-						"AllWithinDistance",
-						"AnyWithinDistance",
-						"AllBeyondDistance",
-						"AnyBeyondDistance"
-					],
-					"type": "string"
-				},
-				"distance": {
-					"description": "Distance between devices that shall be monitored.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				},
-				"duration": {
-					"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "int"
-				},
-				"frequency": {
-					"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "int"
-				},
-				"link": {
-					"description": "Link to other resources that are in relationship with the resource.",
-					"items": {
-						"description": "Link to other resources",
-						"properties": {
-							"href": {
-								"description": "URI",
-								"format": "anyURI",
-								"type": "string"
-							},
-							"rel": {
-								"description": "Describes the relationship between the URI and the resource.",
-								"type": "string"
-							}
-						},
-						"required": [
-							"rel",
-							"href"
-						],
-						"type": "object"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "0..N",
-					"x-etsi-mec-origin-type": "Link"
-				},
-				"monitoredAddress": {
-					"description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-					"items": {
-						"type": "string"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "1..N",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"referenceAddress": {
-					"description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-					"items": {
-						"type": "string"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "0..N",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"requester": {
-					"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"trackingAccuracy": {
-					"description": "Number of meters of acceptable error in tracking distance.",
-					"format": "float",
-					"type": "number",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "float"
-				}
-			},
-			"required": [
-				"callbackReference",
-				"monitoredAddress",
-				"distance",
-				"trackingAccuracy",
-				"criteria",
-				"checkImmediate",
-				"frequency"
-			],
-			"type": "object"
-		}
-	},
-	"example": {
-		"distanceNotificationSubscription": {
-			"clientCorrelator": "0123",
-			"callbackReference": {
-				"callbackData": "1234",
-				"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-			},
-			"monitoredAddress": [
-				"acr:10.0.0.1",
-				"acr:10.0.0.2"
-			],
-			"checkImmediate": true,
-			"criteria": "AllWithinDistance",
-			"distance": 100,
-			"frequency": 10,
-			"referenceAddress": "acr:10.0.0.3",
-			"trackingAccuracy": 10
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json
deleted file mode 100644
index bc698763fb68d5a6b900dcd2e36dd995d98839a4..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json
+++ /dev/null
@@ -1,147 +0,0 @@
-{
-  "definitions": {},
-  "$schema": "http://json-schema.org/draft-07/schema#",
-  "$id": "http://example.com/root.json",
-  "type": "object",
-  "title": "The Root Schema",
-  "required": [
-    "distanceNotificationSubscription"
-  ],
-  "properties": {
-    "distanceNotificationSubscription": {
-      "$id": "#/properties/distanceNotificationSubscription",
-      "type": "object",
-      "title": "The Distancenotificationsubscription Schema",
-      "required": [
-        "callbackReference",
-        "checkImmediate",
-        "clientCorrelator",
-        "criteria",
-        "distance",
-        "frequency",
-        "monitoredAddress",
-        "referenceAddress",
-        "trackingAccuracy"
-      ],
-      "properties": {
-        "callbackReference": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference",
-          "type": "object",
-          "title": "The Callbackreference Schema",
-          "required": [
-            "callbackData",
-            "notifyURL"
-          ],
-          "properties": {
-            "callbackData": {
-              "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference/properties/callbackData",
-              "type": "string",
-              "title": "The Callbackdata Schema",
-              "default": "",
-              "examples": [
-                "1234"
-              ],
-              "pattern": "^(.*)$"
-            },
-            "notifyURL": {
-              "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference/properties/notifyURL",
-              "type": "string",
-              "title": "The Notifyurl Schema",
-              "default": "",
-              "examples": [
-                "http://application.example.com/notifications/distance_notifications/123456"
-              ],
-              "pattern": "^(.*)$"
-            }
-          }
-        },
-        "checkImmediate": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/checkImmediate",
-          "type": "string",
-          "title": "The Checkimmediate Schema",
-          "default": "",
-          "examples": [
-            "true"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "clientCorrelator": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/clientCorrelator",
-          "type": "string",
-          "title": "The Clientcorrelator Schema",
-          "default": "",
-          "examples": [
-            "0123"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "criteria": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/criteria",
-          "type": "string",
-          "title": "The Criteria Schema",
-          "default": "",
-          "examples": [
-            "AllWithinDistance"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "distance": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/distance",
-          "type": "string",
-          "title": "The Distance Schema",
-          "default": "",
-          "examples": [
-            "100"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "frequency": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/frequency",
-          "type": "string",
-          "title": "The Frequency Schema",
-          "default": "",
-          "examples": [
-            "10"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "monitoredAddress": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/monitoredAddress",
-          "type": "array",
-          "title": "The Monitoredaddress Schema",
-          "items": {
-            "$id": "#/properties/distanceNotificationSubscription/properties/monitoredAddress/items",
-            "type": "string",
-            "title": "The Items Schema",
-            "default": "",
-            "examples": [
-              "acr:10.0.0.1",
-              "acr:10.0.0.2"
-            ],
-            "pattern": "^(.*)$"
-          }
-        },
-        "referenceAddress": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/referenceAddress",
-          "type": "string",
-          "title": "The Referenceaddress Schema",
-          "default": "",
-          "examples": [
-            "acr:10.0.0.3"
-          ],
-          "pattern": "^(.*)$"
-        },
-        "trackingAccuracy": {
-          "$id": "#/properties/distanceNotificationSubscription/properties/trackingAccuracy",
-          "type": "string",
-          "title": "The Trackingaccuracy Schema",
-          "default": "",
-          "examples": [
-            "10"
-          ],
-          "pattern": "^(.*)$"
-        }
-      }
-    }
-  }
-}
diff --git a/MEC013/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json
deleted file mode 100644
index 3a495cdf2901ada65ccef735d6f744843db6c861..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json
+++ /dev/null
@@ -1,715 +0,0 @@
-{
-	"type": "object",
-	"required": [
-		"notificationSubscriptionList"
-	],
-	"properties": {
-		"notificationSubscriptionList": {
-			"properties": {
-				"circleNotificationSubscription": {
-					"description": "Collection of CircleNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for notifications, when the area is defined as a circle.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"enteringLeavingCriteria": {
-								"enum": [
-									"Entering",
-									"Leaving"
-								],
-								"type": "string"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"latitude": {
-								"description": "Latitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"longitude": {
-								"description": "Longitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"radius": {
-								"description": "Radius circle around center point in meters.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"latitude",
-							"longitude",
-							"radius",
-							"trackingAccuracy",
-							"enteringLeavingCriteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "CircleNotificationSubscription"
-				},
-				"distanceNotificationSubscription": {
-					"description": "Collection of DistanceNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for distance subscription, with reference to other devices.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"criteria": {
-								"enum": [
-									"AllWithinDistance",
-									"AnyWithinDistance",
-									"AllBeyondDistance",
-									"AnyBeyondDistance"
-								],
-								"type": "string"
-							},
-							"distance": {
-								"description": "Distance between devices that shall be monitored.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"monitoredAddress": {
-								"description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"referenceAddress": {
-								"description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"monitoredAddress",
-							"distance",
-							"trackingAccuracy",
-							"criteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "DistanceNotificationSubscription"
-				},
-				"periodicNotificationSubscription": {
-					"description": "Collection of PeriodicNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for periodic subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"requestedAccuracy": {
-								"description": "Accuracy of the provided distance in meters.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"requestedAccuracy",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "PeriodicNotificationSubscription"
-				},
-				"resourceURL": {
-					"description": "Self-referring URL, see note 1.",
-					"format": "uri",
-					"type": "string",
-					"x-etsi-mec-cardinality": "1",
-					"x-etsi-mec-origin-type": "AnyURI"
-				},
-				"userTrackingSubscription": {
-					"description": "Collection of UserTrackingSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing user tracking subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "UserTrackingSubscription"
-				},
-				"zonalTrafficSubscription": {
-					"description": "Collection of ZonalTrafficSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zonal traffic subscription",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the   period of time for which the subscription will still be valid.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"interestRealm": {
-								"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZonalTrafficSubscription"
-				},
-				"zoneStatusSubscription": {
-					"description": "Collection of ZoneStatusSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zone status subscription.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"numberOfUsersAPThreshold": {
-								"description": "Threshold number of users in an access point which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"numberOfUsersZoneThreshold": {
-								"description": "Threshold number of users in a zone which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"operationStatus": {
-								"description": "List of operation status values to generate notifications for (these apply to all access points within a zone).",
-								"items": {
-									"enum": [
-										"Serviceable",
-										"Unserviceable",
-										"Unknown"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "OperationStatus"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZoneStatusSubscription"
-				}
-			},
-			"required": [
-				"resourceURL"
-			],
-			"type": "object",
-			"x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.",
-			"x-etsi-ref": "6.3.3"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/schemas/UserDistanceNotification.schema.json b/MEC013/SRV/UEDISTSUB/schemas/UserDistanceNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6737cac1f16dc635e02f0f8f5da36308b89106db
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/schemas/UserDistanceNotification.schema.json
@@ -0,0 +1,634 @@
+{
+  "properties": {
+    "_links": {
+      "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+      "properties": {
+        "subscription": {
+          "properties": {
+            "href": {
+              "description": "URI referring to a resource.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uri"
+            }
+          },
+          "required": [
+            "href"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.7.2"
+        }
+      },
+      "required": [
+        "subscription"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Structure (inlined)"
+    },
+    "distanceEvent": {
+      "description": "An enumeration, defining the distance criteria between devices.",
+      "enum": [
+        "AllWithinDistance",
+        "AnyWithinDistance",
+        "AllBeyondDistance",
+        "AnyBeyondDistance"
+      ],
+      "type": "string"
+    },
+    "monitoredUsers": {
+      "description": "A type containing list of users.",
+      "properties": {
+        "resourceURL": {
+          "description": "Self referring URL",
+          "type": "string",
+          "x-etsi-mec-cardinality": 1,
+          "x-etsi-mec-origin-type": "anyURI"
+        },
+        "user": {
+          "description": "Collection of the zone information list.",
+          "items": {
+            "description": "This type represents the information related to a user attached to an access point associated to the MEC host, such access point is in scope of the Location Service instance.",
+            "required": [
+              "address",
+              "accessPointId",
+              "zoneId",
+              "resourceURL",
+              "timestamp"
+            ],
+            "type": "object",
+            "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.",
+            "x-etsi-ref": "6.2.2",
+            "properties": {
+              "address": {
+                "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "AnyURI"
+              },
+              "AccessPointId": {
+                "description": "The identity of the access point the user is currently on, see note 1.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "zoneId": {
+                "description": "The identity of the zone the user is currently within, see note 1.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "resourceURL": {
+                "description": "Self-referring URL, see note 1.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "AnyURI"
+              },
+              "timestamp": {
+                "properties": {
+                  "nanoSeconds": {
+                    "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uint32"
+                  },
+                  "seconds": {
+                    "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uint32"
+                  }
+                },
+                "required": [
+                  "seconds",
+                  "nanoSeconds"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.5.2"
+              },
+              "locationInfo": {
+                "properties": {
+                  "accuracy": {
+                    "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "accuracyAltitude": {
+                    "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "accuracySemiMinor": {
+                    "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "altitude": {
+                    "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "confidence": {
+                    "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "includedAngle": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "innerRadius": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "latitude": {
+                    "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                    "format": "float",
+                    "items": {
+                      "type": "number"
+                    },
+                    "minItems": 1,
+                    "type": "array",
+                    "x-etsi-mec-cardinality": "1..N",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "longitude": {
+                    "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                    "format": "float",
+                    "items": {
+                      "type": "number"
+                    },
+                    "minItems": 1,
+                    "type": "array",
+                    "x-etsi-mec-cardinality": "1..N",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "offsetAngle": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "orientationMajorAxis": {
+                    "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "shape": {
+                    "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                    "enum": [
+                      1,
+                      2,
+                      3,
+                      4,
+                      5,
+                      6,
+                      7
+                    ],
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Enum_inlined"
+                  },
+                  "uncertaintyRadius": {
+                    "description": "Present only if \"shape\" equals 6.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "velocity": {
+                    "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                    "properties": {
+                      "bearing": {
+                        "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "horizontalSpeed": {
+                        "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "uncertainty": {
+                        "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "velocityType": {
+                        "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                        "enum": [
+                          1,
+                          2,
+                          3,
+                          4
+                        ],
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Enum_inlined"
+                      },
+                      "verticalSpeed": {
+                        "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "Int"
+                      },
+                      "verticalUncertainty": {
+                        "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "UnsignedInt"
+                      }
+                    },
+                    "required": [
+                      "velocityType",
+                      "bearing",
+                      "horizontalSpeed"
+                    ],
+                    "type": "object",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Structure (inlined)"
+                  }
+                },
+                "required": [
+                  "latitude",
+                  "longitude",
+                  "shape"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.5.3"
+              },
+              "civicInfo": {
+                "description": "Indicates a Civic address",
+                "type": "object",
+                "required": [
+                  "country"
+                ],
+                "properties": {
+                  "country": {
+                    "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": 1,
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A1": {
+                    "description": "National subdivisions (state, canton, region, province, prefecture)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A2": {
+                    "description": "County, parish, gun (JP), district (IN)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A3": {
+                    "description": "City, township, shi (JP)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A4": {
+                    "description": "City division, borough, city district, ward, chou (JP)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A5": {
+                    "description": "Neighbourhood, block",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "A6": {
+                    "description": "Group of streets below the neighbourhood level",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "PRD": {
+                    "description": "Leading street direction",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "POD": {
+                    "description": "Trailing street suffix",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "STS": {
+                    "description": "Street suffix or type",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "HNO": {
+                    "description": "House number",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "HNS": {
+                    "description": "House number suffix",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "LMK": {
+                    "description": "Landmark or vanity address",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "LOC": {
+                    "description": "Additional location information",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "NAM": {
+                    "description": "Name (residence and office occupant)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "PC": {
+                    "description": "Postal/zip code",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "BLD": {
+                    "description": "Building (structure)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "UNIT": {
+                    "description": "Unit (apartment, suite)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "FLR": {
+                    "description": "Floor",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "ROOM": {
+                    "description": "Room",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "PLC": {
+                    "description": "Place-type",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "PCN": {
+                    "description": "Postal community name",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "POBOX": {
+                    "description": "Post office box (P.O. box)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "ADDCODE": {
+                    "description": "Additional code",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "SEAT": {
+                    "description": "Seat (desk, cubicle, workstation)",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "RD": {
+                    "description": "Primary road or street",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "RDSEC": {
+                    "description": "Road clause",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "RDBR": {
+                    "description": "Road branch",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "RDSUBBR": {
+                    "description": "Road sub-branch",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "PRM": {
+                    "description": "Road pre-modifier",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "POM": {
+                    "description": "Road post-modifier",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "usageRules": {
+                    "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "method": {
+                    "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "providedBy": {
+                    "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  }
+                }
+              },
+              "ancillaryInfo": {
+                "description": "Reserved for future use.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "relativeLocationInfo": {
+                "properties": {
+                  "X": {
+                    "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "Y": {
+                    "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "Z": {
+                    "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                    "format": "float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "mapInfo": {
+                    "properties": {
+                      "ancillaryMapInfo": {
+                        "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                        "type": "object",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "Not_specified"
+                      },
+                      "mapId": {
+                        "description": "Indicates the ID of the map. ",
+                        "type": "string",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "String"
+                      },
+                      "origin": {
+                        "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                        "properties": {
+                          "altitude": {
+                            "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                            "format": "float",
+                            "type": "number",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Float"
+                          },
+                          "latitude": {
+                            "description": "Location latitude, expressed in the range -90° to +90°.",
+                            "format": "float",
+                            "type": "number",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "Float"
+                          },
+                          "longitude": {
+                            "description": "Location longitude, expressed in the range -180° to +180°.",
+                            "format": "float",
+                            "type": "number",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "Float"
+                          }
+                        },
+                        "required": [
+                          "latitude",
+                          "longitude"
+                        ],
+                        "type": "object",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "Structure(inlined)"
+                      }
+                    },
+                    "required": [
+                      "mapId"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.2.4"
+                  }
+                },
+                "required": [
+                  "mapInfo",
+                  "X",
+                  "Y"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.2.3"
+              }
+            }
+          },
+          "type": "array",
+          "x-etsi-mec-cardinality": "0..N",
+          "x-etsi-mec-origin-type": "UserInfo"
+        }
+      },
+      "required": [
+        "resourceURL"
+      ],
+      "type": "object"
+    },
+    "notificationType": {
+      "description": "Shall be set to \"UserDistanceNotification\".",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "timeStamp": {
+      "properties": {
+        "nanoSeconds": {
+          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        },
+        "seconds": {
+          "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.2"
+    }
+  },
+  "required": [
+    "notificationType",
+    "monitoredUsers",
+    "distanceEvent",
+    "_links"
+  ],
+  "type": "object",
+  "x-etsi-notes": "NOTE:\tAs specified in [6], clause 5.2.3.2.",
+  "x-etsi-ref": "6.4.9"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEDISTSUB/schemas/UserDistanceSubscription.schema.json b/MEC013/SRV/UEDISTSUB/schemas/UserDistanceSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6423a84b3cb0db0f248f3b75d48dac16cbdf182a
--- /dev/null
+++ b/MEC013/SRV/UEDISTSUB/schemas/UserDistanceSubscription.schema.json
@@ -0,0 +1,168 @@
+{
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "checkImmediate": {
+            "type": "boolean"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "criteria": {
+            "description": "An enumeration, defining the distance criteria between devices.",
+            "enum": [
+              "AllWithinDistance",
+              "AnyWithinDistance",
+              "AllBeyondDistance",
+              "AnyBeyondDistance"
+            ],
+            "type": "string"
+          },
+          "distance": {
+            "description": "Distance between users that shall be monitored. The unit is meter.",
+            "format": "float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "monitoredAddress": {
+            "description": "Contains addresses of users to monitor (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 1,
+            "type": "array",
+            "x-etsi-mec-cardinality": "1..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "referenceAddress": {
+            "description": "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserDistanceSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "trackingAccuracy": {
+            "description": "Number of meters of acceptable error in tracking distance.",
+            "format": "float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        }
\ No newline at end of file
diff --git a/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot b/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot
index 2f12c916f3ccb8a6477f82da4ec13188df9d5fcb..c17ae424fcfe9353d66a9165527cd0cf88c5182c 100644
--- a/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot
+++ b/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot
@@ -13,51 +13,113 @@ Default Tags    TC_MEC_SRV_UEINFOLOOK
 
 
 *** Test Cases ***
+TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK_01
+    [Documentation]
+    ...    Check that the IUT responds with the information pertaining to one or more UEs in a particular location
+    ...    when queried by a MEC Application - No Filter
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...                 ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...                 ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...                 ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Get list of users
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserList
 
-TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK
+TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK_02
     [Documentation]
     ...    Check that the IUT responds with the information pertaining to one or more UEs in a particular location
-    ...    when queried by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.3
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserList
+    ...    when queried by a MEC Application - Filter with one address
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...        ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
 
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES   INCLUDE_UNDEFINED_SCHEMAS
-    Get list of users with filter    address    ${ACR_ADDRESS}
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Get list of users with filter      address     ${ACR_ADDRESS} 
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    UserList
+    
+
+
+TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK_03
+    [Documentation]
+    ...    Check that the IUT responds with the information pertaining to one or more UEs in a particular location
+    ...    when queried by a MEC Application - Filter with several addresses
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...        ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Get list of users with multiple filters     address   ${ACR_ADDRESS}  address   ${ACR_ADDRESS2}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserList
+    
+
+TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK_04
+    [Documentation]
+    ...    Check that the IUT responds with the information pertaining to one or more UEs in a particular location
+    ...    when queried by a MEC Application - Filter with several zoneIds
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...        ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Get list of users with filter      zoneId     ${ZONE_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserList
+    
+
 
 
 TC_MEC_MEC013_SRV_UEINFOLOOK_001_BR
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.3
+    ...    Check that the IUT responds with the information pertaining to one or more UEs in a particular location
+    ...    when queried by a MEC Application - Filter with several zoneIds
+    ...    Reference    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...        ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get list of users with filter    addr    ${ACR_ADDRESS}
+    Get list of users with filter      addr     ${ACR_ADDRESS}
     Check HTTP Response Status Code Is    400
 
-
 TC_MEC_MEC013_SRV_UEINFOLOOK_001_NF
     [Documentation]
     ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.3
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserList
-
+    ...   a request for an unknown URI is sent by a MEC Application
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.2
+    ...        ETSI GS MEC 013 3.1.1 Clause 6.2.5
+    ...        ETSI GS MEC 013 3.1.1 Clause 7.4.3.1
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get list of users with filter    address    ${ACR_UNKNOWN_IP}
-    Check HTTP Response Status Code Is    200
-    # TODO add check that list is empty
+    Check HTTP Response Status Code Is    404
     
 *** Keywords ***
+Get list of users
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get list of users with multiple filters   
+    [Arguments]    ${key}    ${value}    ${key2}    ${value2}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Log    ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value}&${key2}=${value2}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value}&${key2}=${value2}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
 Get list of users with filter   
-    [Arguments]     ${key}   ${value}
+    [Arguments]     ${key}   ${values}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${values}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
diff --git a/MEC013/SRV/UEINFOLOOK/environment/variables.txt b/MEC013/SRV/UEINFOLOOK/environment/variables.txt
index f85df683a6fec4ddc982da3087bf0c6f28c518b6..08f06f5883183e44788e02ce7ccf7da152a1f03c 100644
--- a/MEC013/SRV/UEINFOLOOK/environment/variables.txt
+++ b/MEC013/SRV/UEINFOLOOK/environment/variables.txt
@@ -1,14 +1,17 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
 # Specific variables
 ${ACR_ADDRESS}               acr:10.0.0.3
+${ACR_ADDRESS2}               acr:10.0.0.4
+${ZONE_ID}               zone001
+${ZONE_ID2}              zone002
 ${ACR_UNKNOWN_IP}            acr:192.168.5.1.1
diff --git a/MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json b/MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json
index 65aefa0403d6e630728b6314856dee4373f7bdaf..7dbdb5ce3c2d3386695d4574a527b6f78a146bd9 100644
--- a/MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json
+++ b/MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json
@@ -1,174 +1,554 @@
 {
-  "type": "object",
-  "properties": {
-    "userList": {
-	"description": "A type containing list of users.",
-	"type": "object",
-	"required": [
-		"resourceURL"
-	],
-	"properties": {
-		"user": {
-			"description": "Collection of the zone information list.",
-			"type": "array",
-			"items": {
-				"properties": {
-					"accessPointId": {
-						"description": "The identity of the access point the user is currently on, see note 1.",
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "String"
-					},
-					"address": {
-						"description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.",
-						"format": "uri",
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "AnyURI"
-					},
-					"ancillaryInfo": {
-						"description": "Reserved for future use.",
-						"type": "string",
-						"x-etsi-mec-cardinality": "0..1",
-						"x-etsi-mec-origin-type": "String"
-					},
-					"contextLocationInfo": {
-						"description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).",
-						"type": "string",
-						"x-etsi-mec-cardinality": "0..1",
-						"x-etsi-mec-origin-type": "String"
-					},
-					"locationInfo": {
-						"properties": {
-							"accuracy": {
-								"type": "number"
-							},
-							"accuracyAltitude": {
-								"type": "number"
-							},
-							"accuracySemiMinor": {
-								"type": "number"
-							},
-							"altitude": {
-								"description": "Location altitude relative to the WGS84 ellipsoid surface.",
-								"type": "number",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "Float"
-							},
-							"confidence": {
-								"type": "number"
-							},
-							"includedAngle": {
-								"type": "number"
-							},
-							"innerRadius": {
-								"type": "number"
-							},
-							"latitude": {
-								"description": "Location latitude, expressed in the range -90 deg to +90 deg. Cardinality greater than one only if \"shape\" equals 7.",
-								"items": {
-									"type": "number"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "Float"
-							},
-							"longitude": {
-								"description": "Location longitude, expressed in the range -180 deg to +180 deg. Cardinality greater than one only if \"shape\" equals 7.",
-								"items": {
-									"type": "number"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "Float"
-							},
-							"offsetAngle": {
-								"type": "number"
-							},
-							"orientationMajorAxis": {
-								"type": "number"
-							},
-							"shape": {
-								"description": "Shape information, as detailed in [14], associated with the reported location coordinate:\n1 = Ellipsoid_Arc\n2 = ellipsoid_Point\n3 = ellipsoid_Point_Altitude\n4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid\n5 = ellipsoid_Point_Uncert_Circle\n6 = ellipsoid_Point_Uncert_Ellipse\n7 = polygon",
-								"enum": [
-									"ELLIPSOID_ARC",
-									"ELLIPSOID_POINT",
-									"ELLIPSOID_POINT_ALTITUDE",
-									"ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID",
-									"ELLIPSOID_POINT_UNCERT_CIRCLE",
-									"ELLIPSOID_POINT_UNCERT_ELLIPSE",
-									"POLYGON"
-								],
-								"type": "string",
-								"x-etsi-mec-cardinality": "1",
-								"x-etsi-mec-origin-type": "Enum (inlined)"
-							},
-							"uncertaintyRadius": {
-								"type": "number"
-							},
-							"velocity": {
-								"description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
-								"type": "object",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "Structure (inlined)"
-							}
-						},
-						"required": [
-							"latitude",
-							"longitude",
-							"shape"
-						],
-						"type": "object",
-						"x-etsi-ref": "6.5.3"
-					},
-					"resourceURL": {
-						"description": "Self-referring URL, see note 1.",
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "String"
-					},
-					"timeStamp": {
-						"properties": {
-							"nanoSeconds": {
-								"type": "number"
-							},
-							"seconds": {
-								"type": "number"
-							}
-						},
-						"required": [
-							"seconds",
-							"nanoSeconds"
-						],
-						"type": "object",
-						"x-etsi-ref": "6.5.2"
-					},
-					"zoneId": {
-						"description": "The identity of the zone the user is currently within, see note 1.",
-						"type": "string",
-						"x-etsi-mec-cardinality": "1",
-						"x-etsi-mec-origin-type": "String"
-					}
-				},
-				"required": [
-					"address",
-					"accessPointId",
-					"zoneId",
-					"resourceURL",
-					"timeStamp"
-				],
-				"type": "object",
-				"x-etsi-notes": ":\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.",
-				"x-etsi-ref": "6.2.2"
-			}
-		},
-		"resourceURL": {
-			"description": "Self referring URL.",
-			"type": "string",
-			"format": "uri",
-			"example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123"
-		}
-	}
-}
-  }
-}
+        "description": "A type containing list of users.",
+        "properties": {
+          "resourceURL": {
+            "description": "Self referring URL",
+            "type": "string",
+            "x-etsi-mec-cardinality": 1,
+            "x-etsi-mec-origin-type": "anyURI"
+          },
+          "user": {
+            "description": "Collection of the zone information list.",
+            "items": {
+              "description": "This type represents the information related to a user attached to an access point associated to the MEC host, such access point is in scope of the Location Service instance.",
+              "required": [
+                "address",
+                "accessPointId",
+                "zoneId",
+                "resourceURL",
+                "timestamp"
+              ],
+              "type": "object",
+              "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.",
+              "x-etsi-ref": "6.2.2",
+              "properties": {
+                "address": {
+                  "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "AnyURI"
+                },
+                "AccessPointId": {
+                  "description": "The identity of the access point the user is currently on, see note 1.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "zoneId": {
+                  "description": "The identity of the zone the user is currently within, see note 1.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "resourceURL": {
+                  "description": "Self-referring URL, see note 1.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "AnyURI"
+                },
+                "timestamp": {
+                  "properties": {
+                    "nanoSeconds": {
+                      "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                      "format": "uint32",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Uint32"
+                    },
+                    "seconds": {
+                      "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                      "format": "uint32",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Uint32"
+                    }
+                  },
+                  "required": [
+                    "seconds",
+                    "nanoSeconds"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.5.2"
+                },
+                "locationInfo": {
+                  "properties": {
+                    "accuracy": {
+                      "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "accuracyAltitude": {
+                      "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "accuracySemiMinor": {
+                      "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "altitude": {
+                      "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                      "format": "float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "confidence": {
+                      "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "includedAngle": {
+                      "description": "Present only if \"shape\" equals 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "innerRadius": {
+                      "description": "Present only if \"shape\" equals 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "latitude": {
+                      "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                      "format": "float",
+                      "items": {
+                        "type": "number"
+                      },
+                      "minItems": 1,
+                      "type": "array",
+                      "x-etsi-mec-cardinality": "1..N",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "longitude": {
+                      "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                      "format": "float",
+                      "items": {
+                        "type": "number"
+                      },
+                      "minItems": 1,
+                      "type": "array",
+                      "x-etsi-mec-cardinality": "1..N",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "offsetAngle": {
+                      "description": "Present only if \"shape\" equals 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "orientationMajorAxis": {
+                      "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "shape": {
+                      "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                      "enum": [
+                        1,
+                        2,
+                        3,
+                        4,
+                        5,
+                        6,
+                        7
+                      ],
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Enum_inlined"
+                    },
+                    "uncertaintyRadius": {
+                      "description": "Present only if \"shape\" equals 6.",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "UnsignedInt"
+                    },
+                    "velocity": {
+                      "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                      "properties": {
+                        "bearing": {
+                          "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "horizontalSpeed": {
+                          "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "uncertainty": {
+                          "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                        },
+                        "velocityType": {
+                          "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                          "enum": [
+                            1,
+                            2,
+                            3,
+                            4
+                          ],
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "Enum_inlined"
+                        },
+                        "verticalSpeed": {
+                          "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Int"
+                        },
+                        "verticalUncertainty": {
+                          "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                        }
+                      },
+                      "required": [
+                        "velocityType",
+                        "bearing",
+                        "horizontalSpeed"
+                      ],
+                      "type": "object",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Structure (inlined)"
+                    }
+                  },
+                  "required": [
+                    "latitude",
+                    "longitude",
+                    "shape"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.5.3"
+                },
+                "civicInfo": {
+                  "description": "Indicates a Civic address",
+                  "type": "object",
+                  "required": [
+                    "country"
+                  ],
+                  "properties": {
+                    "country": {
+                      "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": 1,
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A1": {
+                      "description": "National subdivisions (state, canton, region, province, prefecture)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A2": {
+                      "description": "County, parish, gun (JP), district (IN)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A3": {
+                      "description": "City, township, shi (JP)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A4": {
+                      "description": "City division, borough, city district, ward, chou (JP)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A5": {
+                      "description": "Neighbourhood, block",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "A6": {
+                      "description": "Group of streets below the neighbourhood level",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "PRD": {
+                      "description": "Leading street direction",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "POD": {
+                      "description": "Trailing street suffix",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "STS": {
+                      "description": "Street suffix or type",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "HNO": {
+                      "description": "House number",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "HNS": {
+                      "description": "House number suffix",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "LMK": {
+                      "description": "Landmark or vanity address",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "LOC": {
+                      "description": "Additional location information",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "NAM": {
+                      "description": "Name (residence and office occupant)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "PC": {
+                      "description": "Postal/zip code",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "BLD": {
+                      "description": "Building (structure)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "UNIT": {
+                      "description": "Unit (apartment, suite)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "FLR": {
+                      "description": "Floor",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "ROOM": {
+                      "description": "Room",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "PLC": {
+                      "description": "Place-type",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "PCN": {
+                      "description": "Postal community name",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "POBOX": {
+                      "description": "Post office box (P.O. box)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "ADDCODE": {
+                      "description": "Additional code",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "SEAT": {
+                      "description": "Seat (desk, cubicle, workstation)",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "RD": {
+                      "description": "Primary road or street",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "RDSEC": {
+                      "description": "Road clause",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "RDBR": {
+                      "description": "Road branch",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "RDSUBBR": {
+                      "description": "Road sub-branch",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "PRM": {
+                      "description": "Road pre-modifier",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "POM": {
+                      "description": "Road post-modifier",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "usageRules": {
+                      "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "method": {
+                      "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "providedBy": {
+                      "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  }
+                },
+                "ancillaryInfo": {
+                  "description": "Reserved for future use.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "relativeLocationInfo": {
+                  "properties": {
+                    "X": {
+                      "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                      "format": "float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "Y": {
+                      "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                      "format": "float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "Z": {
+                      "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                      "format": "float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "mapInfo": {
+                      "properties": {
+                        "ancillaryMapInfo": {
+                          "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Not_specified"
+                        },
+                        "mapId": {
+                          "description": "Indicates the ID of the map. ",
+                          "type": "string",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "String"
+                        },
+                        "origin": {
+                          "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                          "properties": {
+                            "altitude": {
+                              "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                              "format": "float",
+                              "type": "number",
+                              "x-etsi-mec-cardinality": "0..1",
+                              "x-etsi-mec-origin-type": "Float"
+                            },
+                            "latitude": {
+                              "description": "Location latitude, expressed in the range -90° to +90°.",
+                              "format": "float",
+                              "type": "number",
+                              "x-etsi-mec-cardinality": "1",
+                              "x-etsi-mec-origin-type": "Float"
+                            },
+                            "longitude": {
+                              "description": "Location longitude, expressed in the range -180° to +180°.",
+                              "format": "float",
+                              "type": "number",
+                              "x-etsi-mec-cardinality": "1",
+                              "x-etsi-mec-origin-type": "Float"
+                            }
+                          },
+                          "required": [
+                            "latitude",
+                            "longitude"
+                          ],
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Structure(inlined)"
+                        }
+                      },
+                      "required": [
+                        "mapId"
+                      ],
+                      "type": "object",
+                      "x-etsi-ref": "6.2.4"
+                    }
+                  },
+                  "required": [
+                    "mapInfo",
+                    "X",
+                    "Y"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.2.3"
+                }
+              }
+            },
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "UserInfo"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot b/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot
index fbe984114a976e7d46efb49a223e6fe7ff6a85d4..9d2157a8adfcbbc5034f9efdc762abfbd48152b5 100644
--- a/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot
+++ b/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot
@@ -8,90 +8,244 @@ Resource    ../../../pics.txt
 Resource    environment/variables.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
-
+Library     String
 Default Tags    TC_MEC_SRV_UELOCLOOK
 
-*** Variables ***
-${response}
-
 *** Test Cases ***
-
 TC_MEC_MEC013_SRV_UELOCLOOK_001_OK
     [Documentation]
-    ...    Check that the IUT responds with a list for the location of User Equipments
+    ...    Check that the IUT responds with a list for the location of User Equipments 
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.3
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserInfo
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get list of user equipments    zoneId    ${ZONE_ID}
+    [Setup]   Create a subscription and get sub id    UserLocationEventSubscription
+    Get subscriptions
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    UserList
-    Check Result Contains    ${response['body']['userList']['user']}    zoneId    ${ZONE_ID}
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    [TearDown]   Remove subscription    ${SUB_ID}
+
+
 
-TC_MEC_MEC013_SRV_UELOCLOOK_001_BR
+TC_MEC_MEC013_SRV_UELOCLOOK_002_OK_01
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
+    ...    Check that the IUT responds with the subscription 
+    ...    when queried by a MEC Application - UE location Event
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.3
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get list of user equipments    z0n3    ${ZONE_ID}
-    Check HTTP Response Status Code Is    400
+    [Setup]   Create multiple subscriptions and get sub ids    UserLocationEventSubscription    UserLocationPeriodicSubscription
+    Get subscriptions with filter    subscription_type     event
+    Check HTTP Response Status Code Is    200
+    Should be Equal   ${response['body']['subscription'][0]['subscriptionType']}    UserLocationEventSubscription
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+
 
-TC_MEC_MEC013_SRV_UELOCLOOK_001_NF
+
+TC_MEC_MEC013_SRV_UELOCLOOK_002_OK_02
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
+    ...    Check that the IUT responds with the subscription 
+    ...    when queried by a MEC Application - UE location Periodic
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.2
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get list of user equipments    zoneId    ${NON_EXISTENT_ZONE_ID}
+    [Setup]   Create multiple subscriptions and get sub ids    UserLocationEventSubscription    UserLocationPeriodicSubscription
+    Get subscriptions with filter    subscription_type     periodic
     Check HTTP Response Status Code Is    200
+    Should be Equal   ${response['body']['subscription'][0]['subscriptionType']}    UserLocationPeriodicSubscription
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+    
 
-TC_MEC_MEC013_SRV_UELOCLOOK_002_OK
+
+
+TC_MEC_MEC013_SRV_UELOCLOOK_002_OK_03
     [Documentation]
-    ...    Check that the IUT responds with a User Equipment information 
-    ...    when queried by a MEC Application
+    ...    Check that the IUT responds with the subscription 
+    ...    when queried by a MEC Application - UE location Event and address
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.2
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserInfo
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Log    Deprecated
-    # Get specific user equipments    ${USER_ID}
-    # Check HTTP Response Status Code Is    200
-    # Check HTTP Response Body Json Schema Is    UserInfo
+    [Setup]   Create multiple subscriptions and get sub ids    UserLocationEventSubscription    UserLocationPeriodicSubscription
+    Get subscriptions with filters    subscription_type     event     address     10.0.0.4
+    Check HTTP Response Status Code Is    200
+    Should be Equal   ${response['body']['subscription'][0]['subscriptionType']}    UserLocationEventSubscription
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+
+
     
+TC_MEC_MEC013_SRV_UELOCLOOK_002_BR
+        [Documentation]
+    ...  Check that the IUT responds with an error when 
+    ...   inconsistent request was sent by a MEC Application - Invalid filter
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create multiple subscriptions and get sub ids    UserLocationEventSubscription    UserLocationPeriodicSubscription
+    Get subscriptions with filter    subscription_type     dummy
+    Check HTTP Response Status Code Is    400
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+    
+
 
 TC_MEC_MEC013_SRV_UELOCLOOK_002_NF
+        [Documentation]
+    ...  Check that the IUT responds with an error 
+    ...  when inconsistent request was sent by a MEC Application
+    ...    Reference  ETSI GS MEC 013 3.1.1, clause 5.3.2,
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1, clause 7.5.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+    Get subscriptions
+    Check HTTP Response Status Code Is    404
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+    
+
+
+TC_MEC_MEC013_SRV_UELOCLOOK_003_OK_01
+    [Documentation]
+    ...    Check that the IUT responds with the subscription 
+    ...    when queried by a MEC Application - UE location Event
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a subscription and get sub id    UserLocationEventSubscription
+    Get subscription by identifier   ${SUB_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserLocationEventSubscription
+    [TearDown]   Remove subscription    ${SUB_ID}
+    
+
+TC_MEC_MEC013_SRV_UELOCLOOK_003_OK_02
+    [Documentation]
+    ...    Check that the IUT responds with the subscription when queried by a MEC Application - UE location Periodic
+    ...
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a subscription and get sub id    UserLocationPeriodicSubscription
+    Get subscription by identifier   ${SUB_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserLocationPeriodicSubscription
+    [TearDown]   Remove subscription    ${SUB_ID}
+    
+
+    
+TC_MEC_MEC013_SRV_UELOCLOOK_003_NF
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
+    ...    Check that the IUT responds with an error 
+    ...    when the non existing subscription is queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.2
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get specific user equipments    ${NON_EXISTENT_USER_ID}
+    [Setup]  Remove subscription    ${NON_EXISTING_SUBSCRIPTION_ID}
+    Get subscription by identifier   ${NON_EXISTING_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
+    
+
 
 *** Keywords ***
-Get list of user equipments
-    [Arguments]    ${key}   ${value}
+Create a subscription and get sub id
+    [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users   ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+
+Create multiple subscriptions and get sub ids
+    [Arguments]    ${content}   ${content2}
+    Create a subscription and get sub id  ${content}
+    Set Suite Variable    ${SUB_ID_01}    ${SUB_ID}
+    Create a subscription and get sub id  ${content2}
+    Set Suite Variable    ${SUB_ID_02}    ${SUB_ID}
 
 
-Get specific user equipments
-    [Arguments]    ${userId}
+Remove subscriptions 
+    [Arguments]    ${subscription_id01}   ${subscription_id02}
+    Remove subscription  ${subscription_id01}
+    Remove subscription  ${subscription_id02}
+    
+
+Remove subscription
+    [Arguments]    ${subscription_id}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users/${userId}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscription_id}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
+  
+
+Get subscription by identifier
+    [Arguments]    ${subscriptionId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+  
+Get subscriptions
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get subscriptions with filter
+    [Arguments]    ${filter_name}    ${filter_value}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users?${filter_name}=${filter_value}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+
+Get subscriptions with filters
+    [Arguments]    ${filter_name01}    ${filter_value01}    ${filter_name02}    ${filter_value02}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users?${filter_name01}=${filter_value01}&${filter_name02}=${filter_value02}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
diff --git a/MEC013/SRV/UELOCLOOK/environment/variables.txt b/MEC013/SRV/UELOCLOOK/environment/variables.txt
index 940607b06c5babe067b3efd5b9d39c61e237ac51..0d2e21a2e8f87a395cd13180ed1c3cfd1736d911 100644
--- a/MEC013/SRV/UELOCLOOK/environment/variables.txt
+++ b/MEC013/SRV/UELOCLOOK/environment/variables.txt
@@ -1,13 +1,13 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.30.7.120
-${PORT}                     30007
+${HOST}                     127.0.0.2
+${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
-${apiRoot}        etsi-013
+${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
 # Specific variables
 ${ZONE_ID}                zone1
@@ -15,4 +15,4 @@ ${NON_EXISTENT_ZONE_ID}   NON_EXISTENT_ZONE_ID
 
 ${USER_ID}                ue1
 ${NON_EXISTENT_USER_ID}   NON_EXISTENT_USER_ID
-
+${NON_EXISTING_SUBSCRIPTION_ID}   NON_EXISTING_SUBSCRIPTION_ID
diff --git a/MEC013/SRV/UELOCLOOK/jsons/UserLocationEventSubscription.json b/MEC013/SRV/UELOCLOOK/jsons/UserLocationEventSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..2d8961cf0878a47fe2f2c9dffd85d1c7cd4cf579
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/jsons/UserLocationEventSubscription.json
@@ -0,0 +1,5 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "address": "acr:10.0.0.1",
+    "callbackReference": "http://10.3.0.0.8:8888"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCLOOK/jsons/UserLocationPeriodicSubscription.json b/MEC013/SRV/UELOCLOOK/jsons/UserLocationPeriodicSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..c55531456dc0bced8c40fff52eb6a99fc93f252a
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/jsons/UserLocationPeriodicSubscription.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "UserLocationPeriodicSubscription",
+     "callbackReference": "http://10.3.0.0.8:8888",
+    "address": "acr:10.0.4.3",
+    "periodicEventInfo": {
+        "reportingAmount": 10,
+        "reportingInterval": 5
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCLOOK/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UELOCLOOK/schemas/NotificationSubscriptionList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b245317effbe3f5a5e90afcf44f372bba29e50c
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/schemas/NotificationSubscriptionList.schema.json
@@ -0,0 +1,55 @@
+{
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCLOOK/schemas/UserLocationEventSubscription.schema.json b/MEC013/SRV/UELOCLOOK/schemas/UserLocationEventSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d8178775c84423e775bc4cb5d7f3ef5cf94ba7c
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/schemas/UserLocationEventSubscription.schema.json
@@ -0,0 +1,165 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "locationEventCriteria": {
+            "description": "List of user event values to generate notifications for (these apply to address specified). ",
+            "items": {
+              "description": "This type represents specified event types for UE location report.",
+              "enum": [
+                "ENTERING_AREA_EVENT",
+                "LEAVING_AREA_EVENT"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(LocationEventType)"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserLocationEventSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "userEventPara": {
+            "properties": {
+              "accessPointList": {
+                "description": "One or more access points forming a monitoring area that could be any shape. See note 1.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "Array(String)"
+              },
+              "occurrenceInfo": {
+                "description": "The enumeration OccurrenceInfo indicates whether event reporting is one time.",
+                "enum": [
+                  "ONE_TIME_EVENT",
+                  "MULTIPLE_TIME_EVENT"
+                ],
+                "type": "string"
+              },
+              "reportingLocationReq": {
+                "description": "This IE shall be set to true if a location estimate is required for each event report.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "boolean"
+              },
+              "zoneId": {
+                "description": "Identifier of zone (e.g. zone001) to monitor. See note 1.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "type": "object",
+            "x-etsi-notes": "NOTE 1:\tOnly one of accessPointList and zoneId may be present.\nNOTE 2:\tAs specified in [17], clause 6.1.6.3.16.",
+            "x-etsi-ref": "6.5.5"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "address"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.",
+        "x-etsi-ref": "6.3.4"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCLOOK/schemas/UserLocationPeriodicSubscription.schema.json b/MEC013/SRV/UELOCLOOK/schemas/UserLocationPeriodicSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ef52447178f83dda8b271442dcecd310e2b69a5
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/schemas/UserLocationPeriodicSubscription.schema.json
@@ -0,0 +1,136 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "periodicEventInfo": {
+            "description": "NOTE: reportingAmount x reportingInterval shall not exceed 8639999 (99 days, 23 hours, 59 minutes and 59 seconds) for compatibility with OMA MLP and RLP.",
+            "type": "object",
+            "required": [
+              "reportingAmount",
+              "reportingInterval"
+            ],
+            "properties": {
+              "reportingAmount": {
+                "description": "Number of event reports",
+                "type": "number",
+                "x-etsi-mec-cardinality": 1,
+                "x-etsi-mec-origin-type": "ReportingAmount"
+              },
+              "reportingInterval": {
+                "description": "Interval of event reports",
+                "type": "number",
+                "x-etsi-mec-cardinality": 1,
+                "x-etsi-mec-origin-type": "reportingInterval"
+              }
+            }
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserLocationPeriodicSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "address",
+          "periodicEventInfo"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [17], clause 6.1.6.2.24.",
+        "x-etsi-ref": "6.3.5"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot b/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot
index ec1cbaeec855b0c7064577048ae2e365f0eb2472..32f9d0f488541b3447c69c7e685af4704e50b114 100644
--- a/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot
+++ b/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot
@@ -8,98 +8,257 @@ Resource    ../../../pics.txt
 Resource    environment/variables.txt
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem 
-
+Library     String
+Library     libraries/Server.py
 Default Tags    TC_MEC_SRV_UELOCSUB
 
 
-*** Variables ***
-${response}
-
 *** Test Cases ***
-
-TC_MEC_MEC013_SRV_UELOCSUB_001_OK
+TC_MEC_MEC013_SRV_UELOCSUB_001_OK_01
     [Documentation]
-    ...    Check that the IUT acknowledges the UE location change subscription request
-    ...    when commanded by a MEC Application and notifies it when the location changes
+    ...    Check that the IUT acknowledges the subscription by a MEC Application to notifications user location event
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.4
-    ...    OpenAPI    https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserTrackingSubscription
-
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.5.3.4
+    ...    
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    UserTrackingSubscription
+    Create a subscription    UserLocationEventSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
     Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    UserTrackingSubscription
-    # TODO fix related TP
-    # Check Result Contains    ${response['body']['userTrackingSubscription']}    clientCorrelator    ${USERTRACKSUB_CLIENT_ID}
-    Should Be Equal As Strings    ${response['body']['userTrackingSubscription']['callbackReference']}    ${USERTRACK_NOTIF_CALLBACK_URI}
-    Should Be Equal As Strings    ${response['body']['userTrackingSubscription']['address']}    ${USERTRACK_IP_ADDRESS}
-
-    # TODO how to send this? The TP has the IUT doing this immediately. Do we want this or will it be discarded as part of the test?
-    # // MEC 013, clause 7.3.4.3
-    # the IUT entity sends a vPOST containing
-    # Uri set to CALLBACK_URL 
-    # body containing
-    # zonalPresenceNotification containing
-    # clientCorrelator set to CLIENT_ID, 
-    # address set to IP_ADDRESS
-    # ;
-    # ;
-    # ;
-    # to the MEC_APP entity
-
-TC_MEC_MEC013_SRV_UELOCSUB_001_BR
+    Check HTTP Response Body Json Schema Is    UserLocationEventSubscription
+    Get value entry from JSON file  UserLocationEventSubscription   subscriptionType
+    ${CLIENT_CORR}       Get value entry from JSON file  UserLocationEventSubscription   clientCorrelator
+    ${CALLBACK_REF}      Get value entry from JSON file  UserLocationEventSubscription   callbackReference
+    ${ADDRESS}           Get value entry from JSON file  UserLocationEventSubscription   address
+    Should be Equal   ${response['body']['subscriptionType']}    UserLocationEventSubscription
+    Should be Equal   ${response['body']['clientCorrelator']}    ${CLIENT_CORR} 
+    Should be Equal   ${response['body']['callbackReference']}   ${CALLBACK_REF}  
+    Should be Equal   ${response['body']['address']}             ${ADDRESS} 
+    Spawn Notification Server     UserLocationEventNotification
+    Validate Json   UserLocationEventNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove a subscription    ${SUB_ID}
+
+
+
+TC_MEC_MEC013_SRV_UELOCSUB_001_OK_02
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
+    ...    Check that the IUT acknowledges the subscription by a MEC Application to notifications user location periodic
     ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.4
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.5
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.5
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.5.3.4
+    ...    
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a subscription    UserLocationPeriodicSubscription
+    Check HTTP Response Status Code Is    201
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    Check HTTP Response Body Json Schema Is    UserLocationPeriodicSubscription
+    Get value entry from JSON file  UserLocationPeriodicSubscription   subscriptionType
+    ${CLIENT_CORR}       Get value entry from JSON file  UserLocationPeriodicSubscription   clientCorrelator
+    ${CALLBACK_REF}      Get value entry from JSON file  UserLocationPeriodicSubscription   callbackReference
+    ${ADDRESS}           Get value entry from JSON file  UserLocationPeriodicSubscription   address
+    ${PER_EVENT_INFO}    Get value entry from JSON file  UserLocationPeriodicSubscription   periodicEventInfo
+    Should be Equal   ${response['body']['subscriptionType']}    UserLocationPeriodicSubscription
+    Should be Equal   ${response['body']['clientCorrelator']}        ${CLIENT_CORR} 
+    Should be Equal   ${response['body']['callbackReference']}       ${CALLBACK_REF}  
+    Should be Equal   ${response['body']['address']}                 ${ADDRESS} 
+    Should be Equal   ${response['body']['periodicEventInfo']}       ${PER_EVENT_INFO} 
+    Spawn Notification Server     UserLocationPeriodicNotification
+    Validate Json   UserLocationPeriodicNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove a subscription    ${SUB_ID}
+
 
+TC_MEC_MEC013_SRV_UELOCSUB_001_BR_01
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.5.3.4
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    UserTrackingSubscriptionError
+    Create a subscription    UserLocationEventSubscriptionBR
     Check HTTP Response Status Code Is    400
 
+TC_MEC_MEC013_SRV_UELOCSUB_001_BR_02
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.5
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.5
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.5.3.4
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    Create a subscription    UserLocationPeriodicSubscriptionBR
+    Check HTTP Response Status Code Is    400
+    
 
 TC_MEC_MEC013_SRV_UELOCSUB_002_OK
     [Documentation]
-    ...    Check that the IUT acknowledges the cancellation of UE location change notifications
+    ...    Check that the IUT acknowledges the cancellation of UE information change notifications 
     ...    when commanded by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.5
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${SUBSCRIPTION_ID}
+    [Setup]   Create a subscription    UserLocationEventSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    Remove a subscription  ${SUB_ID}
     Check HTTP Response Status Code Is    204
 
 
 TC_MEC_MEC013_SRV_UELOCSUB_002_NF
     [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
+    ...    Check that the IUT responds with an error 
+    ...    when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.5
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
+    [Setup]   Remove a subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}
+    Remove a subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
+    
+
+
+TC_MEC_MEC013_SRV_UELOCSUB_003_OK_01
+    [Documentation]
+    ...    Check that the IUT acknowledges a request 
+    ...    to modify an existing subscription by a MEC Application
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a subscription    UserLocationEventSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    Update a subscription    ${SUB_ID}  UserLocationEventSubscriptionUpdate
+    ${CLIENT_CORR}       Get value entry from JSON file  UserLocationEventSubscriptionUpdate   clientCorrelator
+    ${CALLBACK_REF}      Get value entry from JSON file  UserLocationEventSubscriptionUpdate   callbackReference
+    ${ADDRESS}           Get value entry from JSON file  UserLocationEventSubscriptionUpdate   address
+    Should be Equal   ${response['body']['subscriptionType']}    UserLocationEventSubscription
+    Should be Equal   ${response['body']['clientCorrelator']}    ${CLIENT_CORR} 
+    Should be Equal   ${response['body']['callbackReference']}   ${CALLBACK_REF}  
+    Should be Equal   ${response['body']['address']}             ${ADDRESS} 
+    Check HTTP Response Status Code Is    200
+    [TearDown]  Remove a subscription  ${SUB_ID}
+    
+
+TC_MEC_MEC013_SRV_UELOCSUB_003_OK_02
+    [Documentation]
+    ...    Check that the IUT acknowledges a request to modify an existing subscription by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create a subscription    UserLocationPeriodicSubscription
+
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    
+    Update a subscription    ${SUB_ID}  UserLocationPeriodicSubscriptionUpdate
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserLocationPeriodicSubscription
+    ${CLIENT_CORR}       Get value entry from JSON file  UserLocationPeriodicSubscriptionUpdate   clientCorrelator
+    ${CALLBACK_REF}      Get value entry from JSON file  UserLocationPeriodicSubscriptionUpdate   callbackReference
+    ${ADDRESS}           Get value entry from JSON file  UserLocationPeriodicSubscriptionUpdate   address
+    ${PER_EVENT_INFO}    Get value entry from JSON file  UserLocationPeriodicSubscriptionUpdate   periodicEventInfo
+    Should be Equal   ${response['body']['subscriptionType']}    UserLocationPeriodicSubscription
+    Should be Equal   ${response['body']['clientCorrelator']}        ${CLIENT_CORR} 
+    Should be Equal   ${response['body']['callbackReference']}       ${CALLBACK_REF}  
+    Should be Equal   ${response['body']['address']}                 ${ADDRESS} 
+    Should be Equal   ${response['body']['periodicEventInfo']}       ${PER_EVENT_INFO} 
+    [TearDown]  Remove a subscription    ${SUB_ID}
 
 
+
+TC_MEC_MEC013_SRV_UELOCSUB_003_BR_02
+    [Documentation]
+    ...    Check that the IUT responds with an error when received an inconsistent request
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create a subscription    UserLocationPeriodicSubscription
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    Update a subscription    ${SUB_ID}  UserLocationEventSubscriptionUpdateBR
+    Check HTTP Response Status Code Is    400
+    [TearDown]  Remove a subscription  ${SUB_ID}
+    
+
+TC_MEC_MEC013_SRV_UELOCSUB_003_NF
+    [Documentation]
+    ...    Check that the IUT acknowledges a request to modify a not existing subscription by a MEC Application
+    ...    Reference  ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.6.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Remove a subscription  ${NON_EXISTENT_SUBSCRIPTION_ID}  
+    Update a subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}   UserLocationEventSubscriptionUpdate
+    Check HTTP Response Status Code Is    404
+    
 *** Keywords ***
-Create new subscription
+Create a subscription
     [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/userTracking    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users   ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
-Remove subscription  
-    [Arguments]    ${subscriptionId}
+
+Update a subscription
+    [Arguments]    ${subscription_id}   ${content}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/userTracking/${subscriptionId}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}    
+    Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscription_id}   ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
+    
 
+    
+Retrieve a subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+    
+Remove a subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+
+
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    ${length} =  Get Length  ${output}
+    Set Suite Variable    ${payload_notification}    ${output}
+    Run Keyword If  ${length} == 0  Skip
+    
+    
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/environment/variables.txt b/MEC013/SRV/UELOCSUB/environment/variables.txt
index 3881d380f213d60cd743505c509ae7c6d6794fc1..9ba08ce20b37b1e5e6c4581adda8c944d299db7f 100644
--- a/MEC013/SRV/UELOCSUB/environment/variables.txt
+++ b/MEC013/SRV/UELOCSUB/environment/variables.txt
@@ -1,13 +1,13 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
 # Specific variables
 ${USERTRACKSUB_CLIENT_ID}            0123
@@ -15,4 +15,12 @@ ${USERTRACK_NOTIF_CALLBACK_URI}      {"notifyURL": "http://clientApp.example.com
 ${USERTRACK_IP_ADDRESS}              acr:10.0.0.1
 
 ${SUBSCRIPTION_ID}                    e0deee2b-6e50-4f33-ab09-8bf0585025d3
-${NON_EXISTENT_SUBSCRIPTION_ID}       NON_EXISTENT_SUBSCRIPTION_ID
\ No newline at end of file
+${NON_EXISTENT_SUBSCRIPTION_ID}       NON_EXISTENT_SUBSCRIPTION_ID
+
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationEventNotification.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..cab199eb3d6ebcc32de4ab23f824fa044b73ca91
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventNotification.json
@@ -0,0 +1,16 @@
+{
+                              "notificationType": "UserLocationEventNotification",
+                              "timestamp": {
+                                "seconds": 1673507343,
+                                "nanoseconds": 0
+                              },
+                              "address": "acr:10.0.0.1",
+                              "userLocationEvent": "ENTERING_AREA_EVENT",
+                              "zoneId": "zone01",
+                              "accessPointId": "001010000000000000000000000000001",
+                              "_links": {
+                                "subscription": {
+                                  "href": "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123"
+                                }
+                              }
+                            }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscription.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..48ccf95ac4c23f0989051bff3322382b7cc66623
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscription.json
@@ -0,0 +1,6 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "clientCorrelator":"someCorrelator",
+    "address": "acr:10.0.0.1",
+    "callbackReference": "http://10.3.0.0.8:8888"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionBR.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..78d04600f1b03e73d15a580cbab8a860276f453b
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionBR.json
@@ -0,0 +1,5 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "clientCorrelator":"someCorrelator",
+    "address": "acr:10.0.0.1"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdate.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..d19ee4ec4a38271e9e3102f2ea49efd6b5d23829
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdate.json
@@ -0,0 +1,6 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "clientCorrelator":"someCorrelator",
+    "address": "acr:10.0.0.1",
+    "callbackReference": "http://10.3.0.0.9:8888"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdateBR.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdateBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..78d04600f1b03e73d15a580cbab8a860276f453b
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationEventSubscriptionUpdateBR.json
@@ -0,0 +1,5 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "clientCorrelator":"someCorrelator",
+    "address": "acr:10.0.0.1"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicNotification.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..bc3f854607c918d382c3875b2c92163d650d2d5e
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicNotification.json
@@ -0,0 +1,18 @@
+{
+    "notificationType": "UserLocationPeriodicNotification",
+    "result": "SUCCESS",
+    "locationInfo": {
+        "latitude": [
+            50.5
+        ],
+        "longitude": [
+            47.5
+        ],
+        "shape": 1
+    },
+    "_links": {
+        "self": {
+            "href": "http://someip.com/subscriptions/users/subscriptionPeriodicId"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscription.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c7389f109aa3748743a490876280e31c5594231
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscription.json
@@ -0,0 +1,10 @@
+{
+    "subscriptionType": "UserLocationPeriodicSubscription",
+     "callbackReference": "http://10.3.0.0.8:8888",
+     "clientCorrelator":"clientCorrelatorInfo",
+    "address": "acr:10.0.4.3",
+    "periodicEventInfo": {
+        "reportingAmount": 10,
+        "reportingInterval": 5
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionBR.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..ca6c250d3a1e28f6afd38be3eaed88c5322d99dc
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionBR.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "UserLocationPeriodicSubscription",
+     "clientCorrelator":"clientCorrelatorInfo",
+    "address": "acr:10.0.4.3",
+    "periodicEventInfo": {
+        "reportingAmount": 10,
+        "reportingInterval": 5
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionUpdate.json b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..9fb7ef4f63d2d0a5c22dd3cbf9b599a018b6e8e1
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/jsons/UserLocationPeriodicSubscriptionUpdate.json
@@ -0,0 +1,10 @@
+{
+    "subscriptionType": "UserLocationPeriodicSubscription",
+     "callbackReference": "http://10.3.0.0.10:8888",
+     "clientCorrelator":"clientCorrelatorInfo",
+    "address": "acr:10.0.4.3",
+    "periodicEventInfo": {
+        "reportingAmount": 10,
+        "reportingInterval": 5
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscription.json b/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscription.json
deleted file mode 100644
index a5eb08d5b9953ce4fb10863c26852929255c3186..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscription.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-	"userTrackingSubscription": {
-		"clientCorrelator": "0123",
-		"callbackReference": {
-			"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-		},
-		"address": "acr:10.0.0.1",
-		"userEventCriteria": "Transferring"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json b/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json
deleted file mode 100644
index d2f947087cc9f5df7266ad7c3bc8967fd30b73cc..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-	"userTrackingSubscription": {
-		"client": "0123",
-		"callbackReference": {
-			"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-		},
-		"address": "acr:10.0.0.1",
-		"userEventCriteria": "Transferring"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/libraries/Server.py b/MEC013/SRV/UELOCSUB/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4e229887100950e4be32352ff71678089d20380
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/libraries/Server.py
@@ -0,0 +1,149 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        ## If a notification is received, then is returned. Otherwise an empty dictionary. 
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        
+        ##OLD mechanism commented: if no response is received, then read the Notification JSON file and return it. 
+
+        #notification_json= import_notification_json(self.handler.get_resp_body())
+        #return notification_json
+        return {}
+        
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserLocationEventNotification.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserLocationEventNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..0bc9e09f37a66239a12ae82da8b23820425a5179
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/schemas/UserLocationEventNotification.schema.json
@@ -0,0 +1,559 @@
+{
+  "properties": {
+    "_links": {
+      "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+      "properties": {
+        "subscription": {
+          "properties": {
+            "href": {
+              "description": "URI referring to a resource.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uri"
+            }
+          },
+          "required": [
+            "href"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.7.2"
+        }
+      },
+      "required": [
+        "subscription"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Structure (inlined)"
+    },
+    "accessPointId": {
+      "description": "The identity of the access point.\nFor the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within.\nSee note 2.",
+      "type": "string",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "address": {
+      "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+      "format": "uri",
+      "type": "string",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Uri"
+    },
+    "civicInfo": {
+      "description": "Indicates a Civic address",
+      "type": "object",
+      "required": [
+        "country"
+      ],
+      "properties": {
+        "country": {
+          "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+          "type": "string",
+          "x-etsi-mec-cardinality": 1,
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A1": {
+          "description": "National subdivisions (state, canton, region, province, prefecture)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A2": {
+          "description": "County, parish, gun (JP), district (IN)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A3": {
+          "description": "City, township, shi (JP)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A4": {
+          "description": "City division, borough, city district, ward, chou (JP)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A5": {
+          "description": "Neighbourhood, block",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "A6": {
+          "description": "Group of streets below the neighbourhood level",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "PRD": {
+          "description": "Leading street direction",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "POD": {
+          "description": "Trailing street suffix",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "STS": {
+          "description": "Street suffix or type",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "HNO": {
+          "description": "House number",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "HNS": {
+          "description": "House number suffix",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "LMK": {
+          "description": "Landmark or vanity address",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "LOC": {
+          "description": "Additional location information",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "NAM": {
+          "description": "Name (residence and office occupant)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "PC": {
+          "description": "Postal/zip code",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "BLD": {
+          "description": "Building (structure)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "UNIT": {
+          "description": "Unit (apartment, suite)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "FLR": {
+          "description": "Floor",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "ROOM": {
+          "description": "Room",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "PLC": {
+          "description": "Place-type",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "PCN": {
+          "description": "Postal community name",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "POBOX": {
+          "description": "Post office box (P.O. box)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "ADDCODE": {
+          "description": "Additional code",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "SEAT": {
+          "description": "Seat (desk, cubicle, workstation)",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "RD": {
+          "description": "Primary road or street",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "RDSEC": {
+          "description": "Road clause",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "RDBR": {
+          "description": "Road branch",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "RDSUBBR": {
+          "description": "Road sub-branch",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "PRM": {
+          "description": "Road pre-modifier",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "POM": {
+          "description": "Road post-modifier",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "usageRules": {
+          "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "method": {
+          "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "providedBy": {
+          "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        }
+      }
+    },
+    "locationInfo": {
+      "properties": {
+        "accuracy": {
+          "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "accuracyAltitude": {
+          "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "accuracySemiMinor": {
+          "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "altitude": {
+          "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+          "format": "float",
+          "type": "number",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "confidence": {
+          "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "includedAngle": {
+          "description": "Present only if \"shape\" equals 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "innerRadius": {
+          "description": "Present only if \"shape\" equals 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "latitude": {
+          "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+          "format": "float",
+          "items": {
+            "type": "number"
+          },
+          "minItems": 1,
+          "type": "array",
+          "x-etsi-mec-cardinality": "1..N",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "longitude": {
+          "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+          "format": "float",
+          "items": {
+            "type": "number"
+          },
+          "minItems": 1,
+          "type": "array",
+          "x-etsi-mec-cardinality": "1..N",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "offsetAngle": {
+          "description": "Present only if \"shape\" equals 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "orientationMajorAxis": {
+          "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "shape": {
+          "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+          "enum": [
+            1,
+            2,
+            3,
+            4,
+            5,
+            6,
+            7
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum_inlined"
+        },
+        "uncertaintyRadius": {
+          "description": "Present only if \"shape\" equals 6.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "UnsignedInt"
+        },
+        "velocity": {
+          "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+          "properties": {
+            "bearing": {
+              "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "UnsignedInt"
+            },
+            "horizontalSpeed": {
+              "description": "Horizontal speed, expressed in km/h and defined in [14].",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "UnsignedInt"
+            },
+            "uncertainty": {
+              "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "UnsignedInt"
+            },
+            "velocityType": {
+              "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+              "enum": [
+                1,
+                2,
+                3,
+                4
+              ],
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Enum_inlined"
+            },
+            "verticalSpeed": {
+              "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Int"
+            },
+            "verticalUncertainty": {
+              "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "UnsignedInt"
+            }
+          },
+          "required": [
+            "velocityType",
+            "bearing",
+            "horizontalSpeed"
+          ],
+          "type": "object",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "Structure (inlined)"
+        }
+      },
+      "required": [
+        "latitude",
+        "longitude",
+        "shape"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.3"
+    },
+    "notificationType": {
+      "description": "Shall be set to \"UserLocationEventNotification\".",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "relativeLocationInfo": {
+      "properties": {
+        "X": {
+          "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+          "format": "float",
+          "type": "number",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "Y": {
+          "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+          "format": "float",
+          "type": "number",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "Z": {
+          "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+          "format": "float",
+          "type": "number",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "Float"
+        },
+        "mapInfo": {
+          "properties": {
+            "ancillaryMapInfo": {
+              "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Not_specified"
+            },
+            "mapId": {
+              "description": "Indicates the ID of the map. ",
+              "type": "string",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "String"
+            },
+            "origin": {
+              "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+              "properties": {
+                "altitude": {
+                  "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Float"
+                },
+                "latitude": {
+                  "description": "Location latitude, expressed in the range -90° to +90°.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                },
+                "longitude": {
+                  "description": "Location longitude, expressed in the range -180° to +180°.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                }
+              },
+              "required": [
+                "latitude",
+                "longitude"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Structure(inlined)"
+            }
+          },
+          "required": [
+            "mapId"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.2.4"
+        }
+      },
+      "required": [
+        "mapInfo",
+        "X",
+        "Y"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.2.3"
+    },
+    "timeStamp": {
+      "properties": {
+        "nanoSeconds": {
+          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        },
+        "seconds": {
+          "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.2"
+    },
+    "userLocationEvent": {
+      "description": "This type represents specified event types for UE location report.",
+      "enum": [
+        "ENTERING_AREA_EVENT",
+        "LEAVING_AREA_EVENT"
+      ],
+      "type": "string"
+    },
+    "zoneId": {
+      "description": "The identity of the zone. \nFor the events of \"ENTERING_AREA_EVENT\", it is the zone that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it is the zone that the user used to be within.\nSee note 2.",
+      "type": "string",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "String"
+    }
+  },
+  "required": [
+    "notificationType",
+    "userLocationEvent",
+    "_links"
+  ],
+  "type": "object",
+  "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserLocationEventSubscription.",
+  "x-etsi-ref": "6.4.4"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserLocationEventSubscription.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserLocationEventSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6d8178775c84423e775bc4cb5d7f3ef5cf94ba7c
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/schemas/UserLocationEventSubscription.schema.json
@@ -0,0 +1,165 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "locationEventCriteria": {
+            "description": "List of user event values to generate notifications for (these apply to address specified). ",
+            "items": {
+              "description": "This type represents specified event types for UE location report.",
+              "enum": [
+                "ENTERING_AREA_EVENT",
+                "LEAVING_AREA_EVENT"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(LocationEventType)"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserLocationEventSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "userEventPara": {
+            "properties": {
+              "accessPointList": {
+                "description": "One or more access points forming a monitoring area that could be any shape. See note 1.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "Array(String)"
+              },
+              "occurrenceInfo": {
+                "description": "The enumeration OccurrenceInfo indicates whether event reporting is one time.",
+                "enum": [
+                  "ONE_TIME_EVENT",
+                  "MULTIPLE_TIME_EVENT"
+                ],
+                "type": "string"
+              },
+              "reportingLocationReq": {
+                "description": "This IE shall be set to true if a location estimate is required for each event report.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "boolean"
+              },
+              "zoneId": {
+                "description": "Identifier of zone (e.g. zone001) to monitor. See note 1.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "type": "object",
+            "x-etsi-notes": "NOTE 1:\tOnly one of accessPointList and zoneId may be present.\nNOTE 2:\tAs specified in [17], clause 6.1.6.3.16.",
+            "x-etsi-ref": "6.5.5"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "address"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.",
+        "x-etsi-ref": "6.3.4"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicNotification.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..0894d2ae90c15971f592bf6e0bee3fc94c201bd2
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicNotification.schema.json
@@ -0,0 +1,565 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "accessPointId": {
+            "description": "The identity of the access point that the user is currently within. \nSee note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "civicInfo": {
+            "description": "Indicates a Civic address",
+            "type": "object",
+            "required": [
+              "country"
+            ],
+            "properties": {
+              "country": {
+                "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                "type": "string",
+                "x-etsi-mec-cardinality": 1,
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A1": {
+                "description": "National subdivisions (state, canton, region, province, prefecture)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A2": {
+                "description": "County, parish, gun (JP), district (IN)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A3": {
+                "description": "City, township, shi (JP)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A4": {
+                "description": "City division, borough, city district, ward, chou (JP)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A5": {
+                "description": "Neighbourhood, block",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "A6": {
+                "description": "Group of streets below the neighbourhood level",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "PRD": {
+                "description": "Leading street direction",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "POD": {
+                "description": "Trailing street suffix",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "STS": {
+                "description": "Street suffix or type",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "HNO": {
+                "description": "House number",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "HNS": {
+                "description": "House number suffix",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "LMK": {
+                "description": "Landmark or vanity address",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "LOC": {
+                "description": "Additional location information",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "NAM": {
+                "description": "Name (residence and office occupant)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "PC": {
+                "description": "Postal/zip code",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "BLD": {
+                "description": "Building (structure)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "UNIT": {
+                "description": "Unit (apartment, suite)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "FLR": {
+                "description": "Floor",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ROOM": {
+                "description": "Room",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "PLC": {
+                "description": "Place-type",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "PCN": {
+                "description": "Postal community name",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "POBOX": {
+                "description": "Post office box (P.O. box)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ADDCODE": {
+                "description": "Additional code",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "SEAT": {
+                "description": "Seat (desk, cubicle, workstation)",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "RD": {
+                "description": "Primary road or street",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "RDSEC": {
+                "description": "Road clause",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "RDBR": {
+                "description": "Road branch",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "RDSUBBR": {
+                "description": "Road sub-branch",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "PRM": {
+                "description": "Road pre-modifier",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "POM": {
+                "description": "Road post-modifier",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "usageRules": {
+                "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "method": {
+                "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "providedBy": {
+                "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            }
+          },
+          "isFinalNotification": {
+            "description": "Shall be set to true if it is a final notification.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "locationInfo": {
+            "properties": {
+              "accuracy": {
+                "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracyAltitude": {
+                "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracySemiMinor": {
+                "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "altitude": {
+                "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                "format": "float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "confidence": {
+                "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "includedAngle": {
+                "description": "Present only if \"shape\" equals 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "innerRadius": {
+                "description": "Present only if \"shape\" equals 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "latitude": {
+                "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                "format": "float",
+                "items": {
+                  "type": "number"
+                },
+                "minItems": 1,
+                "type": "array",
+                "x-etsi-mec-cardinality": "1..N",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "longitude": {
+                "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                "format": "float",
+                "items": {
+                  "type": "number"
+                },
+                "minItems": 1,
+                "type": "array",
+                "x-etsi-mec-cardinality": "1..N",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "offsetAngle": {
+                "description": "Present only if \"shape\" equals 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "orientationMajorAxis": {
+                "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "shape": {
+                "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                "enum": [
+                  1,
+                  2,
+                  3,
+                  4,
+                  5,
+                  6,
+                  7
+                ],
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Enum_inlined"
+              },
+              "uncertaintyRadius": {
+                "description": "Present only if \"shape\" equals 6.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "velocity": {
+                "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                "properties": {
+                  "bearing": {
+                    "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "horizontalSpeed": {
+                    "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "uncertainty": {
+                    "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  },
+                  "velocityType": {
+                    "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                    "enum": [
+                      1,
+                      2,
+                      3,
+                      4
+                    ],
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Enum_inlined"
+                  },
+                  "verticalSpeed": {
+                    "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Int"
+                  },
+                  "verticalUncertainty": {
+                    "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "UnsignedInt"
+                  }
+                },
+                "required": [
+                  "velocityType",
+                  "bearing",
+                  "horizontalSpeed"
+                ],
+                "type": "object",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Structure (inlined)"
+              }
+            },
+            "required": [
+              "latitude",
+              "longitude",
+              "shape"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.3"
+          },
+          "notificationType": {
+            "description": "Shall be set to \"UserLocationPeriodicNotification\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "relativeLocationInfo": {
+            "properties": {
+              "X": {
+                "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                "format": "float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "Y": {
+                "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                "format": "float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "Z": {
+                "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                "format": "float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "mapInfo": {
+                "properties": {
+                  "ancillaryMapInfo": {
+                    "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                    "type": "object",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Not_specified"
+                  },
+                  "mapId": {
+                    "description": "Indicates the ID of the map. ",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "origin": {
+                    "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                    "properties": {
+                      "altitude": {
+                        "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                        "format": "float",
+                        "type": "number",
+                        "x-etsi-mec-cardinality": "0..1",
+                        "x-etsi-mec-origin-type": "Float"
+                      },
+                      "latitude": {
+                        "description": "Location latitude, expressed in the range -90° to +90°.",
+                        "format": "float",
+                        "type": "number",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Float"
+                      },
+                      "longitude": {
+                        "description": "Location longitude, expressed in the range -180° to +180°.",
+                        "format": "float",
+                        "type": "number",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Float"
+                      }
+                    },
+                    "required": [
+                      "latitude",
+                      "longitude"
+                    ],
+                    "type": "object",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Structure(inlined)"
+                  }
+                },
+                "required": [
+                  "mapId"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.2.4"
+              }
+            },
+            "required": [
+              "mapInfo",
+              "X",
+              "Y"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.2.3"
+          },
+          "result": {
+            "description": "This enumeration represents the result of a localization associated with a notification",
+            "enum": [
+              "SUCCESS",
+              "ABNORMAL"
+            ],
+            "type": "string"
+          },
+          "timeStamp": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "zoneId": {
+            "description": "The identity of the zone that the user is currently within. \nSee note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "notificationType",
+          "result",
+          "_links"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tIf the result is SUCCESS, at least one of locationInfo, civicInfo and relativeLocationInfo shall be present.",
+        "x-etsi-ref": "6.4.5"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicSubscription.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ef52447178f83dda8b271442dcecd310e2b69a5
--- /dev/null
+++ b/MEC013/SRV/UELOCSUB/schemas/UserLocationPeriodicSubscription.schema.json
@@ -0,0 +1,136 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "address": {
+            "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "periodicEventInfo": {
+            "description": "NOTE: reportingAmount x reportingInterval shall not exceed 8639999 (99 days, 23 hours, 59 minutes and 59 seconds) for compatibility with OMA MLP and RLP.",
+            "type": "object",
+            "required": [
+              "reportingAmount",
+              "reportingInterval"
+            ],
+            "properties": {
+              "reportingAmount": {
+                "description": "Number of event reports",
+                "type": "number",
+                "x-etsi-mec-cardinality": 1,
+                "x-etsi-mec-origin-type": "ReportingAmount"
+              },
+              "reportingInterval": {
+                "description": "Interval of event reports",
+                "type": "number",
+                "x-etsi-mec-cardinality": 1,
+                "x-etsi-mec-origin-type": "reportingInterval"
+              }
+            }
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"UserLocationPeriodicSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "address",
+          "periodicEventInfo"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [17], clause 6.1.6.2.24.",
+        "x-etsi-ref": "6.3.5"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json
deleted file mode 100644
index 6e2231ad77d0114857519e598510413bffd73660..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"userTrackingSubscription": {
-			"description": "A type containing user tracking subscription.",
-			"properties": {
-				"address": {
-					"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
-					"type": "string",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"callbackReference": {
-					"properties": {
-						"callbackData": {
-							"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "string"
-						},
-						"notificationFormat": {
-							"enum": [
-								"XML",
-								"JSON"
-							],
-							"type": "string"
-						},
-						"notifyURL": {
-							"description": "Notify Callback URL",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "anyURI"
-						}
-					},
-					"required": [
-						"notifyURL"
-					],
-					"type": "object"
-				},
-				"clientCorrelator": {
-					"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "string"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"userEventCriteria": {
-					"description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-					"items": {
-						"enum": [
-							"Entering",
-							"Leaving",
-							"Transferring"
-						],
-						"type": "string"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "0..N",
-					"x-etsi-mec-origin-type": "UserEventType"
-				}
-			},
-			"required": [
-				"callbackReference",
-				"address"
-			],
-			"type": "object"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json b/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json
deleted file mode 100644
index c7e590d6f5398879d4daabba75e3a530263db8b3..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
-	"definitions": {},
-	"$schema": "http://json-schema.org/draft-07/schema#", 
-	"$id": "https://example.com/object1575044080.json", 
-	"title": "Root", 
-	"type": "object",
-	"required": [
-		"userTrackingSubscription"
-	],
-	"properties": {
-		"userTrackingSubscription": {
-			"$id": "#root/userTrackingSubscription", 
-			"title": "Usertrackingsubscription", 
-			"type": "object",
-			"required": [
-				"clientCorrelator",
-				"callbackReference",
-				"address",
-				"userEventCriteria"
-			],
-			"properties": {
-				"clientCorrelator": {
-					"$id": "#root/userTrackingSubscription/clientCorrelator", 
-					"title": "Clientcorrelator", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"0123"
-					],
-					"pattern": "^.*$"
-				},
-				"callbackReference": {
-					"$id": "#root/userTrackingSubscription/callbackReference", 
-					"title": "Callbackreference", 
-					"type": "object",
-					"required": [
-						"notifyURL"
-					],
-					"properties": {
-						"notifyURL": {
-							"$id": "#root/userTrackingSubscription/callbackReference/notifyURL", 
-							"title": "Notifyurl", 
-							"type": "string",
-							"default": "",
-							"examples": [
-								"http://clientApp.example.com/location_notifications/123456"
-							],
-							"pattern": "^.*$"
-						}
-					}
-				}
-,
-				"address": {
-					"$id": "#root/userTrackingSubscription/address", 
-					"title": "Address", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"acr:10.0.0.1"
-					],
-					"pattern": "^.*$"
-				},
-				"userEventCriteria": {
-					"$id": "#root/userTrackingSubscription/userEventCriteria", 
-					"title": "Usereventcriteria", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"Transferring"
-					],
-					"pattern": "^.*$"
-				}
-			}
-		}
-
-	}
-}
diff --git a/MEC013/SRV/UETESTNOT/PlatUeTestSubscription.robot b/MEC013/SRV/UETESTNOT/PlatUeTestSubscription.robot
new file mode 100644
index 0000000000000000000000000000000000000000..a2f13246e90d13d8196e09834bd9ba831c2caf16
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/PlatUeTestSubscription.robot
@@ -0,0 +1,101 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating UE Test Notification (UETESTNOT) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    ../../../pics.txt
+Resource    environment/variables.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem 
+Library     String
+Library     libraries/Server.py
+Default Tags    TC_MEC_SRV_UELOCSUB
+
+
+*** Test Cases ***
+TC_MEC_MEC013_SRV_UETESTNOT_001_OK
+    [Documentation]
+    ...    Check that the IUT provides a test notification when requested by a MEC Application
+    ...
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.4
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.5.3.4  
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]  Create an UserLocationEvent subscription and get sub id    UserLocationEventSubscription
+    Spawn Notification Server    TestNotification
+    Validate Json   TestNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove an UserLocationEvent subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UETESTNOT_002_OK
+    [Documentation]
+    ...    Check that the IUT terminates notifications after time expiration
+    ...
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.8
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.16.3.4 
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create an UserArea subscription and get sub id   UserAreaSubscription
+    Spawn Notification Server     UserAreaNotification
+    Validate Json   UserAreaNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove an UserArea subscription    ${SUB_ID}
+
+    
+*** Keywords ***
+Create an UserLocationEvent subscription and get sub id
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+    
+Create an UserArea subscription and get sub id
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+        
+Remove an UserLocationEvent subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Remove an UserArea subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/area/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+    
+
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    ${length} =  Get Length  ${output}
+    Set Suite Variable    ${payload_notification}    ${output}
+    Run Keyword If  ${length} == 0  Skip
+    
+    
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/README.md b/MEC013/SRV/UETESTNOT/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MEC013/SRV/UETESTNOT/environment/variables.txt b/MEC013/SRV/UETESTNOT/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..50c62aa7d4a5cb1359c29a8d03d4c1e668ffafee
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/environment/variables.txt
@@ -0,0 +1,21 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                   http
+${HOST}                     127.0.0.1
+${PORT}                     8081
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}        location
+${apiVersion}     v3
+
+${SUB_ID}
+${NON_EXISTENT_SUBSCRIPTION_ID}       NON_EXISTENT_SUBSCRIPTION_ID
+
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
diff --git a/MEC013/SRV/UETESTNOT/jsons/TestNotification.json b/MEC013/SRV/UETESTNOT/jsons/TestNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..75ae5984ef0d53ccd89aff5bc851d803a1881194
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/jsons/TestNotification.json
@@ -0,0 +1,8 @@
+{
+  "_links": {
+    "self": {
+      "href": "https://someurl.com/subscriptions/users/subscriptionId"
+    }
+  },
+  "notificationType": "TestNotification"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/jsons/UserAreaNotification.json b/MEC013/SRV/UETESTNOT/jsons/UserAreaNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..21d73f3e205c839d5eb5d40baa22d7822e208e1d
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/jsons/UserAreaNotification.json
@@ -0,0 +1,12 @@
+{
+    "notificationType": "UserAreaNotification",
+    "callbackReference":"127.0.0.1:8888/callback_uri",
+    "address": "http://someuri.com/123",
+    "civicInfo": { 
+    	"country": "A1"
+    },
+    "userLocationEvent": "ENTERING_AREA_EVENT",
+    "_links": {
+        "subscription": "someuri"
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/jsons/UserAreaSubscription.json b/MEC013/SRV/UETESTNOT/jsons/UserAreaSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..accbfc3ab904becfc3282fda9a499cd8f1b11f92
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/jsons/UserAreaSubscription.json
@@ -0,0 +1,29 @@
+{
+    "subscriptionType": "userAreaSubscription",
+    "clientCorrelator": "0123",
+    "callbackReference": "http://my.callback.com/area_notification/some-id",
+    "_links": {
+        "self": {
+            "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
+        }
+    },
+    "areaDefine": {
+        "shape": 1,
+        "points": [
+            {
+                "latitude": -80.86302,
+                "longitude": 41.277306
+            }
+        ],
+        "radius": null
+    },
+    "addressList": [
+        "acr:10.0.0.1",
+        "acr:10.0.0.2"
+    ],
+    "trackingAccuracy": 10.99,
+    "expiryDeadline": {
+        "seconds": 1973507343,
+        "nanoSeconds\"": 0
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/jsons/UserLocationEventSubscription.json b/MEC013/SRV/UETESTNOT/jsons/UserLocationEventSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..843f42fcf3645744376adbb0d611dff333d7a66a
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/jsons/UserLocationEventSubscription.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "UserLocationEventSubscription",
+    "clientCorrelator":"someCorrelator",
+    "address": "acr:10.0.0.1",
+    "callbackReference": "http://10.3.0.0.8:8888",
+    "requestTestNotification":"true"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/libraries/Server.py b/MEC013/SRV/UETESTNOT/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce79b6f5b68b33a8f6bbba30fc7aa609e7cc505f
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/libraries/Server.py
@@ -0,0 +1,149 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        ## If a notification is received, then is returned. Otherwise an empty dictionary. 
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        
+        ##OLD mechanism commented: if no response is received, then read the Notification JSON file and return it. 
+
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        #return notification_json
+        return {}
+        
diff --git a/MEC013/SRV/UETESTNOT/schemas/TestNotification.schema.json b/MEC013/SRV/UETESTNOT/schemas/TestNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..af01800c08deace52ef379d411abec9994efd4ae
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/schemas/TestNotification.schema.json
@@ -0,0 +1,43 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "notificationType": {
+            "description": "Shall be set to \"TestNotification\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "notificationType",
+          "_links"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.4.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UETESTNOT/schemas/UserAreaNotification.schema.json b/MEC013/SRV/UETESTNOT/schemas/UserAreaNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..ea82b65679385ff09ab2a7eb95f9e06527f67b1e
--- /dev/null
+++ b/MEC013/SRV/UETESTNOT/schemas/UserAreaNotification.schema.json
@@ -0,0 +1,539 @@
+{
+  "properties": {
+      "_links": {
+          "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+          "properties": {
+              "subscription": {
+                  "description": "URI referring to a resource.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+              }
+          },
+          "required": [
+              "subscription"
+          ],
+          "type": "object",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "Structure (inlined)"
+      },
+      "address": {
+          "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+          "format": "uri",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uri"
+      },
+      "civicInfo": {
+          "description": "Indicates a Civic address",
+          "type": "object",
+          "required": [
+              "country"
+          ],
+          "properties": {
+              "country": {
+                  "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": 1,
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A1": {
+                  "description": "National subdivisions (state, canton, region, province, prefecture)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A2": {
+                  "description": "County, parish, gun (JP), district (IN)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A3": {
+                  "description": "City, township, shi (JP)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A4": {
+                  "description": "City division, borough, city district, ward, chou (JP)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A5": {
+                  "description": "Neighbourhood, block",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "A6": {
+                  "description": "Group of streets below the neighbourhood level",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PRD": {
+                  "description": "Leading street direction",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POD": {
+                  "description": "Trailing street suffix",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "STS": {
+                  "description": "Street suffix or type",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "HNO": {
+                  "description": "House number",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "HNS": {
+                  "description": "House number suffix",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "LMK": {
+                  "description": "Landmark or vanity address",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "LOC": {
+                  "description": "Additional location information",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "NAM": {
+                  "description": "Name (residence and office occupant)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PC": {
+                  "description": "Postal/zip code",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "BLD": {
+                  "description": "Building (structure)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "UNIT": {
+                  "description": "Unit (apartment, suite)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "FLR": {
+                  "description": "Floor",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "ROOM": {
+                  "description": "Room",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PLC": {
+                  "description": "Place-type",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PCN": {
+                  "description": "Postal community name",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POBOX": {
+                  "description": "Post office box (P.O. box)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "ADDCODE": {
+                  "description": "Additional code",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "SEAT": {
+                  "description": "Seat (desk, cubicle, workstation)",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RD": {
+                  "description": "Primary road or street",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDSEC": {
+                  "description": "Road clause",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDBR": {
+                  "description": "Road branch",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "RDSUBBR": {
+                  "description": "Road sub-branch",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "PRM": {
+                  "description": "Road pre-modifier",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "POM": {
+                  "description": "Road post-modifier",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "usageRules": {
+                  "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "method": {
+                  "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              },
+              "providedBy": {
+                  "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "String"
+              }
+          }
+      },
+      "locationInfo": {
+          "properties": {
+              "accuracy": {
+                  "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracyAltitude": {
+                  "description": "Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "accuracySemiMinor": {
+                  "description": "Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "altitude": {
+                  "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "confidence": {
+                  "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "includedAngle": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "innerRadius": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "latitude": {
+                  "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
+                  "format": "float",
+                  "items": {
+                      "type": "number"
+                  },
+                  "minItems": 1,
+                  "type": "array",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "longitude": {
+                  "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.",
+                  "format": "float",
+                  "items": {
+                      "type": "number"
+                  },
+                  "minItems": 1,
+                  "type": "array",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "offsetAngle": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "orientationMajorAxis": {
+                  "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "shape": {
+                  "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon",
+                  "enum": [
+                      1,
+                      2,
+                      3,
+                      4,
+                      5,
+                      6,
+                      7
+                  ],
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Enum_inlined"
+              },
+              "uncertaintyRadius": {
+                  "description": "Present only if \"shape\" equals 6.",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "velocity": {
+                  "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
+                  "properties": {
+                      "bearing": {
+                          "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "horizontalSpeed": {
+                          "description": "Horizontal speed, expressed in km/h and defined in [14].",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "uncertainty": {
+                          "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      },
+                      "velocityType": {
+                          "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert",
+                          "enum": [
+                              1,
+                              2,
+                              3,
+                              4
+                          ],
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "Enum_inlined"
+                      },
+                      "verticalSpeed": {
+                          "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Int"
+                      },
+                      "verticalUncertainty": {
+                          "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4.",
+                          "type": "integer",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "UnsignedInt"
+                      }
+                  },
+                  "required": [
+                      "velocityType",
+                      "bearing",
+                      "horizontalSpeed"
+                  ],
+                  "type": "object",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Structure (inlined)"
+              }
+          },
+          "required": [
+              "latitude",
+              "longitude",
+              "shape"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.3"
+      },
+      "notificationType": {
+          "description": "Shall be set to \"UserAreaNotification\".",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "String"
+      },
+      "relativeLocationInfo": {
+          "properties": {
+              "X": {
+                  "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "Y": {
+                  "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "Z": {
+                  "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "0..1",
+                  "x-etsi-mec-origin-type": "Float"
+              },
+              "mapInfo": {
+                  "properties": {
+                      "ancillaryMapInfo": {
+                          "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.",
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Not_specified"
+                      },
+                      "mapId": {
+                          "description": "Indicates the ID of the map. ",
+                          "type": "string",
+                          "x-etsi-mec-cardinality": "1",
+                          "x-etsi-mec-origin-type": "String"
+                      },
+                      "origin": {
+                          "description": "Indicates the location of the map origin in the local Cartesian coordinate system.",
+                          "properties": {
+                              "altitude": {
+                                  "description": "Location altitude relative to the WGS84 ellipsoid surface.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "0..1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              },
+                              "latitude": {
+                                  "description": "Location latitude, expressed in the range -90° to +90°.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              },
+                              "longitude": {
+                                  "description": "Location longitude, expressed in the range -180° to +180°.",
+                                  "format": "float",
+                                  "type": "number",
+                                  "x-etsi-mec-cardinality": "1",
+                                  "x-etsi-mec-origin-type": "Float"
+                              }
+                          },
+                          "required": [
+                              "latitude",
+                              "longitude"
+                          ],
+                          "type": "object",
+                          "x-etsi-mec-cardinality": "0..1",
+                          "x-etsi-mec-origin-type": "Structure(inlined)"
+                      }
+                  },
+                  "required": [
+                      "mapId"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.2.4"
+              }
+          },
+          "required": [
+              "mapInfo",
+              "X",
+              "Y"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.2.3"
+      },
+      "timeStamp": {
+          "properties": {
+              "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+              }
+          },
+          "required": [
+              "seconds",
+              "nanoSeconds"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.2"
+      },
+      "userLocationEvent": {
+          "description": "This type represents specified event types for UE location report.",
+          "enum": [
+              "ENTERING_AREA_EVENT",
+              "LEAVING_AREA_EVENT"
+          ],
+          "type": "string"
+      }
+  },
+  "required": [
+      "notificationType",
+      "address",
+      "userLocationEvent",
+      "_links"
+  ],
+  "type": "object",
+  "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription.",
+  "x-etsi-ref": "6.4.8"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot b/MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot
deleted file mode 100644
index 4d571c1ff84cbddb84e0a594c416d133da13db2c..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot
+++ /dev/null
@@ -1,102 +0,0 @@
-*** Settings ***
-
-Documentation
-...    A test suite for validating UE Tracking Subscribe (UETRACKSUB) operations.
-
-Resource    ../../../GenericKeywords.robot
-Resource    ../../../pics.txt
-Resource    environment/variables.txt
-Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
-Library     OperatingSystem  
-
-Default Tags    TC_MEC_SRV_UETRACKSUB
-
-
-*** Test Cases ***
-
-TC_MEC_MEC013_SRV_UETRACKSUB_001_OK
-    [Documentation]
-    ...    Check that the IUT acknowledges the UE location change subscription request
-    ...    when commanded by a MEC Application and notifies it when the UE changes location
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.8
-    ...    OpenAPI    # TODO check this
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    PeriodicNotificationSubscription
-    Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    periodicNotificationSubscription
-    Check Result Contains    ${response['body']['periodicNotificationSubscription']}    clientCorrelator    ${UE_PERIODIC_SUB_CLIENT_ID}
-    Check Result Contains    ${response['body']['periodicNotificationSubscription']}    callbackReference    ${UE_PERIODIC_NOTIF_CALLBACK_URI}
-    Check Result Contains    ${response['body']['periodicNotificationSubscription']}    address    ${UE_PERIODIC_IP_ADDRESS}
-    
-    # TODO how to send this? The TP has the IUT doing this immediately. Do we want this or will it be discarded as part of the test?
-    # // MEC 013, clause 7.3.8.3
-    # the IUT entity sends a vPOST containing
-    # uri indicating value CALLBACK_URL 
-    # body containing
-    # subscriptionNotification containing
-    # terminalLocation containing
-    # address set to IP_ADDRESS
-    # ;
-    # ;
-    # ;
-    # ;
-
-
-TC_MEC_MEC013_SRV_UETRACKSUB_001_BR
-    [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request with incorrect parameters is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.4
-    ...    OpenAPI    # TODO check this
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Create new subscription    PeriodicNotificationSubscriptionError
-    Check HTTP Response Status Code Is    400
-
-
-TC_MEC_MEC013_SRV_UETRACKSUB_002_OK
-    [Documentation]
-    ...    Check that the IUT acknowledges the cancellation of UE tracking notifications
-    ...    when commanded by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    204
-
-
-TC_MEC_MEC013_SRV_UETRACKSUB_002_NF
-    [Documentation]
-    ...    Check that the IUT responds with an error when
-    ...    a request for an unknown URI is sent by a MEC Application
-    ...
-    ...    Reference    ETSI GS MEC 013 V2.1.1, clause 7.3.6
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Remove subscription    ${NON_EXISTENT_SUBSCRIPTION_ID}
-    Check HTTP Response Status Code Is    404
-
-
-*** Keywords ***
-Create new subscription
-    [Arguments]    ${content}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/periodic     ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    
-Remove subscription  
-    [Arguments]    ${subscriptionId}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/periodic/${subscriptionId}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/environment/variables.txt b/MEC013/SRV/UETRACKSUB/environment/variables.txt
deleted file mode 100644
index 22d520a0559ed53622adcecaad317daae09ebdac..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/environment/variables.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-*** Variables ***
-# Generic variables
-${SCHEMA}                   http
-${HOST}                     10.192.2.172
-${PORT}                     8081
-${response}                         {}
-${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
-${apiRoot}        
-${apiName}        location
-${apiVersion}     v2
-
-# Specific variables
-${UE_PERIODIC_SUB_CLIENT_ID}          0123
-${UE_PERIODIC_NOTIF_CALLBACK_URI}     {"callbackData": "0123","notifyURL": "http://clientApp.example.com/location_notifications/123456"}
-${UE_PERIODIC_IP_ADDRESS}             acr:10.0.0.1
-
-${SUBSCRIPTION_ID}                    e0deee2b-6e50-4f33-ab09-8bf0585025d3
-${NON_EXISTENT_SUBSCRIPTION_ID}       NON_EXISTENT_SUBSCRIPTION_ID
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json b/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json
deleted file mode 100644
index de016d4b506f72c9d8f55b18679fa293274d9538..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-	"periodicNotificationSubscription": {
-		"address": "acr:10.0.0.1",
-		"callbackReference": {
-			"callbackData": "0123",
-			"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-		},
-		"clientCorrelator": "0123",
-		"frequency": "10",
-		"requestedAccuracy": "10"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json b/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json
deleted file mode 100644
index e4340aefc92ae88502c6e74d323cc322d0b350f2..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-	"periodicNotificationSubscription": {
-		"address": "acr:10.0.0.1",
-		"callbackReference": {
-			"callbackData": "0123",
-			"notifyURL": "http://clientApp.example.com/location_notifications/123456"
-		},
-		"client": "0123",
-		"frequency": "10",
-		"requestedAccuracy": "10"
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json
deleted file mode 100644
index 3a495cdf2901ada65ccef735d6f744843db6c861..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json
+++ /dev/null
@@ -1,715 +0,0 @@
-{
-	"type": "object",
-	"required": [
-		"notificationSubscriptionList"
-	],
-	"properties": {
-		"notificationSubscriptionList": {
-			"properties": {
-				"circleNotificationSubscription": {
-					"description": "Collection of CircleNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for notifications, when the area is defined as a circle.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"enteringLeavingCriteria": {
-								"enum": [
-									"Entering",
-									"Leaving"
-								],
-								"type": "string"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"latitude": {
-								"description": "Latitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"longitude": {
-								"description": "Longitude of center point.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"radius": {
-								"description": "Radius circle around center point in meters.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"latitude",
-							"longitude",
-							"radius",
-							"trackingAccuracy",
-							"enteringLeavingCriteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "CircleNotificationSubscription"
-				},
-				"distanceNotificationSubscription": {
-					"description": "Collection of DistanceNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for distance subscription, with reference to other devices.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"checkImmediate": {
-								"description": "Check location immediately after establishing notification.",
-								"type": "boolean",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "boolean"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"count": {
-								"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"criteria": {
-								"enum": [
-									"AllWithinDistance",
-									"AnyWithinDistance",
-									"AllBeyondDistance",
-									"AnyBeyondDistance"
-								],
-								"type": "string"
-							},
-							"distance": {
-								"description": "Distance between devices that shall be monitored.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"monitoredAddress": {
-								"description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"referenceAddress": {
-								"description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"trackingAccuracy": {
-								"description": "Number of meters of acceptable error in tracking distance.",
-								"format": "float",
-								"type": "number",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "float"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"monitoredAddress",
-							"distance",
-							"trackingAccuracy",
-							"criteria",
-							"checkImmediate",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "DistanceNotificationSubscription"
-				},
-				"periodicNotificationSubscription": {
-					"description": "Collection of PeriodicNotificationSubscription elements, see note 2.",
-					"items": {
-						"description": "A type containing data for periodic subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "1..N",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "int"
-							},
-							"frequency": {
-								"description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"link": {
-								"description": "Link to other resources that are in relationship with the resource.",
-								"items": {
-									"description": "Link to other resources",
-									"properties": {
-										"href": {
-											"description": "URI",
-											"format": "anyURI",
-											"type": "string"
-										},
-										"rel": {
-											"description": "Describes the relationship between the URI and the resource.",
-											"type": "string"
-										}
-									},
-									"required": [
-										"rel",
-										"href"
-									],
-									"type": "object"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "Link"
-							},
-							"requestedAccuracy": {
-								"description": "Accuracy of the provided distance in meters.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "int"
-							},
-							"requester": {
-								"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address",
-							"requestedAccuracy",
-							"frequency"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "PeriodicNotificationSubscription"
-				},
-				"resourceURL": {
-					"description": "Self-referring URL, see note 1.",
-					"format": "uri",
-					"type": "string",
-					"x-etsi-mec-cardinality": "1",
-					"x-etsi-mec-origin-type": "AnyURI"
-				},
-				"userTrackingSubscription": {
-					"description": "Collection of UserTrackingSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing user tracking subscription.",
-						"properties": {
-							"address": {
-								"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"address"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "UserTrackingSubscription"
-				},
-				"zonalTrafficSubscription": {
-					"description": "Collection of ZonalTrafficSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zonal traffic subscription",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"duration": {
-								"description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the   period of time for which the subscription will still be valid.",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"interestRealm": {
-								"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
-								"items": {
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"userEventCriteria": {
-								"description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.",
-								"items": {
-									"enum": [
-										"Entering",
-										"Leaving",
-										"Transferring"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "UserEventType"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZonalTrafficSubscription"
-				},
-				"zoneStatusSubscription": {
-					"description": "Collection of ZoneStatusSubscription elements, see note 1.",
-					"items": {
-						"description": "A type containing zone status subscription.",
-						"properties": {
-							"callbackReference": {
-								"properties": {
-									"callbackData": {
-										"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-										"type": "string",
-										"x-etsi-mec-cardinality": "0..1",
-										"x-etsi-mec-origin-type": "string"
-									},
-									"notificationFormat": {
-										"enum": [
-											"XML",
-											"JSON"
-										],
-										"type": "string"
-									},
-									"notifyURL": {
-										"description": "Notify Callback URL",
-										"type": "string",
-										"x-etsi-mec-cardinality": "1",
-										"x-etsi-mec-origin-type": "anyURI"
-									}
-								},
-								"required": [
-									"notifyURL"
-								],
-								"type": "object"
-							},
-							"clientCorrelator": {
-								"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "string"
-							},
-							"numberOfUsersAPThreshold": {
-								"description": "Threshold number of users in an access point which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"numberOfUsersZoneThreshold": {
-								"description": "Threshold number of users in a zone which if crossed shall cause a notification",
-								"type": "integer",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "unsignedInt"
-							},
-							"operationStatus": {
-								"description": "List of operation status values to generate notifications for (these apply to all access points within a zone).",
-								"items": {
-									"enum": [
-										"Serviceable",
-										"Unserviceable",
-										"Unknown"
-									],
-									"type": "string"
-								},
-								"type": "array",
-								"x-etsi-mec-cardinality": "0..N",
-								"x-etsi-mec-origin-type": "OperationStatus"
-							},
-							"resourceURL": {
-								"description": "Self referring URL",
-								"type": "string",
-								"x-etsi-mec-cardinality": "0..1",
-								"x-etsi-mec-origin-type": "anyURI"
-							},
-							"zoneId": {
-								"description": "Identifier of zone",
-								"type": "string",
-								"x-etsi-mec-cardinality": 1,
-								"x-etsi-mec-origin-type": "string"
-							}
-						},
-						"required": [
-							"callbackReference",
-							"zoneId"
-						],
-						"type": "object"
-					},
-					"minItems": 0,
-					"type": "array",
-					"x-etsi-mec-cardinality": "0.. N",
-					"x-etsi-mec-origin-type": "ZoneStatusSubscription"
-				}
-			},
-			"required": [
-				"resourceURL"
-			],
-			"type": "object",
-			"x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.",
-			"x-etsi-ref": "6.3.3"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json b/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json
deleted file mode 100644
index 5161e70050881ed23e8c2785babbdd46338bd49e..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"periodicNotificationSubscription": {
-			"description": "A type containing data for periodic subscription.",
-			"properties": {
-				"address": {
-					"description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-					"items": {
-						"type": "string"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "1..N",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"callbackReference": {
-					"properties": {
-						"callbackData": {
-							"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
-							"type": "string",
-							"x-etsi-mec-cardinality": "0..1",
-							"x-etsi-mec-origin-type": "string"
-						},
-						"notificationFormat": {
-							"enum": [
-								"XML",
-								"JSON"
-							],
-							"type": "string"
-						},
-						"notifyURL": {
-							"description": "Notify Callback URL",
-							"type": "string",
-							"x-etsi-mec-cardinality": "1",
-							"x-etsi-mec-origin-type": "anyURI"
-						}
-					},
-					"required": [
-						"notifyURL"
-					],
-					"type": "object"
-				},
-				"clientCorrelator": {
-					"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "string"
-				},
-				"duration": {
-					"description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "int"
-				},
-				"frequency": {
-					"description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "int"
-				},
-				"link": {
-					"description": "Link to other resources that are in relationship with the resource.",
-					"items": {
-						"description": "Link to other resources",
-						"properties": {
-							"href": {
-								"description": "URI",
-								"format": "anyURI",
-								"type": "string"
-							},
-							"rel": {
-								"description": "Describes the relationship between the URI and the resource.",
-								"type": "string"
-							}
-						},
-						"required": [
-							"rel",
-							"href"
-						],
-						"type": "object"
-					},
-					"type": "array",
-					"x-etsi-mec-cardinality": "0..N",
-					"x-etsi-mec-origin-type": "Link"
-				},
-				"requestedAccuracy": {
-					"description": "Accuracy of the provided distance in meters.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "int"
-				},
-				"requester": {
-					"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": "0..1",
-					"x-etsi-mec-origin-type": "anyURI"
-				}
-			},
-			"required": [
-				"callbackReference",
-				"address",
-				"requestedAccuracy",
-				"frequency"
-			],
-			"type": "object"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json
deleted file mode 100644
index 4a1d50ec1228db0367834bb06d876e60d339c193..0000000000000000000000000000000000000000
--- a/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-	"definitions": {},
-	"$schema": "http://json-schema.org/draft-07/schema#", 
-	"$id": "https://example.com/object1575044234.json", 
-	"title": "Root", 
-	"type": "object",
-	"required": [
-		"periodicNotificationSubscription"
-	],
-	"properties": {
-		"periodicNotificationSubscription": {
-			"$id": "#root/periodicNotificationSubscription", 
-			"title": "Periodicnotificationsubscription", 
-			"type": "object",
-			"required": [
-				"address",
-				"callbackReference",
-				"clientCorrelator",
-				"frequency",
-				"requestedAccuracy"
-			],
-			"properties": {
-				"address": {
-					"$id": "#root/periodicNotificationSubscription/address", 
-					"title": "Address", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"acr:10.0.0.1"
-					],
-					"pattern": "^.*$"
-				},
-				"callbackReference": {
-					"$id": "#root/periodicNotificationSubscription/callbackReference", 
-					"title": "Callbackreference", 
-					"type": "object",
-					"required": [
-						"callbackData",
-						"notifyURL"
-					],
-					"properties": {
-						"callbackData": {
-							"$id": "#root/periodicNotificationSubscription/callbackReference/callbackData", 
-							"title": "Callbackdata", 
-							"type": "string",
-							"default": "",
-							"examples": [
-								"0123"
-							],
-							"pattern": "^.*$"
-						},
-						"notifyURL": {
-							"$id": "#root/periodicNotificationSubscription/callbackReference/notifyURL", 
-							"title": "Notifyurl", 
-							"type": "string",
-							"default": "",
-							"examples": [
-								"http://clientApp.example.com/location_notifications/123456"
-							],
-							"pattern": "^.*$"
-						}
-					}
-				}
-,
-				"clientCorrelator": {
-					"$id": "#root/periodicNotificationSubscription/clientCorrelator", 
-					"title": "Clientcorrelator", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"0123"
-					],
-					"pattern": "^.*$"
-				},
-				"frequency": {
-					"$id": "#root/periodicNotificationSubscription/frequency", 
-					"title": "Frequency", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"10"
-					],
-					"pattern": "^.*$"
-				},
-				"requestedAccuracy": {
-					"$id": "#root/periodicNotificationSubscription/requestedAccuracy", 
-					"title": "Requestedaccuracy", 
-					"type": "string",
-					"default": "",
-					"examples": [
-						"10"
-					],
-					"pattern": "^.*$"
-				}
-			}
-		}
-
-	}
-}
diff --git a/MEC013/SRV/UEZONELOOK/PlatUeZoneLookup.robot b/MEC013/SRV/UEZONELOOK/PlatUeZoneLookup.robot
new file mode 100644
index 0000000000000000000000000000000000000000..a986ac1fbc33d53b768e3b9733efcfcd9fd6b6fe
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/PlatUeZoneLookup.robot
@@ -0,0 +1,214 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating UE Zone Lookup (UEZONELOOK) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    ../../../pics.txt
+Resource    environment/variables.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem 
+Library     String
+Default Tags    TC_MEC_SRV_RLOCLOOK
+
+
+*** Test Cases ***
+TC_MEC_MEC013_SRV_UEZONELOOK_001_OK
+    [Documentation]
+    ...    Check that the IUT responds with a list zones
+    ...    when queried by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription   ZoneLocationEventSubscription  
+    Get subscriptions
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+TC_MEC_MEC013_SRV_UEZONELOOK_002_OK_01
+    [Documentation]
+    ...    Check that the IUT responds with the subscription when 
+    ...    queried by a MEC Application - Zone location Event
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create multiple subscriptions   ZoneLocationEventSubscription     ZoneStatusSubscription
+    Get sub info with filters    subscription_type    event
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    ZoneLocationEventSubscription
+    [TearDown]  Remove multiple subscriptions    ${FIRST_SUB_ID}    ${SECOND_SUB_ID} 
+
+TC_MEC_MEC013_SRV_UEZONELOOK_002_OK_02
+    [Documentation]
+    ...    Check that the IUT responds with the subscription when 
+    ...    queried by a MEC Application - Zone Status
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create multiple subscriptions   ZoneLocationEventSubscription     ZoneStatusSubscription
+    Get sub info with filters    subscription_type    status
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    ZoneStatusSubscription
+        [TearDown]  Remove multiple subscriptions    ${FIRST_SUB_ID}    ${SECOND_SUB_ID} 
+
+TC_MEC_MEC013_SRV_UEZONELOOK_002_OK_03
+    [Documentation]
+    ...    Check that the IUT responds with the subscription 
+    ...    when queried by a MEC Application - UE location Event and address
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create multiple subscriptions   ZoneLocationEventSubscription     ZoneStatusSubscription
+    Get sub info with multiple filters   subscription_type    status
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    NotificationSubscriptionList
+    Should Be Equal As Strings    ${response['body']['subscription'][0]['subscriptionType']}    ZoneStatusSubscription
+    [TearDown]  Remove multiple subscriptions    ${FIRST_SUB_ID}    ${SECOND_SUB_ID} 
+
+
+
+TC_MEC_MEC013_SRV_UEZONELOOK_002_BR
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when inconsistent request was sent by a MEC Application - Invalid filter
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    [Setup]   Create new subscription   ZoneLocationEventSubscription    
+    Get sub info with filters    subscription_type    dummy
+    Check HTTP Response Status Code Is    400
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONELOOK_002_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error
+    ...     when inconsistent request was sent by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.2
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.3
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.1
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Get the zone info location  ${NOT_EXISTING_SUB_ID}  
+    Check HTTP Response Status Code Is    404
+
+
+
+TC_MEC_MEC013_SRV_UEZONELOOK_003_OK_01
+    [Documentation]
+    ...    Check that the IUT responds with the subscription
+    ...    when queried by a MEC Application - Zone location Event
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.12.3.1
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create multiple subscriptions   ZoneLocationEventSubscription     ZoneStatusSubscription
+    Get single subscription with filter    ${FIRST_SUB_ID}    subscription_type    event
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    ZoneLocationEventSubscription
+    [TearDown]  Remove multiple subscriptions    ${FIRST_SUB_ID}    ${SECOND_SUB_ID} 
+
+
+TC_MEC_MEC013_SRV_UEZONELOOK_003_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when the non existing subscription is queried by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.12.3.1
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription   ZoneLocationEventSubscription
+    Get single subscription with filter    ${NOT_EXISTING_SUB_ID}    subscription_type    event
+    Check HTTP Response Status Code Is    404
+    [Teardown]  Remove subscription    ${SUB_ID} 
+         
+
+*** Keywords ***
+Create new subscription
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+
+
+Create multiple subscriptions
+    [Arguments]    ${first_sub}      ${second_sub}
+    Create new subscription   ${first_sub}
+    Set Suite Variable    ${FIRST_SUB_ID}    ${SUB_ID}
+    Create new subscription   ${second_sub}
+    Set Suite Variable    ${SECOND_SUB_ID}    ${SUB_ID}
+
+
+Remove subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}    
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones/${subscription_id}
+    ${output}=    Output    response
+
+Remove multiple subscriptions
+    [Arguments]    ${first_sub_id}      ${second_sub_id}
+    Remove subscription   ${first_sub_id}
+    Remove subscription   ${second_sub_id}
+        
+
+
+Get sub info with filters
+    [Arguments]    ${filter_key}    ${filter_value}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones?${filter_key}=${filter_value}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get sub info with multiple filters
+    [Arguments]    ${filter_key}    ${filter_value}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones?${filter_key}=${filter_value}&address=10.30.0.3
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+    
+Get the zone info location 
+    [Arguments]    ${zoneId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones/${zoneId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Get subscriptions
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get single subscription with filter
+    [Arguments]    ${subscription_id}    ${filter_key}  ${filter_value}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones/${subscription_id}?${filter_key}=${filter_value}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
diff --git a/MEC013/SRV/UEZONELOOK/README.md b/MEC013/SRV/UEZONELOOK/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MEC013/SRV/ZOINFOLOOK/environment/variables.txt b/MEC013/SRV/UEZONELOOK/environment/variables.txt
similarity index 60%
rename from MEC013/SRV/ZOINFOLOOK/environment/variables.txt
rename to MEC013/SRV/UEZONELOOK/environment/variables.txt
index a9bf262d487dcf1465071bbaa445ce33425ffcd5..585984a3819f9c80c71bfa055580b9fe5d80cba4 100644
--- a/MEC013/SRV/ZOINFOLOOK/environment/variables.txt
+++ b/MEC013/SRV/UEZONELOOK/environment/variables.txt
@@ -1,14 +1,13 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
+${HOST}                     127.0.0.1
 ${PORT}                     8081
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        location
-${apiVersion}     v2
+${apiVersion}     v3
 
 # Specific variables
-${ZONE_ID}                    5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
-${NON_EXISTENT_ZONE_ID}       NON_EXISTENT_ZONE_ID
+${NOT_EXISTING_SUB_ID}       NOT_EXISTING_SUB_ID
diff --git a/MEC013/SRV/UEZONELOOK/jsons/ZoneLocationEventSubscription.json b/MEC013/SRV/UEZONELOOK/jsons/ZoneLocationEventSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..2015771dd79ccc8a68460405b74aa1dcff95e3b6
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/jsons/ZoneLocationEventSubscription.json
@@ -0,0 +1,8 @@
+{
+    "subscriptionType": "ZoneLocationEventSubscription",
+    "callbackReference": "http://my.callback.com/zone-notification/some-id",
+    "zoneId": "zone01",
+    "locationEventCriteria": [
+        "ENTERING_AREA_EVENT"
+    ]
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONELOOK/jsons/ZoneStatusSubscription.json b/MEC013/SRV/UEZONELOOK/jsons/ZoneStatusSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..eea7a4b67f89554854c076d435a9e11943f6d75b
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/jsons/ZoneStatusSubscription.json
@@ -0,0 +1,8 @@
+{
+  "callbackReference": "http://someurl.com/callback_uri",
+  "operationStatus": [
+    "Unknown"
+  ],
+  "subscriptionType": "ZoneStatusSubscription",
+  "zoneId": "zoneId"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONELOOK/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEZONELOOK/schemas/NotificationSubscriptionList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b245317effbe3f5a5e90afcf44f372bba29e50c
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/schemas/NotificationSubscriptionList.schema.json
@@ -0,0 +1,55 @@
+{
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONELOOK/schemas/ZoneLocationEventSubscription.schema.json b/MEC013/SRV/UEZONELOOK/schemas/ZoneLocationEventSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..9d16c052a38d167f31659003acad331fede50577
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/schemas/ZoneLocationEventSubscription.schema.json
@@ -0,0 +1,161 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "addressList": {
+            "description": "List of the users to be monitored. If not present, all the users need to be monitored.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "locationEventCriteria": {
+            "description": "List of user event values to generate notifications for. ",
+            "items": {
+              "description": "This type represents specified event types for UE location report.",
+              "enum": [
+                "ENTERING_AREA_EVENT",
+                "LEAVING_AREA_EVENT"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(LocationEventType)"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"ZoneLocationEventSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          },
+          "zoneId": {
+            "description": "Identifier of zone (e.g. zone001) to monitor.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "zoneId"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.",
+        "x-etsi-ref": "6.3.6"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONELOOK/schemas/ZoneStatusSubscription.schema.json b/MEC013/SRV/UEZONELOOK/schemas/ZoneStatusSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d576f2e1ce734944d867f28b27280543989fce1
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/schemas/ZoneStatusSubscription.schema.json
@@ -0,0 +1,176 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "lowerNumberOfUsersAPThreshold": {
+            "description": "Threshold number of users in an access point which if crossed downward shall cause a notification",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "lowerNumberOfUsersZoneThreshold": {
+            "description": "Threshold number of users in a zone which if crossed downward shall cause a notification",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "operationStatus": {
+            "description": "List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3.",
+            "items": {
+              "description": "An enumeration defining the operations status of an access point.",
+              "enum": [
+                "Serviceable",
+                "Unserviceable",
+                "Unknown"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "OperationStatus"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"ZoneStatusSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "upperNumberOfUsersAPThreshold": {
+            "description": "Threshold number of users in an access point which if crossed upward shall cause a notification.",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "upperNumberOfUsersZoneThreshold": {
+            "description": "Threshold number of users in a zone which if crossed upward shall cause a notification.",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          },
+          "zoneId": {
+            "description": "Identifier of zone (e.g. zone001) to monitor.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "zoneId"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2.",
+        "x-etsi-ref": "6.3.7"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/PlatUeZoneSubscription.robot b/MEC013/SRV/UEZONESUB/PlatUeZoneSubscription.robot
new file mode 100644
index 0000000000000000000000000000000000000000..888378bbca3bc0ddc5d34adc66a628e853a5e441
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/PlatUeZoneSubscription.robot
@@ -0,0 +1,194 @@
+*** Settings ***
+
+Documentation
+...    A test suite for validating UE Zone Lookup (UEZONELOOK) operations.
+
+Resource    ../../../GenericKeywords.robot
+Resource    ../../../pics.txt
+Resource    environment/variables.txt
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem 
+Library     String
+Library     libraries/Server.py
+Default Tags    TC_MEC_SRV_RLOCLOOK
+
+
+*** Test Cases ***
+TC_MEC_MEC013_SRV_UEZONESUB_001_OK
+    [Documentation]
+    ...    Check that the IUT acknowledges the creation of UE zone subscription request 
+    ...    when commanded by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Create new subscription and get sub id   ZoneLocationEventSubscription  
+    Check HTTP Response Body Json Schema Is    ZoneLocationEventSubscription
+    Check HTTP Response Status Code Is    201
+    Spawn Notification Server    ZoneLocationEventNotification
+    Validate Json   ZoneLocationEventNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_001_OK_02_01
+    [Documentation]
+    ...    Check that the IUT acknowledges the creation of UE zone subscription request
+    ...    when commanded by a MEC Application - OperationStatus constraint
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Create new subscription   ZoneStatusSubscriptionOperationStatus
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is    ZoneLocationEventSubscription
+    Spawn Notification Server    ZoneStatusNotificationOperationStatus
+    Validate Json   ZoneStatusNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_001_OK_02_02
+    [Documentation]
+    ...    Check that the IUT acknowledges the creation of UE zone subscription request
+    ...    when commanded by a MEC Application - UserNumEvent constraint
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Create new subscription and get sub id   ZoneStatusSubscriptionUserConstraints
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is    ZoneLocationEventSubscription
+    Spawn Notification Server    ZoneStatusNotificationUserConstraints
+    Validate Json   ZoneStatusNotification.schema.json    ${payload_notification}
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_001_BR
+    [Documentation]
+    ...    Check that the IUT responds with an error 
+    ...    when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.11
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Create new subscription   ZoneLocationEventSubscriptionError  
+    Check HTTP Response Status Code Is    400
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_002_OK_01
+    [Documentation]
+    ...    Check that the IUT acknowledges the change of UE area subscription request 
+    ...    when commanded by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id   ZoneLocationEventSubscription  
+    Update existing subscription   ${SUB_ID}  ZoneLocationEventSubscriptionUpdate
+    Check HTTP Response Body Json Schema Is    ZoneLocationEventSubscription
+    Check HTTP Response Status Code Is    200
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_002_OK_02
+    [Documentation]
+    ...    Check that the IUT acknowledges the change of UE area subscription request 
+    ...    when commanded by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.7
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id   ZoneStatusSubscriptionUserConstraints  
+    Update existing subscription   ${SUB_ID}   ZoneStatusSubscriptionUpdate
+    Check HTTP Response Body Json Schema Is    ZoneStatusSubscription
+    Check HTTP Response Status Code Is    200
+    [TearDown]  Remove subscription    ${SUB_ID}
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_002_NF
+    [Documentation]
+    ...   Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI
+    ...   is sent by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.2
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Update existing subscription   ${NOT_EXISTING_SUB_ID}   ZoneStatusSubscriptionUpdate
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_003_OK
+    [Documentation]
+    ...    Check that the IUT acknowledges the cancellation of UE area change notifications
+    ...    when commanded by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    [Setup]   Create new subscription and get sub id   ZoneStatusSubscriptionUserConstraints  
+    Remove subscription    ${SUB_ID}
+    Check HTTP Response Status Code Is    204
+
+
+TC_MEC_MEC013_SRV_UEZONESUB_003_NF
+    [Documentation]
+    ...    Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI
+    ...    is sent by a MEC Application
+    ...    ETSI GS MEC 013 3.1.1 Clause 5.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.3.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 6.4.6
+    ...    ETSI GS MEC 013 3.1.1 Clause 7.11.3.4
+    [Tags]    PIC_MEC_PLAT    PIC_SERVICES  
+    Remove subscription    ${NOT_EXISTING_SUB_ID}
+    Check HTTP Response Status Code Is    404
+    
+*** Keywords ***
+Create new subscription and get sub id
+    [Arguments]    ${content}
+    Create new subscription   ${content}
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SUB_ID}    ${elements[3]}
+        
+Create new subscription
+    [Arguments]    ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+
+    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Update existing subscription
+    [Arguments]    ${sub_id}  ${content}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones/${sub_id}   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Remove subscription
+    [Arguments]    ${subscription_id}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}    
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/zones/${subscription_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
+Spawn Notification Server
+    [Arguments]  ${payload_notification}
+    ${output}   Spawn Web Server  ${NOTIFICATION_SERVER_IP}  ${NOTIFICATION_SERVER_PORT}  ${NOTIFICATION_SERVER_TIMEOUT}  ${NOTIFICATION_SERVER_HTTP_METHOD}  ${NOTIFICATION_SERVER_URI}   ${payload_notification} 
+    ${length} =  Get Length  ${output}
+    Set Suite Variable    ${payload_notification}    ${output}
+    Run Keyword If  ${length} == 0  Skip
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/README.md b/MEC013/SRV/UEZONESUB/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MEC013/SRV/UEZONESUB/environment/variables.txt b/MEC013/SRV/UEZONESUB/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ed7a7f5cf0c87504e4418d9c5d111ae80f58ac14
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/environment/variables.txt
@@ -0,0 +1,20 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                   http
+${HOST}                     127.0.0.1
+${PORT}                     8081
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}        location
+${apiVersion}     v3
+
+# Specific variables
+${NOT_EXISTING_SUB_ID}       NOT_EXISTING_SUB_ID
+
+##Notification Server variables
+${NOTIFICATION_SERVER_IP}      127.0.0.1
+${NOTIFICATION_SERVER_PORT}      8888
+${NOTIFICATION_SERVER_HTTP_METHOD}      POST
+${NOTIFICATION_SERVER_URI}      /callback_url
+${NOTIFICATION_SERVER_TIMEOUT}      5
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventNotification.json b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventNotification.json
new file mode 100644
index 0000000000000000000000000000000000000000..f6297eae6dbfc345c0fa6b7197b20d73a4d49a24
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventNotification.json
@@ -0,0 +1,11 @@
+{
+    "notificationType": "ZoneLocationEventNotification",
+    "address": "acr:10.0.0.1",
+    "zoneId": "zone01",
+    "userLocationEvent": "ENTERING_AREA_EVENT",
+    "_links": {
+        "subscription": {
+            "href": "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123"
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscription.json b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..2015771dd79ccc8a68460405b74aa1dcff95e3b6
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscription.json
@@ -0,0 +1,8 @@
+{
+    "subscriptionType": "ZoneLocationEventSubscription",
+    "callbackReference": "http://my.callback.com/zone-notification/some-id",
+    "zoneId": "zone01",
+    "locationEventCriteria": [
+        "ENTERING_AREA_EVENT"
+    ]
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionError.json b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionError.json
new file mode 100644
index 0000000000000000000000000000000000000000..996dbb7aef14ac5a98486ec6bb2bd22f4f97d8ae
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionError.json
@@ -0,0 +1,7 @@
+{
+    "subscriptionType": "ZoneLocationEventSubscription",
+    "zoneId": "zone01",
+    "locationEventCriteria": [
+        "ENTERING_AREA_EVENT"
+    ]
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionUpdate.json b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee18b05a712d94765cb54512f2fa951092cca8f0
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneLocationEventSubscriptionUpdate.json
@@ -0,0 +1,9 @@
+{
+    "subscriptionType": "ZoneLocationEventSubscription",
+    "clientCorrelator":"clientCorrelator",
+    "callbackReference": "http://my.callback.com/zone-notification/some-id",
+    "zoneId": "zone01",
+    "addressList": [
+        "address01","address02"
+    ]
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationOperationStatus.json b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationOperationStatus.json
new file mode 100644
index 0000000000000000000000000000000000000000..66a9a7705de98600cd836ca8f4478995dcc0baef
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationOperationStatus.json
@@ -0,0 +1,11 @@
+{
+    "_links": {
+        "subscription": {
+            "href": "http://someurl.com/subscriptions/zones/ZoneStatusSubscriptionId"
+        }
+    },
+    "accessPointId": "accessPointId",
+    "notificationType": "ZoneStatusNotification",
+    "zoneId": "zoneId",
+    "operationStatus":"Serviceable"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationUserConstraints.json b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationUserConstraints.json
new file mode 100644
index 0000000000000000000000000000000000000000..910dc413dcbea1c0111e91722add5b4898be46ac
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusNotificationUserConstraints.json
@@ -0,0 +1,11 @@
+{
+    "_links": {
+        "subscription": {
+            "href": "http://someurl.com/subscriptions/zones/ZoneStatusSubscriptionId"
+        }
+    },
+    "accessPointId": "accessPointId",
+    "notificationType": "ZoneStatusNotification",
+    "zoneId": "zoneId",
+    "userNumEvent":1
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionOperationStatus.json b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionOperationStatus.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7679252523274279c20e08e19ea939c3252489f
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionOperationStatus.json
@@ -0,0 +1,9 @@
+{
+  "callbackReference": "http://someurl.com/callback_uri",
+  "operationStatus": [
+    "Unknown"
+  ],
+  "subscriptionType": "ZoneStatusSubscription",
+  "zoneId": "zoneId",
+  "operationStatus":"Serviceable"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUpdate.json b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2242e6414ee7f18ee47d23a4de16e88d7f6ac1b
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUpdate.json
@@ -0,0 +1,10 @@
+{
+  "callbackReference": "http://someurl.com/callback_uri",
+  "clientCorrelator":"clientCorrelator",
+  "operationStatus": [
+    "Unknown"
+  ],
+  "subscriptionType": "ZoneStatusSubscription",
+  "zoneId": "zoneId",
+  "operationStatus": ["Serviceable"]
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUserConstraints.json b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUserConstraints.json
new file mode 100644
index 0000000000000000000000000000000000000000..429cea7d35d32af76972257e1678e8215d3e9186
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/jsons/ZoneStatusSubscriptionUserConstraints.json
@@ -0,0 +1,10 @@
+{
+  "callbackReference": "http://someurl.com/callback_uri",
+  "operationStatus": [
+    "Unknown"
+  ],
+  "subscriptionType": "ZoneStatusSubscription",
+  "zoneId": "zoneId",
+  "upperNumberOfUser": 10,
+  "lowerNumberOfUser": 20
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/libraries/Server.py b/MEC013/SRV/UEZONESUB/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce79b6f5b68b33a8f6bbba30fc7aa609e7cc505f
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/libraries/Server.py
@@ -0,0 +1,149 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json, os
+import logging
+
+# Library version
+__version__ = '0.0.1'
+
+def import_notification_json(subscription_type):
+    notification_type = subscription_type.split("Subscription")[0]    
+    file_path = "./jsons/"+notification_type+".json"
+    logging.info(file_path)
+    logging.info(os.listdir())
+    try:
+        with open(file_path, 'r') as json_file:
+            # Load the JSON data
+            data = json.load(json_file)
+            logging.info(data)
+            return data
+    except FileNotFoundError:
+        logging.error(f"Error: File not found at {file_path}")
+
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+                self.req_body = None
+                
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                
+                #if self.path == self.endpoint:
+                #    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                #else:
+                #    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+                
+                content_len = int(self.headers.get('Content-Length'))
+                post_body = self.rfile.read(content_len)
+                self.req_body=post_body
+
+            def get_req_body(self):
+                return self.req_body
+
+            def get_resp_body(self):
+                return self.resp_body
+ 
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            logging.info("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+
+        self.app.handle_request()
+        self.app.server_close()
+        logging.info(self.handler.get_resp_body())
+        ## If a notification is received, then is returned. Otherwise an empty dictionary. 
+        if(self.handler.get_req_body()!=None):
+            return json.loads(self.handler.get_req_body().decode("windows-1252"))
+        
+        ##OLD mechanism commented: if no response is received, then read the Notification JSON file and return it. 
+
+        notification_json= import_notification_json(self.handler.get_resp_body())
+        #return notification_json
+        return {}
+        
diff --git a/MEC013/SRV/UEZONESUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEZONESUB/schemas/NotificationSubscriptionList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4b245317effbe3f5a5e90afcf44f372bba29e50c
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/schemas/NotificationSubscriptionList.schema.json
@@ -0,0 +1,55 @@
+{
+        "description": "This type contains a list of subscriptions.",
+        "properties": {
+          "resourceURL": {
+            "properties": {
+              "href": {
+                "description": "URI referring to a resource.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "required": [
+              "href"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.7.2"
+          },
+          "subscription": {
+            "items": {
+              "description": "",
+              "minItems": 0,
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uri"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..N",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "type": "array"
+          }
+        },
+        "required": [
+          "resourceURL"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventNotification.schema.json b/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..8be26a1a698d604a742e1804da168f359b4047a7
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventNotification.schema.json
@@ -0,0 +1,91 @@
+{
+  "properties": {
+    "_links": {
+      "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+      "properties": {
+        "subscription": {
+          "properties": {
+            "href": {
+              "description": "URI referring to a resource.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uri"
+            }
+          },
+          "required": [
+            "href"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.7.2"
+        }
+      },
+      "required": [
+        "subscription"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Structure (inlined)"
+    },
+    "address": {
+      "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).",
+      "format": "uri",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "Uri"
+    },
+    "notificationType": {
+      "description": "Shall be set to \"ZoneLocationEventNotification\".",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "timeStamp": {
+      "properties": {
+        "nanoSeconds": {
+          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        },
+        "seconds": {
+          "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.2"
+    },
+    "userLocationEvent": {
+      "description": "This type represents specified event types for UE location report.",
+      "enum": [
+        "ENTERING_AREA_EVENT",
+        "LEAVING_AREA_EVENT"
+      ],
+      "type": "string"
+    },
+    "zoneId": {
+      "description": "The identity of the zone. ",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    }
+  },
+  "required": [
+    "notificationType",
+    "address",
+    "userLocationEvent",
+    "zoneId",
+    "_links"
+  ],
+  "type": "object",
+  "x-etsi-ref": "6.4.6"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventSubscription.schema.json b/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..9d16c052a38d167f31659003acad331fede50577
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/schemas/ZoneLocationEventSubscription.schema.json
@@ -0,0 +1,161 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "addressList": {
+            "description": "List of the users to be monitored. If not present, all the users need to be monitored.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(Uri)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "locationEventCriteria": {
+            "description": "List of user event values to generate notifications for. ",
+            "items": {
+              "description": "This type represents specified event types for UE location report.",
+              "enum": [
+                "ENTERING_AREA_EVENT",
+                "LEAVING_AREA_EVENT"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "Array(LocationEventType)"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"ZoneLocationEventSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          },
+          "zoneId": {
+            "description": "Identifier of zone (e.g. zone001) to monitor.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "zoneId"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.",
+        "x-etsi-ref": "6.3.6"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/schemas/ZoneStatusNotification.schema.json b/MEC013/SRV/UEZONESUB/schemas/ZoneStatusNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..a31df5802bd04c1bb4f6a1628e81540c92bc86dc
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/schemas/ZoneStatusNotification.schema.json
@@ -0,0 +1,102 @@
+{
+  "properties": {
+    "_links": {
+      "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+      "properties": {
+        "subscription": {
+          "properties": {
+            "href": {
+              "description": "URI referring to a resource.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uri"
+            }
+          },
+          "required": [
+            "href"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.7.2"
+        }
+      },
+      "required": [
+        "subscription"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Structure (inlined)"
+    },
+    "accessPointId": {
+      "description": "Identifier of an access point (e.g. ap01). Shall be included when userNumEvent related with access point or operationStatus is included.",
+      "type": "string",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "notificationType": {
+      "description": "Shall be set to \"ZoneStatusNotification\".",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    },
+    "operationStatus": {
+      "description": "An enumeration defining the operations status of an access point.",
+      "enum": [
+        "Serviceable",
+        "Unserviceable",
+        "Unknown"
+      ],
+      "type": "string"
+    },
+    "timeStamp": {
+      "properties": {
+        "nanoSeconds": {
+          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        },
+        "seconds": {
+          "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.2"
+    },
+    "userNumEvent": {
+      "description": "Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: 1 = OVER_ZONE_UPPER_THD. 2 = UNDER_ZONE_LOWER_THD. 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD.",
+      "enum": [
+        1,
+        2,
+        3,
+        4
+      ],
+      "type": "integer",
+      "x-etsi-mec-cardinality": "0..1",
+      "x-etsi-mec-origin-type": "Enum(inlined)"
+    },
+    "zoneId": {
+      "description": "The identity of the zone. ",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    }
+  },
+  "required": [
+    "notificationType",
+    "zoneId",
+    "_links"
+  ],
+  "type": "object",
+  "x-etsi-notes": "NOTE:\tAs specified in [5], clause 5.2.3.2.",
+  "x-etsi-ref": "6.4.7"
+}
\ No newline at end of file
diff --git a/MEC013/SRV/UEZONESUB/schemas/ZoneStatusSubscription.schema.json b/MEC013/SRV/UEZONESUB/schemas/ZoneStatusSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d576f2e1ce734944d867f28b27280543989fce1
--- /dev/null
+++ b/MEC013/SRV/UEZONESUB/schemas/ZoneStatusSubscription.schema.json
@@ -0,0 +1,176 @@
+{
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "properties": {
+                  "href": {
+                    "description": "URI referring to a resource.",
+                    "format": "uri",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "Uri"
+                  }
+                },
+                "required": [
+                  "href"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.7.2"
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uri"
+          },
+          "clientCorrelator": {
+            "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "lowerNumberOfUsersAPThreshold": {
+            "description": "Threshold number of users in an access point which if crossed downward shall cause a notification",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "lowerNumberOfUsersZoneThreshold": {
+            "description": "Threshold number of users in a zone which if crossed downward shall cause a notification",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "operationStatus": {
+            "description": "List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3.",
+            "items": {
+              "description": "An enumeration defining the operations status of an access point.",
+              "enum": [
+                "Serviceable",
+                "Unserviceable",
+                "Unknown"
+              ],
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "OperationStatus"
+          },
+          "reportingCtrl": {
+            "properties": {
+              "maximumCount": {
+                "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "maximumFrequency": {
+                "description": "Maximum frequency (in seconds) of notifications per subscription.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              },
+              "minimumInterval": {
+                "description": "Minimum interval between reports in case frequently reporting. Unit is second.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "UnsignedInt"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.6"
+          },
+          "requestTestNotification": {
+            "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
+            "type": "boolean",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Boolean"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"ZoneStatusSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "upperNumberOfUsersAPThreshold": {
+            "description": "Threshold number of users in an access point which if crossed upward shall cause a notification.",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "upperNumberOfUsersZoneThreshold": {
+            "description": "Threshold number of users in a zone which if crossed upward shall cause a notification.",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "UnsignedInt"
+          },
+          "websockNotifConfig": {
+            "properties": {
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Boolean"
+              },
+              "websocketUri": {
+                "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "format": "uri",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uri"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.4"
+          },
+          "zoneId": {
+            "description": "Identifier of zone (e.g. zone001) to monitor.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "zoneId"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2.",
+        "x-etsi-ref": "6.3.7"
+      }
\ No newline at end of file
diff --git a/MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot b/MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot
deleted file mode 100644
index df20a257c976aa73845b73d845ffb4fa351f978d..0000000000000000000000000000000000000000
--- a/MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot
+++ /dev/null
@@ -1,63 +0,0 @@
-*** Settings ***
-
-Documentation
-...    A test suite for validating Radio Node Location Lookup (RLOCLOOK) operations.
-
-Resource    ../../../GenericKeywords.robot
-Resource    ../../../pics.txt
-Resource    environment/variables.txt
-Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
-Library     OperatingSystem 
-
-Default Tags    TC_MEC_SRV_RLOCLOOK
-
-
-*** Test Cases ***
-
-TC_MEC_MEC013_SRV_ZOINFOLOOK_001_OK
-    [Documentation]
-    ...    TO BE COMPLETED
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES    INCLUDE_UNDEFINED_SCHEMAS
-    Get the zones info location list
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    ZoneList
-
-
-TC_MEC_MEC013_SRV_ZOINFOLOOK_002_OK
-    [Documentation]
-    ...    TO BE CMPLETED
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get the zone info location        ${ZONE_ID}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    ZoneInfo
-    Should Be Equal As Strings    ${response['body']['zoneInfo']['zoneId']}    ${ZONE_ID}
-    
-TC_MEC_MEC013_SRV_ZOINFOLOOK_002_NF
-    [Documentation]
-    ...    TO BE CMPLETED
-
-    [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get the zone info location        ${NON_EXISTENT_ZONE_ID}
-    Check HTTP Response Status Code Is    404
-
-*** Keywords ***
-Get the zone info location 
-    [Arguments]    ${zoneId}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/zones/${zoneId}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Get the zones info location list
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/zones
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-
diff --git a/MEC013/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json b/MEC013/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json
deleted file mode 100644
index b39dd2d66523b7856c38c38b002d8e6ff8ea6950..0000000000000000000000000000000000000000
--- a/MEC013/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"zoneInfo": {
-			"description": "A type containing zone information.",
-			"properties": {
-				"numberOfAccessPoints": {
-					"description": "The number of access points within the zone",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"numberOfUnserviceableAccessPoints": {
-					"description": "Number of inoperable access points within the zone.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"numberOfUsers": {
-					"description": "The number of users currently on the access point.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"zoneId": {
-					"description": "Identifier of zone",
-					"type": "string",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "string"
-				}
-			},
-			"required": [
-				"zoneId",
-				"numberOfAccessPoints",
-				"numberOfUnserviceableAccessPoints",
-				"numberOfUsers",
-				"resourceURL"
-			],
-			"type": "object"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC013/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json b/MEC013/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json
deleted file mode 100644
index b39dd2d66523b7856c38c38b002d8e6ff8ea6950..0000000000000000000000000000000000000000
--- a/MEC013/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"zoneInfo": {
-			"description": "A type containing zone information.",
-			"properties": {
-				"numberOfAccessPoints": {
-					"description": "The number of access points within the zone",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"numberOfUnserviceableAccessPoints": {
-					"description": "Number of inoperable access points within the zone.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"numberOfUsers": {
-					"description": "The number of users currently on the access point.",
-					"type": "integer",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "unsignedInt"
-				},
-				"resourceURL": {
-					"description": "Self referring URL",
-					"type": "string",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "anyURI"
-				},
-				"zoneId": {
-					"description": "Identifier of zone",
-					"type": "string",
-					"x-etsi-mec-cardinality": 1,
-					"x-etsi-mec-origin-type": "string"
-				}
-			},
-			"required": [
-				"zoneId",
-				"numberOfAccessPoints",
-				"numberOfUnserviceableAccessPoints",
-				"numberOfUsers",
-				"resourceURL"
-			],
-			"type": "object"
-		}
-	}
-}
\ No newline at end of file
diff --git a/MEC014/SRV/UETAG/PlatUeIdentity.robot b/MEC014/SRV/UETAG/PlatUeIdentity.robot
index c9cdc4c4592559be667d13df886b51745a972d25..d7b7f0e4cdeb33ff0e7c4befff2165c19f90c4a0 100644
--- a/MEC014/SRV/UETAG/PlatUeIdentity.robot
+++ b/MEC014/SRV/UETAG/PlatUeIdentity.robot
@@ -5,153 +5,202 @@
 Resource    environment/variables.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
-Resource    resources/UEidentityAPI.robot
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
 
 
 
 *** Test Cases ***
 TC_MEC_MEC014_SRV_UETAG_001_OK
-    [Documentation]   Request UE Identity Tag information
-    ...  Check that the IUT responds with the information on a UE Identity tag when queried by a MEC Application
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Get UE Identity Tag information
+    [Documentation]  
+    ...  Check that the IUT responds with the information on a UE Identity tag
+    ...  when queried by a MEC Application
+	...
+	...  Reference ETSI GS MEC 014 3.1.1, clause 6.2.2,
+    ...            ETSI GS MEC 014 3.1.1, clause 7.3.3.1
+    ...    
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Get UE Identity Tag information    ${APP_INSTANCE_ID}      ${UE_IDENTITY_TAG} 
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   ueIdentityTagInfo
-    Check Result Contains    ${response['body']['ueIdentityTagInfo']['ueIdentityTags']}    ueIdentityTag    ${UE_IDENTITY_TAG}
+    FOR    ${identityTag}    IN    @{response['body']['ueIdentityTags']}   
+          ${ueidentity_tag}    Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[ueIdentityTag]    ${UE_IDENTITY_TAG} 
+          ${registered_flag}   Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[state]    REGISTERED
+        Exit For Loop If    ${ueidentity_tag} and ${registered_flag}
+    END
+    Should Be True    ${ueidentity_tag}   
+    Should Be True    ${registered_flag}
+    [TearDown]    Delete APP Instance  ${APP_INSTANCE_ID} 
+
 
 
 TC_MEC_MEC014_SRV_UETAG_001_BR
-    [Documentation]   Request UE Identity Tag information using bad parameters
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Get UE Identity Tag information using bad parameters
+    [Documentation]   
+    ...  Check that the IUT responds with an error 
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    
+    ...  Reference  ETSI GS MEC 013 3.1.1 Clause 5.3.4,
+    ...             ETSI GS MEC 013 3.1.1 Clause 6.3.9,
+    ...             ETSI GS MEC 013 3.1.1 Clause 6.4.9,
+    ...             ETSI GS MEC 013 3.1.1 Clause 7.14.3.4
+    
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Get UE Identity Tag information using bad parameters    ${APP_INSTANCE_ID}      ${UE_IDENTITY_TAG} 
     Check HTTP Response Status Code Is    400
-    Check ProblemDetails    400
+    [TearDown]    Delete APP Instance  ${APP_INSTANCE_ID} 
 
 
 
 TC_MEC_MEC014_SRV_UETAG_001_NF
     [Documentation]   Request UE Identity Tag information using non-existent application instance
     ...  Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Get UE Identity Tag information using non-existent application instance
+    ...  Reference ETSI GS MEC 014 V3.1.1, clause 7.3.3.1
+    [Setup]    Delete APP Instance  ${NON_EXISTENT_APP_INSTANCE_ID}
+    Get UE Identity Tag information    ${NON_EXISTENT_APP_INSTANCE_ID}      ${UE_IDENTITY_TAG}
     Check HTTP Response Status Code Is    404
-    Check ProblemDetails    404
 
 
 TC_MEC_MEC014_SRV_UETAG_002_OK
     [Documentation]   Register an UE Identity Tag
     ...  Check that the IUT registers a tag (representing a UE) or a list of tags when commanded by a MEC Application
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Update an UE Identity Tag      {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG}","state":"REGISTERED"}]}
+    
+    ...  Reference ETSI GS MEC 014 3.1.1, clause 6.2.2
+    ...            ETSI GS MEC 014 V3.1.1, clause 7.3.3.2
+   
+    [Setup]  Create new App Instance and Check User Identity Tag unregistered state   CreateAppInstanceRequest    ${APP_INSTANCE_ID}    UeIdentityTag 
+    Update an UE Identity Tag     ${APP_INSTANCE_ID}   IdentityTag
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    UeIdentityTagInfo
-    Log    Checking Postcondition
-    Check User Identity Tag state    ${UE_IDENTITY_TAG}    REGISTERED
+    FOR    ${identityTag}    IN    @{response['body']['ueIdentityTags']}   
+        ${ueidentity_tag}    Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[ueIdentityTag]    ${UE_IDENTITY_TAG} 
+        ${registered_flag}   Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[state]    REGISTERED
+  
+        Exit For Loop If    ${ueidentity_tag} and ${registered_flag}
+    END
+    Should Be True    ${ueidentity_tag}   
+    Should Be True    ${registered_flag}
+    [TearDown]    Delete APP Instance  ${APP_INSTANCE_ID} 
 
 
 TC_MEC_MEC014_SRV_UETAG_002_BR
     [Documentation]   Register an UE Identity Tag using invalid state
     ...  Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Update an UE Identity Tag using invalid state    {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG}","state":"INVALID_STATE"}]}
+    ...  Reference ETSI GS MEC 014 3.1.1, clause 6.2.2,
+    ...            ETSI GS MEC 014 3.1.1, clause 7.3.3.2
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Update an UE Identity Tag     ${APP_INSTANCE_ID}   IdentityTagBR  
     Check HTTP Response Status Code Is    400
-    Check ProblemDetails    400
+    [TearDown]    Delete APP Instance  ${APP_INSTANCE_ID} 
+
 
+TC_MEC_MEC014_SRV_UETAG_002_NF
+    [Documentation]   Register an UE Identity Tag using invalid state
+    ...  Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application
+    ...  Reference ETSI GS MEC 014 3.1.1, clause 7.3.3.2
+    #[Setup]  Delete APP Instance  ${NON_EXISTENT_APP_INSTANCE_ID} 
+    Update an UE Identity Tag     ${NON_EXISTENT_APP_INSTANCE_ID}   IdentityTag  
+    Check HTTP Response Status Code Is    404
+    
 
 TC_MEC_MEC014_SRV_UETAG_002_PF
     [Documentation]   Unregister an UE Identity Tag already in unregistered state
-    ...  Check that the IUT responds with ProblemDetails on information an invalid URI
-    ...  Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2
-    ...  Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo
-    Update an UE Identity Tag using a not applicable valid state    {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG_INVALID_STATE}","state":"UNREGISTERED"}]}
+    ...  Check that the IUT responds with an error when
+    ...  a request sent by a MEC Application doesn't comply with a required condition
+    ...  Reference ETSI GS MEC 014 V3.1.1, clause 7.3.3.2
+    [Setup]  Create new App Instance  CreateAppInstanceRequest
+    Update an UE Identity Tag     ${APP_INSTANCE_ID}   IdentityTagPF  
     Check HTTP Response Status Code Is    412
-    Check ProblemDetails    412
+    [TearDown]    Delete APP Instance  ${APP_INSTANCE_ID} 
+
 
 
 *** Keywords ***
-Get UE Identity Tag information
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
+Create new App Instance
+    [Arguments]    ${content}
+    Log    Creating a new app package
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${UE_IDENTITY_TAG}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST    http://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-
-
-Get UE Identity Tag information using bad parameters
-# FIXME Which IE protocol should be invalid?
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
+    Set Suite Variable    ${APP_INSTANCE_ID}    ${response['body']['id']} 
+
+
+Create new App Instance and Check User Identity Tag unregistered state 
+   [Arguments]    ${content}    ${app_instance_id}      ${ue_identity_tag}  
+    Create new App Instance   ${content}
+    Get UE Identity Tag information    ${APP_INSTANCE_ID}     ${ue_identity_tag}  
+    FOR    ${identityTag}    IN    @{response['body']['ueIdentityTags']}   
+         ${ueidentity_tag}    Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[ueIdentityTag]    ${ue_identity_tag} 
+         ${registered_flag}   Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[state]    UNREGISTERED
+        Exit For Loop If    ${ueidentity_tag} and ${registered_flag}
+    END
+    Should Be True    ${ueidentity_tag}   
+    Should Be True    ${registered_flag}
+        
+Delete APP Instance
+    [Arguments]    ${app_instance_id}
+    Log    Get single App Instance
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTagERROR=${UE_IDENTITY_TAG}
+    DELETE    http://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances${app_instance_id}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${response}    ${output} 
+    
 
-
-Get UE Identity Tag information using non-existent application instance
+   
+Get UE Identity Tag information
+    [Arguments]    ${app_instance_id}     ${ue_identity_tag}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    /exampleAPI/ui/v1/${NON_EXISTENT_APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${UE_IDENTITY_TAG}
+    Get    /${apiName}/${apiVersion}/${app_instance_id}/ue_identity_tag_info?ueIdentityTag=${ue_identity_tag}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 
-Update an UE Identity Tag
-    [Arguments]    ${content}
+Get UE Identity Tag information using bad parameters
+    [Arguments]    ${app_instance_id}    ${ue_identity_tag}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    ## As far as I understood, we are not checking preconditions.
-    # Preamble: Check that the user tag is not registered
-    ## Check User Identity Tag state    ${UE_IDENTITY_TAG}    UNREGISTERED
-    log    ${content}
-    Put    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info    ${content}
+    Set Headers    {"Content-Length":"0"}
+    Get    /${apiName}/${apiVersion}/${app_instance_id}/ue_identity_tag_info?ueIdentityTagERROR=${ue_identity_tag}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
-
-Update an UE Identity Tag using invalid state
-    [Arguments]    ${content}
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    # Test Body: Register the tag user and check that the IUT has registered the tag user
-    Put    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info    ${content}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
+Check User Identity Tag unregistered state    
+    [Arguments]    ${app_instance_id}     ${ue_identity_tag}  
+    Get UE Identity Tag information    ${app_instance_id}     ${ue_identity_tag}  
+    FOR    ${identityTag}    IN    @{response['body']['ueIdentityTags']}   
+         ${ueidentity_tag}    Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[ueIdentityTag]    ${ue_identity_tag} 
+         ${registered_flag}   Run Keyword And Return Status  Should Be Equal As Strings  ${identityTag}[state]    UNREGISTERED
+        Exit For Loop If    ${ueidentity_tag} and ${registered_flag}
+    END
+    Should Be True    ${ueidentity_tag}   
+    Should Be True    ${registered_flag}
+      
 
 
-Update an UE Identity Tag using a not applicable valid state
-    [Arguments]    ${content}
+Update an UE Identity Tag
+    [Arguments]    ${app_instance_id}     ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    # Test Body: Register the tag user and check that the IUT has registered the tag user
-    Put    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info    ${content}
+    Set Headers    {"Authorization":"${TOKEN}"}    
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    /${apiName}/${apiVersion}/${app_instance_id}/ue_identity_tag_info    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
-    # TODO Check ProblemDetails
+
diff --git a/MEC014/SRV/UETAG/environment/variables.txt b/MEC014/SRV/UETAG/environment/variables.txt
index 492b598d03722a2c7d227c8d077d66ffb40a1ee9..0d7dbf753b2a5be85ba94a375ce8fcd36d9a8a83 100644
--- a/MEC014/SRV/UETAG/environment/variables.txt
+++ b/MEC014/SRV/UETAG/environment/variables.txt
@@ -2,12 +2,23 @@
 ${MEC-APP_SCHEMA}                   http
 #${MEC-APP_HOST}                     172.28.4.87
 #${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_HOST}                     192.168.56.1
-${MEC-APP_PORT}                     8081
+${MEC-APP_HOST}                     127.0.0.1
+${MEC-APP_PORT}                     8085
+${apiRoot}
+${apiName}                          ui
+${apiVersion}                       v1
+
 ${ZONE_ID}                          zone01
-${APP_INSTANCE_ID}                  appInst01
-${NON_EXISTENT_APP_INSTANCE_ID}     appInst99
-${UE_IDENTITY_TAG}                  UeTagA
+${APP_INSTANCE_ID}                  app-inst-id
+${NON_EXISTENT_APP_INSTANCE_ID}     NON_EXISTENT_APP_INSTANCE_ID
+${UE_IDENTITY_TAG}                  UeIdentityTag
 ${UE_IDENTITY_TAG_INVALID_STATE}    UeTagC
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+
+##Variables for App Instances management
+${APP_INST_HOST}                     127.0.0.1
+${APP_INST_PORT}                     8081
+${apiRoot_APP_INST}
+${apiName_APP_INST}                  app_lcm
+${apiVersion_APP_INST}               v1
diff --git a/MEC014/SRV/UETAG/jsons/CreateAppInstanceRequest.json b/MEC014/SRV/UETAG/jsons/CreateAppInstanceRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..d207b8045b930fbeb4835eb2a2f372af9711b88c
--- /dev/null
+++ b/MEC014/SRV/UETAG/jsons/CreateAppInstanceRequest.json
@@ -0,0 +1,5 @@
+{
+  "appDId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3",
+  "appInstanceDescription": "description",
+  "appInstanceName": "appName"
+}
\ No newline at end of file
diff --git a/MEC014/SRV/UETAG/jsons/IdentityTag.json b/MEC014/SRV/UETAG/jsons/IdentityTag.json
new file mode 100644
index 0000000000000000000000000000000000000000..10f4601b32b839462c4002bd187856b00fb15ce7
--- /dev/null
+++ b/MEC014/SRV/UETAG/jsons/IdentityTag.json
@@ -0,0 +1,8 @@
+{
+    "ueIdentityTags": [
+        {
+            "ueIdentityTag": "UeIdentityTag",
+            "state": "REGISTERED"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/MEC014/SRV/UETAG/jsons/IdentityTagBR.json b/MEC014/SRV/UETAG/jsons/IdentityTagBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..f63d0984c29d3fe47953e01e1037c4891de3ba33
--- /dev/null
+++ b/MEC014/SRV/UETAG/jsons/IdentityTagBR.json
@@ -0,0 +1,8 @@
+{
+    "ueIdentityTags": [
+        {
+            "ueIdentityTag": "UeIdentityTag",
+            "state": "INVALID_STATE"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/MEC014/SRV/UETAG/jsons/IdentityTagPF.json b/MEC014/SRV/UETAG/jsons/IdentityTagPF.json
new file mode 100644
index 0000000000000000000000000000000000000000..f4f5644e8cc268a8a6661cd40d7f02608f6fbaa4
--- /dev/null
+++ b/MEC014/SRV/UETAG/jsons/IdentityTagPF.json
@@ -0,0 +1,8 @@
+{
+    "ueIdentityTags": [
+        {
+            "ueIdentityTag": "UeIdentityTag",
+            "state": "UNREGISTER"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/MEC014/SRV/UETAG/resources/LocationAPI.robot b/MEC014/SRV/UETAG/resources/LocationAPI.robot
deleted file mode 100644
index 012566b6272c851febfcbd5da8e253a8e7733b2c..0000000000000000000000000000000000000000
--- a/MEC014/SRV/UETAG/resources/LocationAPI.robot
+++ /dev/null
@@ -1,12 +0,0 @@
-*** Settings ***
-Resource    ../environment/variables.txt
-Resource    LocationAPI.robot
-#Library    REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library    JSONSchemaLibrary    schemas/
-
-*** Keywords ***
-Check Location
-    [Arguments]    ${value}
-    Log    Check Location for userInfo element
-    Should be Equal    ${response['body']['userInfo']['zoneId']}    ${value}
-    Log    Location OK
diff --git a/MEC014/SRV/UETAG/resources/UEidentityAPI.robot b/MEC014/SRV/UETAG/resources/UEidentityAPI.robot
deleted file mode 100644
index 1cb3e49838af816d6e14841a82655d2e534d5be7..0000000000000000000000000000000000000000
--- a/MEC014/SRV/UETAG/resources/UEidentityAPI.robot
+++ /dev/null
@@ -1,28 +0,0 @@
-*** Settings ***
-Resource    ../environment/variables.txt
-Resource    ../../../../pics.txt
-Resource    ../../../../GenericKeywords.robot
-Library    REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
-Library    JSONSchemaLibrary    schemas/
-
-
-*** Keywords ***
-Check User Identity Tag state
-    [Arguments]    ${ue_identity_tag}    ${state}
-    Should Be True    ${PIC_MEC_PLAT}    1
-    Should Be True    ${PIC_SERVICES}    1
-    Log    Check ueIdentityTag state ${state}
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
-    Get    /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${ue_identity_tag}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   ueIdentityTagInfo
-    #Log    Check ueIdentityTagsList for ${UE_IDENTITY_TAG} element
-    ${result}=    Should Be Present In Json List    ${response['body']['ueIdentityTagInfo']['ueIdentityTags']}    ueIdentityTag    ${UE_IDENTITY_TAG}
-    #Log    ${UE_IDENTITY_TAG} found with state ${result}
-    Should Be Equal    ${result}[state]    ${state}
-    [return]    ${state}
diff --git a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot
index fa054b6f73becf563ab83308db9fe72bc7d366ee..46bf70e4322b494a4d6bcbec1d63d02b078af59b 100644
--- a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot
+++ b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot
@@ -1,204 +1,353 @@
 ''[Documentation]   robot --outputdir ../../../outputs ./MultiAccessTrafficSteering.robot
-...    Test Suite to validate Multi-access traffic steering API (MTS) operations.
+...    Test Suite to validate Multi-access Traffic Steering (MTS) API operations.
 
 *** Settings ***
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem    
+Library     String
 
-
-##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_info
 *** Test Cases ***
-TP_MEC_MEC015_SRV_MTS_001_OK
+TC_MEC_MEC015_SRV_MTS_001_OK
     [Documentation]
-    ...  Check that the IUT responds with the Multi-access Traffic Steering information when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  Check that the IUT responds with the Multi-access Traffic Steering information
+    ...  when queried by a MEC Application
+    ...  
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.4,
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.3.3.1
     Retrieve MTS capability information
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   MtsCapabilityInfo
     
 
-##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions
-TP_MEC_MEC015_SRV_MTS_002_OK
+TC_MEC_MEC015_SRV_MTS_002_OK_01
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    #Retrieve MTS session list information
-    Retrieve MTS session list information using filter  ${CORRECT_FILTER}   ${SESSION_ID}   
+    ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering
+    ...  when queried by a MEC Application - none
+    ...  
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.3.3.1
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
+    Retrieve MTS session list information   
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   MtsSessionInfo
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
+
+
+TC_MEC_MEC015_SRV_MTS_002_OK_02
+    [Documentation]
+    ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering
+    ...  when queried by a MEC Application - app_instance_id
+    ...    
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.1
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
+    Retrieve MTS session list information using filter  ${APP_NAME_FILTER}   ${APP_INSTANCE_ID}   
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   MtsSessionInfo
     FOR    ${mstSessionInfo}    IN    @{response['body']}
-        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${mstSessionInfo['appInsId']}    ${APP_INSTANCE_ID}    
+        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${mstSessionInfo['appInsId']}    ${APP_INSTANCE_ID}   
         Exit For Loop If    ${passed}
     END
     Should Be True    ${passed}
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
+
+TC_MEC_MEC015_SRV_MTS_002_OK_03
+     [Documentation]
+     ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering
+     ...  when queried by a MEC Application - app_name
+     ...  
+     ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+     ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+     ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.1
+     [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+
+     Retrieve MTS session list information using filter  ${APP_NAME_FILTER}   ${APP_NAME}   
+     Check HTTP Response Status Code Is    200
+     Check HTTP Response Body Json Schema Is   MtsSessionInfo
+     [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
 
-TP_MEC_MEC015_SRV_MTS_002_BR
+ TC_MEC_MEC015_SRV_MTS_002_OK_04
+     [Documentation]
+     ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering
+     ...  when queried by a MEC Application - session_id
+     ...  
+     ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+     ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+     ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.1
+     [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+     Retrieve MTS session list information using filter  ${SESSION_ID_FILTER}   ${SESSION_ID}
+     Check HTTP Response Status Code Is    200
+     Check HTTP Response Body Json Schema Is   MtsSessionInfo
+     [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
+
+
+    
+TC_MEC_MEC015_SRV_MTS_002_BR
     [Documentation]
-    ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  Check that the IUT responds with an error
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
+    
     Retrieve MTS session list information using filter  ${BAD_FILTER}   ${APP_INSTANCE_ID}   
     Check HTTP Response Status Code Is    400
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
 
-TP_MEC_MEC015_SRV_MTS_002_NF
+
+TC_MEC_MEC015_SRV_MTS_002_NF
     [Documentation]
-    ...  Check that the IUT responds with the list of configured Multi-access Traffic Steering when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.1
+    ...  Check that the IUT responds with an error
+    ...  when a request with an unknown resource URI is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.1
     ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    [Setup]   Delete APP Instance   ${NOT_EXISTING_APP_INSTANCE_ID} 
     Retrieve MTS session list information using filter  ${CORRECT_FILTER}   ${NOT_EXISTING_APP_INSTANCE_ID}   
     Check HTTP Response Status Code Is    404
 
-    
-##POST on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions
-TP_MEC_MEC015_SRV_MTS_003_OK_01
+
+       
+TC_MEC_MEC015_SRV_MTS_003_OK_01
     [Documentation]
     ...  Check that the IUT creates a MTS session when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.2
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoApplicationSpecific.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Register MTS session    ${body}
-    Check HTTP Response Status Code Is    200
+    
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.6,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.2
+    [Setup]  Create new App Instance   CreateAppInstanceRequest
+    Register MTS session    MtsSessionInfoApplicationSpecific
+    
+    Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is   MtsSessionInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['qosD']}    ${json_object['qosD']}
-    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${json_object['mtsMode']}
-    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${json_object['trafficDirection']}
+    ${appInsId}    Get value entry from JSON file    MtsSessionInfoApplicationSpecific   appInsId
+    ${requestType}    Get value entry from JSON file    MtsSessionInfoApplicationSpecific   requestType
+    ${qosD}    Get value entry from JSON file    MtsSessionInfoApplicationSpecific   qosD
+    ${mtsMode}    Get value entry from JSON file    MtsSessionInfoApplicationSpecific   mtsMode
+    ${trafficDirection}    Get value entry from JSON file    MtsSessionInfoApplicationSpecific   trafficDirection    
 
+    Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId}
+    Should Be Equal As Strings  ${response['body']['requestType']}    ${requestType}
+    Should Be Equal As Strings  ${response['body']['qosD']}    ${qosD}
+    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${mtsMode}
+    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${trafficDirection}
+    [TearDown]   Delete APP Instance   ${APP_INSTANCE_ID} 
 
-TP_MEC_MEC015_SRV_MTS_003_OK_02
+TC_MEC_MEC015_SRV_MTS_003_OK_02
     [Documentation]
     ...  Check that the IUT creates a MTS session when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.2
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoSessionSpecific.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Register MTS session   ${body}
-    Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   MtsSessionInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['flowFilter']}    ${json_object['flowFilter']}
-    Should Be Equal As Strings  ${response['body']['qosD']}    ${json_object['qosD']}
-    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${json_object['mtsMode']}
-    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${json_object['trafficDirection']}
     
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.7
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.2
+    #[Setup]  Create new App Instance   CreateAppInstanceRequest
+    Register MTS session     MtsSessionInfoSessionSpecific
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is   MtsSessionInfo
+    ${appInsId}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   appInsId
+    ${requestType}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   requestType
+    ${flowFilter}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   flowFilter
+    ${qosD}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   qosD
+    ${mtsMode}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   mtsMode
+    ${trafficDirection}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   trafficDirection    
+
+    Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId}
+    Should Be Equal As Strings  ${response['body']['requestType']}    ${requestType}
+    Should Be Equal As Strings  ${response['body']['flowFilter']}    ${flowFilter}
+    Should Be Equal As Strings  ${response['body']['qosD']}    ${qosD}
+    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${mtsMode}
+    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${trafficDirection}
+    [TearDown]   Delete APP Instance   ${APP_INSTANCE_ID} 
 
-TP_MEC_MEC015_SRV_MTS_003_BR
+TC_MEC_MEC015_SRV_MTS_003_BR
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.5.3.2
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoApplicationSpecific_BR.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Register MTS session   ${body}
+    ...  Check that the IUT responds with an error
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.7
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.5.3.2
+    [Setup]  Create new App Instance   CreateAppInstanceRequest
+    Register MTS session     MtsSessionInfoApplicationSpecific_BR
     Check HTTP Response Status Code Is    400
-    Check HTTP Response Body Json Schema Is   MtsSessionInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['qosD']}    ${json_object['qosD']}
-    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${json_object['mtsMode']}
-    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${json_object['trafficDirection']}
-
+    [TearDown]   Delete APP Instance   ${APP_INSTANCE_ID} 
 
-##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId}
-TP_MEC_MEC015_SRV_MTS_004_OK
+TC_MEC_MEC015_SRV_MTS_004_OK
     [Documentation]
-    ...  Check that the IUT responds with a configured Multi-access Traffic Steering session when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  Check that the IUT responds with a configured Multi-access Traffic Steering session
+    ...  when queried by a MEC Application
+    ...
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.10
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.1
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
     Retrieve single MTS session   ${SESSION_ID}
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   MtsSessionInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}                   ${APP_INSTANCE_ID}
-    Should Be Equal As Strings  ${response['body']['requestType']}             ${REQUEST_TYPE_APPLICATION}     
-    Should Be Equal As Strings  ${response['body']['mtsMode']}                   ${MTS_LOW_MODE_COST} 
-    Should Be Equal As Strings  ${response['body']['trafficDirection']}         ${TRAFFIC_DIRECTION_DL}   
+    Check HTTP Response Body Json Schema Is   MtsSessionInfo    
+    ${appInsId}    Get value entry from JSON file            MtsSessionInfoSessionSpecific   appInsId
+    ${requestType}    Get value entry from JSON file         MtsSessionInfoSessionSpecific   requestType
+    ${mtsMode}    Get value entry from JSON file             MtsSessionInfoSessionSpecific   mtsMode
+    ${trafficDirection}    Get value entry from JSON file    MtsSessionInfoSessionSpecific   trafficDirection
+    Should Be Equal As Strings  ${response['body']['appInsId']}                   ${appInsId}
+    Should Be Equal As Strings  ${response['body']['requestType']}             ${requestType}     
+    Should Be Equal As Strings  ${response['body']['mtsMode']}                   ${mtsMode} 
+    Should Be Equal As Strings  ${response['body']['trafficDirection']}         ${trafficDirection}   
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
+    
 
-TP_MEC_MEC015_SRV_MTS_004_BR
-    [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    Retrieve single MTS session   ${WRONG_SESSION_ID}	
-    Check HTTP Response Status Code Is    400
+TC_MEC_MEC015_SRV_MTS_004_BR
+     [Documentation]
+     ...  Check that the IUT responds with an error
+     ...  when a request with incorrect parameters is sent by a MEC Application
+     ...
+     ...  ETSI GS MEC 015 V2.2.1, clause 6.2.10
+     ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+     ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.1
+     ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+     Retrieve single MTS session   ${WRONG_SESSION_ID}	
+     Check HTTP Response Status Code Is    404
     
-TP_MEC_MEC015_SRV_MTS_004_NF
+TC_MEC_MEC015_SRV_MTS_004_NF
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.1
+    ...  Check that the IUT responds with an error
+    ...  when a request with an unknown resource URI is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.1
     ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    [Setup]   Unregister from the MTS Service   ${NOT_EXISTING_SESSION_ID} 
     Retrieve single MTS session   ${NOT_EXISTING_SESSION_ID}
     Check HTTP Response Status Code Is    404
 
 
-##PUT on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId}
-TP_MEC_MEC015_SRV_MTS_005_OK
+TC_MEC_MEC015_SRV_MTS_005_OK
     [Documentation]
-    ...  Check that the IUT updates the information about an individual MTS session when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.2
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoApplicationSpecificUpdate.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Update requested requirements on the MTS Service    ${SESSION_ID}     ${body}
+    ...  Check that the IUT updates the information about an individual MTS session
+    ...  when commanded by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.9
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.2
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
+    Update requested requirements on the MTS Service    ${SESSION_ID}     MtsSessionInfoApplicationSpecificUpdate
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   MtsSessionInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['qosD']}    ${json_object['qosD']}
-    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${json_object['mtsMode']}
-    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${json_object['trafficDirection']}    
+    ${appInsId}    Get value entry from JSON file            MtsSessionInfoApplicationSpecificUpdate   appInsId
+    ${requestType}    Get value entry from JSON file         MtsSessionInfoApplicationSpecificUpdate   requestType
+    ${mtsMode}    Get value entry from JSON file             MtsSessionInfoApplicationSpecificUpdate   mtsMode
+    ${trafficDirection}    Get value entry from JSON file    MtsSessionInfoApplicationSpecificUpdate   trafficDirection
+    Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId}
+    Should Be Equal As Strings  ${response['body']['requestType']}    ${requestType}
+    Should Be Equal As Strings  ${response['body']['mtsMode']}    ${mtsMode}
+    Should Be Equal As Strings  ${response['body']['trafficDirection']}    ${trafficDirection}  
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}   
+
     
-TP_MEC_MEC015_SRV_MTS_005_BR
+TC_MEC_MEC015_SRV_MTS_005_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.9
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.2
     ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoApplicationSpecificUpdate_BR.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Update requested requirements on the MTS Service    ${SESSION_ID}     ${body}
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
+    Update requested requirements on the MTS Service    ${SESSION_ID}       MtsSessionInfoApplicationSpecificUpdate_BR
     Check HTTP Response Status Code Is    400
+    [TearDown]   Unregister from the MTS Service And Delete APP Instance   ${SESSION_ID}    ${APP_INSTANCE_ID}  
+    
 
-TP_MEC_MEC015_SRV_MTS_005_NF
+TC_MEC_MEC015_SRV_MTS_005_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.9
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.2
     ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     MtsSessionInfoApplicationSpecificUpdate.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Update requested requirements on the MTS Service    ${NOT_EXISTING_SESSION_ID}     ${body}
+    #[Setup]  Unregister from the MTS Service  ${NOT_EXISTING_SESSION_ID}
+    Update requested requirements on the MTS Service    ${NOT_EXISTING_SESSION_ID}     MtsSessionInfoApplicationSpecificUpdate
     Check HTTP Response Status Code Is    404
              
-##DELETE on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId}
-TP_MEC_MEC015_SRV_MTS_006_OK
+
+TC_MEC_MEC015_SRV_MTS_006_OK
     [Documentation]
-    ...  Check that the IUT deregisters a MTS session when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.3
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  Check that the IUT deregisters a MTS session 
+    ...  when commanded by a MEC Application
+    ...
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.8
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.3
+    [Setup]  Create new App Instance and Register MTS session  CreateAppInstanceRequest   MtsSessionInfoApplicationSpecific
+    ${elements} =  Split String    ${response['headers']['Location']}       /
+    Set Suite Variable    ${SESSION_ID}    ${elements}[3]
     Unregister from the MTS Service   ${SESSION_ID}
     Check HTTP Response Status Code Is    204
 
-TP_MEC_MEC015_SRV_MTS_006_NF
+TC_MEC_MEC015_SRV_MTS_006_NF
     [Documentation]
-    ...  Check that the IUT deregisters a MTS session when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 9.4.3.3
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  Check that the IUT deregisters a MTS session
+    ...  when commanded by a MEC Application
+    ...
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.8
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 9.4.3.3
+    [Setup]   Unregister from the MTS Service   ${NOT_EXISTING_SESSION_ID}
     Unregister from the MTS Service   ${NOT_EXISTING_SESSION_ID}
     Check HTTP Response Status Code Is    404
    
 *** Keywords ***
+Create new App Instance and Register MTS session 
+     [Arguments]    ${appInstancePayload}    ${mtsSessionPayload}
+     Create new App Instance     ${appInstancePayload}
+     Register MTS session     ${mtsSessionPayload}
+       
+      
+
+Unregister from the MTS Service And Delete APP Instance
+    [Arguments]    ${sessionId}   ${app_instance_id}
+    Unregister from the MTS Service    ${sessionId}
+    Delete APP Instance    ${app_instance_id}
+    
+Create new App Instance
+    [Arguments]    ${content}
+    Log    Creating a new app package
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST    ${APP_INST_SCHEMA}://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${APP_INSTANCE_ID}    ${response['body']['id']} 
+
+
+Delete APP Instance
+    [Arguments]    ${app_instance_id}
+    Log    Get single App Instance
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE    ${APP_INST_SCHEMA}://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+
 Retrieve MTS capability information
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -206,7 +355,8 @@ Retrieve MTS capability information
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/mts_info
+    Log    ${apiRoot}/${apiName}/${apiVersion}/mts_capability_info 
+    Get    ${apiRoot}/${apiName}/${apiVersion}/mts_capability_info 
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
   
@@ -235,9 +385,12 @@ Retrieve MTS session list information using filter
     Set Suite Variable    ${response}    ${output}
     
 Register MTS session
-    [Arguments]    ${body}
+    [Arguments]    ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}.json
+    ${body}    Get File    ${path}
+    ${json_object}=	Evaluate  json.loads('''${body}''')  json
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
@@ -247,6 +400,8 @@ Register MTS session
     Set Suite Variable    ${response}    ${output}
     
 
+    
+
 Register MTS session wrong URI
     [Arguments]    ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
@@ -257,10 +412,12 @@ Register MTS session wrong URI
     Set Headers    {"Content-Length":"0"}
     ${path}    Catenate    SEPARATOR=      jsons/     ${content}
     ${body}    Get File    ${path}
-    POST    ${apiRoot}/${apiName}/v0/mts_sessions   ${body}
+    POST    ${apiRoot}/${apiName}/v10/mts_sessions   ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
+   
+    
 Retrieve single MTS session
     [Arguments]    ${sessionId}
     Should Be True    ${PIC_MEC_PLAT} == 1
@@ -273,12 +430,15 @@ Retrieve single MTS session
     Set Suite Variable    ${response}    ${output}
     
 Update requested requirements on the MTS Service
-    [Arguments]    ${sessionId}   ${body}
+    [Arguments]    ${sessionId}   ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}.json
+    ${body}    Get File    ${path}
+    ${json_object}=	Evaluate  json.loads('''${body}''')  json
     PUT    ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/${sessionId}   ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
diff --git a/MEC015/SRV/MTS/environment/variables.txt b/MEC015/SRV/MTS/environment/variables.txt
index 3a0e17f340dd1f768484e44765b7151d9b37a656..7dd119b49024ea9651db3792987b0dfdbe4f264b 100644
--- a/MEC015/SRV/MTS/environment/variables.txt
+++ b/MEC015/SRV/MTS/environment/variables.txt
@@ -10,11 +10,13 @@ ${apiName}        mts
 ${apiVersion}     v1
 
 # Specific variables
-${APP_INSTANCE_ID}					appInstId01
+${APP_NAME}							app_name
+${APP_INSTANCE_ID}					5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
 ${NOT_EXISTING_APP_INSTANCE_ID}		NOT_EXISTING_APP_INS_ID
 ${CORRECT_FILTER}					app_instance_id
+${APP_NAME_FILTER}					APP_NAME
 ${BAD_FILTER}						appInsId
-
+${SESSION_ID_FILTER}                session_id
 ${SESSION_ID}						1
 ${WRONG_SESSION_ID}					WRONG_SESSION_ID
 ${NOT_EXISTING_SESSION_ID}			NOT_EXISTING_SESSION_ID
@@ -22,3 +24,12 @@ ${NOT_EXISTING_SESSION_ID}			NOT_EXISTING_SESSION_ID
 ${REQUEST_TYPE_APPLICATION}			1
 ${MTS_LOW_MODE_COST}				0
 ${TRAFFIC_DIRECTION_DL}				00
+
+
+##Variables for App Instances management
+${APP_INST_HOST}                     127.0.0.1
+${APP_INST_PORT}                     8081
+${apiRoot_APP_INST}
+${apiName_APP_INST}                  app_lcm
+${apiVersion_APP_INST}               v1
+${elements}
\ No newline at end of file
diff --git a/MEC015/SRV/MTS/environment/variables_sandbox.txt b/MEC015/SRV/MTS/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3901782f4e93dfdfda6cff09e3a869baf240dc2a
--- /dev/null
+++ b/MEC015/SRV/MTS/environment/variables_sandbox.txt
@@ -0,0 +1,38 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        /<your_token_here>/mep1 
+${apiName}        mts
+${apiVersion}     v1
+
+
+# Specific variables
+${APP_INSTANCE_ID}					81c51643-8c6f-4781-ad45-f8a457ca549b
+${NOT_EXISTING_APP_INSTANCE_ID}		NOT_EXISTING_APP_INS_ID
+${CORRECT_FILTER}					app_instance_id
+${APP_NAME_FILTER}					app_name
+${SESSION_ID_FILTER}                session_id
+${BAD_FILTER}						appInsId
+${APP_NAME}							app_name
+          
+${SESSION_ID}						5
+${WRONG_SESSION_ID}					WRONG_SESSION_ID
+${NOT_EXISTING_SESSION_ID}			NOT_EXISTING_SESSION_ID
+
+${REQUEST_TYPE_APPLICATION}			1
+${MTS_LOW_MODE_COST}				0
+${TRAFFIC_DIRECTION_DL}				00
+
+
+##Variables for App Instances management
+${APP_INST_SCHEMA}                    https
+${APP_INST_HOST}                     try-mec.etsi.org
+${APP_INST_PORT}                     443
+${apiRoot_APP_INST}
+${apiName_APP_INST}                  app_lcm
+${apiVersion_APP_INST}               v1
+${elements}
\ No newline at end of file
diff --git a/MEC015/SRV/MTS/jsons/CreateAppInstanceRequest.json b/MEC015/SRV/MTS/jsons/CreateAppInstanceRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..3691ba6ce55af3f45f518ea1313f56a99e904b5a
--- /dev/null
+++ b/MEC015/SRV/MTS/jsons/CreateAppInstanceRequest.json
@@ -0,0 +1,5 @@
+{
+  "appDId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3",
+  "appInstanceDescription": "description",
+  "appInstanceName": "name"
+}
\ No newline at end of file
diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json
index f8ec281b7f7e85b46a8e5d3f72058799d550058f..93cbbb05b5ee774b87a3f45fc0f473e695d85f56 100644
--- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json
+++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json
@@ -1,10 +1,10 @@
 {
-		"appInsId": "myAppInstId",
+		"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
 		"requestType": 0,
 		"qosD": {
 			"minTpt": 10
 		},
-		"mtsMode": 0,
+		"mtsMode": 4,
 		"trafficDirection": "00",
         "qosD":{
              "minTpt":10
diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json
index 16d87745c6408540461444c3e257ff735bd91545..c1134009bac06d405e718b6f3cfcd8f511bdcef9 100644
--- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json
+++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json
@@ -1,12 +1,6 @@
 {
-		"appInsId": "myAppInstId",
+		"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
 		"requestType": 0,
-		"qosD": {
-			"minTpt": 30
-		},
 		"mtsMode": 0,
-		"trafficDirection": "00",
-        "qosD":{
-             "minTpt":10
-        }
+		"trafficDirection": "00"
 }
\ No newline at end of file
diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json
index 814cd503cb8a4fa4fee2250e14934d75960f9701..ca3280de17726a8da4f5754fae9f819a26f09a59 100644
--- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json
+++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json
@@ -7,9 +7,7 @@
 		"mtsMode": 0,
 		"trafficDirection": "00",
 		"flowFilter": [{
-			"dstPort": [8081],
 			"protocol": 41,
-			"sourcePort": [8081],
 			"dstIp": "10.10.0.10",
 			"dscp": 40,
 			"sourceIp": "10.10.0.30"
diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json
index d2429bcf456056a42fa563ee4854866778270460..9308f2d378063de56572b23dacac60fac29267ea 100644
--- a/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json
+++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json
@@ -1,20 +1,17 @@
 {
-		"appInsId": "myAppInstId",
+		"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
 		"requestType": 1,
 		"mtsMode":4,
         "trafficDirection":"00",
 		"qosD": {
-			"minTpt": 10
+			"minTpt": 15
 		},
-		"mtsMode": 0,
 		"trafficDirection": "00",
   		"flowFilter": [{
-			"dstPort": [8081],
 			"protocol": 41,
-			"sourcePort": [8081],
-			"dstIp": "10.10.0.10",
+			"dstIp": "10.10.0.1",
 			"dscp": 40,
-			"sourceIp": "10.10.0.30"
+			"sourceIp": "10.10.0.2"
 		}   
           ],
         "qosD":{
diff --git a/MEC015/SRV/TM/TrafficManagement.robot b/MEC015/SRV/TM/TrafficManagement.robot
index 323dc063a90c593e4561148fd2c385df07a4a9eb..18d908a2fa3247f0e782a1e3ba703122e30cb7e1 100644
--- a/MEC015/SRV/TM/TrafficManagement.robot
+++ b/MEC015/SRV/TM/TrafficManagement.robot
@@ -1,230 +1,364 @@
 ''[Documentation]   robot --outputdir ../../../outputs ./TrafficManagement.robot
-...    Test Suite to validate Bandwidth Management API (BWA) operations.
+...    Test Suite to validate Bandwidth Management Allocations (BWA) operations.
 
 *** Settings ***
-Resource    environment/variables.txt
+Resource    environment/variables_sandbox.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
 Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
 Library     OperatingSystem    
+Library     String
 
-
-##GET on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations
 *** Test Cases ***
-TP_MEC_MEC015_SRV_TM_001_OK
+
+TC_MEC_MEC015_SRV_TM_001_OK_01
     [Documentation]
-    ...  Check that the IUT responds with the list of configured bandwidth allocations when queried by a MEC Application
-    ...  Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    ...  Check that the IUT responds with the list of configured bandwidth allocations 
+    ...  when queried by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1  
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
     Retrieve the list of configured bandwidth allocations
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   BwInfo
-    FOR    ${bwInfo}    IN    @{response['body']}
-        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${bwInfo['appInsId']}    ${APP_INSTANCE_ID}    
-        Exit For Loop If    ${passed}
-    END
-    Should Be True    ${passed}
+    Check HTTP Response Body Json Schema Is   BwInfoList
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
     
 
-TP_MEC_MEC015_SRV_TM_002_OK
+TC_MEC_MEC015_SRV_TM_001_OK_02
     [Documentation]
-    ...  Check that the IUT responds with a configured bandwidth allocation when queried by a MEC Application
-    ...  Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    ...  Check that the IUT responds with the list of configured bandwidth allocations
+    ...  when queried by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1  
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
     Retrieve the list of configured bandwidth using filter  ${CORRECT_FILTER}   ${APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   BwInfo
+    Check HTTP Response Body Json Schema Is   BwInfoList
     FOR    ${bwInfo}    IN    @{response['body']}
         ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${bwInfo['appInsId']}    ${APP_INSTANCE_ID}    
         Exit For Loop If    ${passed}
     END
     Should Be True    ${passed}
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+    
 
-TP_MEC_MEC015_SRV_TM_002_BR
+TC_MEC_MEC015_SRV_TM_001_OK_03
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1
+    ...  Check that the IUT responds with a configured bandwidth allocation
+    ...  when queried by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1
+    [Setup]    Create new App Instance and Register for bw service    CreateAppInstanceRequest     BwInfoApplicationSpecific                            
+    Retrieve the list of configured bandwidth using filter  ${APP_NAME_FILTER}   ${APP_NAME}  
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   BwInfoList
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+    
+TC_MEC_MEC015_SRV_TM_001_OK_04
+    [Documentation]
+     ...  Check that the IUT responds with a configured bandwidth allocation
+     ...  when queried by a MEC Application - session_id
+     ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+     ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+     ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1
+     [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific                            
+     Retrieve the list of configured bandwidth using filter  ${SESSION_ID_FILTER}   ${SESSION_ID}  
+     Check HTTP Response Status Code Is    200
+     Check HTTP Response Body Json Schema Is   BwInfoList
+     [TearDown]  Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+    
+
+
+TC_MEC_MEC015_SRV_TM_001_BR
+    [Documentation]
+    ...  Check that the IUT responds with an error
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    ...  Reference ETSI GS MEC 015 V2.2.1, clause 8.4.3.1
     ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
     Retrieve the list of configured bandwidth using filter  ${BAD_FILTER}   ${APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is    400
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+
 
-TP_MEC_MEC015_SRV_TM_002_NF
+TC_MEC_MEC015_SRV_TM_001_NF_01
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application
-    ...  Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    ...  Check that the IUT responds with an error when
+    ...  a request with an unknown resource URI is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1   
     Retrieve the list of configured bandwidth using filter  ${CORRECT_FILTER}   ${NON_EXISTENT_APP_INSTANCE_ID}  
     Check HTTP Response Status Code Is    404
  
-
-
-##POST on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations
-TP_MEC_MEC015_SRV_TM_003_OK_01
+TC_MEC_MEC015_SRV_TM_001_NF_02
     [Documentation]
-    ...  Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.4.3.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    Register Bandwidth Management Service Application specific  BwInfoApplicationSpecific
-
-TP_MEC_MEC015_SRV_TM_003_OK_02
+    ...  Check that the IUT responds with an error
+    ...  when a request with an unknown resource URI is sent by a MEC Application - app_name
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1   
+    Retrieve the list of configured bandwidth using filter  ${APP_NAME_FILTER}   ${NON_EXISTENT_APP_NAME}  
+    Check HTTP Response Status Code Is    404
+ 
+TC_MEC_MEC015_SRV_TM_001_NF_03
     [Documentation]
-    ...  Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.4.3.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    Register Bandwidth Management Service Session specific   BwInfoSessionSpecific
-    
+    ...  Check that the IUT responds with an error
+    ...  when a request with an unknown resource URI is sent by a MEC Application - session_id
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.1    
+    Retrieve the list of configured bandwidth using filter  ${SESSION_ID_FILTER}   ${NON_EXISTENT_SESSION_ID}  
+    Check HTTP Response Status Code Is    404   
 
 
-TP_MEC_MEC015_SRV_TM_003_BR_01
+TC_MEC_MEC015_SRV_TM_002_OK
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.4.3.4
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    Register Bandwidth Management Service with incorrect parameters  BwInfo_BR 
- 
-TP_MEC_MEC015_SRV_TM_003_BR_02
+    ...  Check that the IUT acknowledges a creation of a bandwidthAllocation resource
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2,
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.4 
+     [Setup]    Create new App Instance   CreateAppInstanceRequest 
+     Registration for bandwidth services  ${APP_INSTANCE_ID}   BwInfoApplicationSpecific
+     Check HTTP Response Status Code Is    201 
+     Check HTTP Response Body Json Schema Is   BwInfo
+     ${appInsId}    Get value entry from JSON file    BwInfoApplicationSpecific   appInsId
+     ${requestType}    Get value entry from JSON file    BwInfoApplicationSpecific   requestType
+     ${fixedAllocation}    Get value entry from JSON file    BwInfoApplicationSpecific   fixedAllocation
+     ${allocationDirection}    Get value entry from JSON file    BwInfoApplicationSpecific   allocationDirection    
+     Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId}   
+     Should Be Equal As Strings  ${response['body']['requestType']}    ${requestType}  
+     Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${fixedAllocation}  
+     Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${allocationDirection}  
+     [TearDown]    Delete App Instance   ${APP_INSTANCE_ID}    
+    
+
+TC_MEC_MEC015_SRV_TM_002_BR_01
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.4.3.4
+    ...  Check that the IUT responds with an error
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.4
     ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    Register Bandwidth Management Service with incorrect parameters  BwInfo_BR2
-   
-TP_MEC_MEC015_SRV_TM_003_BR_03
+    [Setup]    Create new App Instance   CreateAppInstanceRequest
+    Registration for bandwidth services  ${APP_INSTANCE_ID}   BwInfo_BR
+    Check HTTP Response Status Code Is    400
+    [TearDown]    Delete App Instance   ${APP_INSTANCE_ID}    
+    
+TC_MEC_MEC015_SRV_TM_002_BR_02
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.4.3.4
+    ...  Check that the IUT responds with an error
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.4.3.4
     ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    Register Bandwidth Management Service with incorrect parameters  BwInfo_BR3
-   
+    [Setup]    Create new App Instance   CreateAppInstanceRequest
+    Registration for bandwidth services  ${APP_INSTANCE_ID}   BwInfo_BR2
+    Check HTTP Response Status Code Is    400
+    [TearDown]    Delete App Instance   ${APP_INSTANCE_ID}   
 
 
 
-##GET on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID}
-TP_MEC_MEC015_SRV_TM_004_OK
+TC_MEC_MEC015_SRV_TM_003_OK
     [Documentation]
-    ...  Check that the IUT responds with the configured bandwidth allocation when queried by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    ...  Check that the IUT responds with the configured bandwidth allocation
+    ...  when queried by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.1
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
     Get a bandwidth allocation   ${ALLOCATION_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   BwInfo
     Should Be Equal As Strings  ${response['body']['appInsId']}    ${APP_INSTANCE_ID}
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC015_SRV_TM_004_NF
+TC_MEC_MEC015_SRV_TM_003_NF
     [Documentation]
-    ...  Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.1
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+    ...  Check that the IUT responds with an error
+    ...  when a request for an unknown URI is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.5
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.1
+    [Setup]    Unregister Bandwidth Management Service   ${NON_EXISTENT_ALLOCATION_ID}
     Get a bandwidth allocation   ${NON_EXISTENT_ALLOCATION_ID}
     Check HTTP Response Status Code Is    404
     
 
-##PUT on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID}
-TP_MEC_MEC015_SRV_TM_005_OK
+
+TC_MEC_MEC015_SRV_TM_004_OK
     [Documentation]
-    ...  Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.2
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoUpdate.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Update a bandwidth allocation   ${ALLOCATION_ID}    ${body}
+    ...  Check that the IUT updates the requested bandwidth requirements
+    ...  when commanded by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.2
+    #[Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Update a bandwidth allocation   ${ALLOCATION_ID}   BwInfoUpdate
+    ${appInsId}    Get value entry from JSON file    BwInfoUpdate   appInsId
+    ${fixedAllocation}    Get value entry from JSON file    BwInfoUpdate   fixedAllocation
+    ${allocationDirection}    Get value entry from JSON file    BwInfoUpdate   allocationDirection    
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   BwInfo
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}  
-    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${json_object['fixedAllocation']}  
-    Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${json_object['allocationDirection']}   
+    Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId} 
+    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${fixedAllocation}
+    Should Be Equal As Strings  ${response['body']['allocationDirection']}   ${allocationDirection}
+    #[TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC015_SRV_TM_005_BR
+TC_MEC_MEC015_SRV_TM_004_BR_01
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.2
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoUpdate_BR.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Update a bandwidth allocation   ${ALLOCATION_ID}    ${body}
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.2
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Update a bandwidth allocation   ${ALLOCATION_ID}   BwInfoUpdate_BR
     Check HTTP Response Status Code Is    400
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
 
 
-TP_MEC_MEC015_SRV_TM_005_NF
+TC_MEC_MEC015_SRV_TM_004_BR_02
+    [Documentation]
+    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.2
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Update a bandwidth allocation   ${ALLOCATION_ID}   BwInfoUpdate_BR2
+    Check HTTP Response Status Code Is    400
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+
+
+TC_MEC_MEC015_SRV_TM_004_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.2
-    ...  Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoUpdate.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.2
+   
+    #[Setup]  Delete APP Instance    ${NON_EXISTENT_ALLOCATION_ID}
     Update a bandwidth allocation   ${NON_EXISTENT_ALLOCATION_ID}    BwInfoUpdate
     Check HTTP Response Status Code Is    404
 
 
-##PATCH on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID}
-TP_MEC_MEC015_SRV_TM_006_OK
+TC_MEC_MEC015_SRV_TM_005_OK
     [Documentation]
-    ...  Check that the IUT when provided with just the changes (deltas) updates the requested bandwidth requirements when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.3
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    # Preamble
-    Register Bandwidth Management Service Application specific   BwInfoApplicationSpecific
-    # Test body
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoDeltas.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Request a deltas changes    ${ALLOCATION_ID}    ${body}
+    ...  Check that the IUT when provided with just the changes (deltas) 
+    ...  updates the requested bandwidth requirements when commanded by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.3
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Request a deltas changes    ${ALLOCATION_ID}    BwInfoDeltas
+    
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   BwInfoDelta
-        Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}  
-    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${json_object['fixedAllocation']}  
-    Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${json_object['allocationDirection']}   
-
-TP_MEC_MEC015_SRV_TM_006_BR
+    ${appInsId}    Get value entry from JSON file    BwInfoDeltas   appInsId
+    ${fixedAllocation}    Get value entry from JSON file    BwInfoDeltas   fixedAllocation
+    ${allocationDirection}    Get value entry from JSON file    BwInfoDeltas   allocationDirection    
+    Should Be Equal As Strings  ${response['body']['appInsId']}    ${appInsId}   
+    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${fixedAllocation}  
+    Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${allocationDirection}  
+    [TearDown]   Unregister bw Service And Delete APP Instance    ${ALLOCATION_ID}    ${APP_INSTANCE_ID}
+        
+TC_MEC_MEC015_SRV_TM_005_BR_01
     [Documentation]
-    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.3
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    # Preamble
-    Register Bandwidth Management Service Application specific   BwInfoApplicationSpecific
-    # Test body
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoDeltas_BR.json
-    ${body}    Get File    ${path}
-    Request a deltas changes    ${ALLOCATION_ID}    ${body}
+    ...  Check that the IUT responds with an error 
+    ...  when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.3
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Request a deltas changes    ${ALLOCATION_ID}    BwInfoDeltas_BR
     Check HTTP Response Status Code Is    400
 
+TC_MEC_MEC015_SRV_TM_005_BR_02
+    [Documentation]
+    ...  Check that the IUT responds with an error 
+    ...  when a request with incorrect parameters is sent by a MEC Application - sessionFilter shall be present
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.3
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
+    Request a deltas changes    ${ALLOCATION_ID}    BwInfoDeltas_BR2
+    Check HTTP Response Status Code Is    400
+    
     
-TP_MEC_MEC015_SRV_TM_006_NF
+TC_MEC_MEC015_SRV_TM_005_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.3
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
-    ${path}    Catenate    SEPARATOR=      jsons/     BwInfoDeltas_BR.json
-    ${body}    Get File    ${path}
-    Request a deltas changes    ${NON_EXISTENT_ALLOCATION_ID}    ${body}
-    Check HTTP Response Status Code Is    400
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.4
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.3
+    [Setup]   Delete APP Instance    ${NON_EXISTENT_ALLOCATION_ID}
+    Request a deltas changes    ${NON_EXISTENT_ALLOCATION_ID}    BwInfoDeltas
+    Check HTTP Response Status Code Is    404
 
-  
-##DELETE on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID}
-TP_MEC_MEC015_SRV_TM_007_OK
+
+TC_MEC_MEC015_SRV_TM_006_OK
     [Documentation]
     ...  Check that the IUT unregisters from the Bandwidth Management Service when commanded by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.5
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.3
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.5
+    [Setup]    Create new App Instance and Register for bw service   CreateAppInstanceRequest     BwInfoApplicationSpecific
     Unregister Bandwidth Management Service    ${ALLOCATION_ID}
     Check HTTP Response Status Code Is    204
+    [TearDown]   Delete APP Instance    ${ALLOCATION_ID}
 
-TP_MEC_MEC015_SRV_TM_007_NF
+TC_MEC_MEC015_SRV_TM_006_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
-    ...  ETSI GS MEC 015 V2.1.1, clause 8.3.3.5
-    ...  https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml
+    ...  ETSI GS MEC 015 V2.2.1, clause 6.2.3
+    ...  ETSI GS MEC 015 V2.2.1, clause 7.2.2
+    ...  ETSI GS MEC 015 V2.2.1, clause 8.3.3.5
+    [Setup]   Unregister Bandwidth Management Service    ${NON_EXISTENT_ALLOCATION_ID}        
     Unregister Bandwidth Management Service    ${NON_EXISTENT_ALLOCATION_ID}
     Check HTTP Response Status Code Is    404
         
 
-
 *** Keywords ***
+Create new App Instance and Register for bw service
+     [Arguments]    ${appInstancePayload}    ${bwServicePayload}
+     Create new App Instance     ${appInstancePayload}
+     Registration for bandwidth services   ${APP_INSTANCE_ID}    ${bwServicePayload}
+     ${elements} =  Split String    ${response['headers']['Location']}       /
+     Set Suite Variable    ${ALLOCATION_ID}    ${elements}[3]
+     
+       
+     
+Unregister bw Service And Delete APP Instance
+    [Arguments]    ${allocationId}   ${app_instance_id}
+    Unregister Bandwidth Management Service   ${allocationId}
+    Delete APP Instance    ${app_instance_id}
+    
+Create new App Instance
+    [Arguments]    ${content}
+    Log    Creating a new app package
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST    http://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${APP_INSTANCE_ID}    ${response['body']['id']} 
+
+
+Delete APP Instance
+    [Arguments]    ${app_instance_id}
+    Log    Get single App Instance
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE    http://${APP_INST_HOST}:${APP_INST_PORT}/${apiRoot_APP_INST}/${apiName_APP_INST}/${apiVersion_APP_INST}/app_instances${app_instance_id}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
 Retrieve the list of configured bandwidth allocations
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -232,6 +366,7 @@ Retrieve the list of configured bandwidth allocations
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
     Set Headers    {"Content-Length":"0"}
+    Log   ${apiRoot}/${apiName}/${apiVersion}/bw_allocations
     GET   ${apiRoot}/${apiName}/${apiVersion}/bw_allocations
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
@@ -270,7 +405,7 @@ Registration for bandwidth services
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    Post     ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${app_instance_id}    ${body}
+    Post     ${apiRoot}/${apiName}/${apiVersion}/bw_allocations    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -288,11 +423,14 @@ Get a bandwidth allocation
 
 
 Update a bandwidth allocation
-    [Arguments]    ${allocation_id}    ${body}
+    [Arguments]    ${allocation_id}    ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}.json
+    ${body}    Get File    ${path}
+    ${json_object}=	Evaluate  json.loads('''${body}''')  json
     Set Headers    {"Authorization":"${TOKEN}"}
     Put    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id}    ${body}
     ${output}=    Output    response
@@ -300,85 +438,27 @@ Update a bandwidth allocation
 
 
 Request a deltas changes
-    [Arguments]    ${allocation_id}    ${body}
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    Patch    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id}    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
-
-Register Bandwidth Management Service with incorrect parameters
-    [Arguments]    ${content}
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    Check HTTP Response Status Code Is    400
-
-Register Bandwidth Management Service Session specific
-    [Arguments]    ${content}
+    [Arguments]    ${allocation_id}    ${content}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${file}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}.json
+    ${body}    Get File    ${path}
     ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Post    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is   BwInfo
-    Should Not Be Empty    ${response['headers']['Location']}
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['sessionFilter']}    ${json_object['sessionFilter']}
-    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${json_object['fixedAllocation']}
-    Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${json_object['allocationDirection']}
-    
-        
-Register Bandwidth Management Service Application specific
-    [Arguments]    ${content}
-    Should Be True    ${PIC_MEC_PLAT} == 1
-    Should Be True    ${PIC_SERVICES} == 1
-    Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"application/json"}
-    Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
-    ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations    ${body}
+    Patch    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id}    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is   BwInfo
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Should Not Be Empty    ${response['headers']['Location']}
-    Should Be Equal As Strings  ${response['body']['appInsId']}    ${json_object['appInsId']}
-    Should Be Equal As Strings  ${response['body']['requestType']}    ${json_object['requestType']}
-    Should Be Equal As Strings  ${response['body']['fixedAllocation']}    ${json_object['fixedAllocation']}
-    Should Be Equal As Strings  ${response['body']['allocationDirection']}    ${json_object['allocationDirection']}
-
-   
 
 
 Unregister Bandwidth Management Service
-    [Arguments]    ${value}
+    [Arguments]    ${allocationId}
     Should Be True    ${PIC_MEC_PLAT} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${value}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocationId}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
diff --git a/MEC015/SRV/TM/environment/variables.txt b/MEC015/SRV/TM/environment/variables.txt
index 4a9a19d206d06ac729a77a2e01884176ed4275eb..8807f2c231f0c37c04396986969d98dd1d582964 100644
--- a/MEC015/SRV/TM/environment/variables.txt
+++ b/MEC015/SRV/TM/environment/variables.txt
@@ -19,6 +19,14 @@ ${BAD_FILTER}							 appInsId
 ${APP_INSTANCE_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
 ${NON_EXISTENT_APP_INSTANCE_ID}          NON_EXISTENT_INSTANCE_ID
 
+${APP_NAME_FILTER}                       app_name
+${APP_NAME}                              appName
+${NON_EXISTENT_APP_NAME}                 NON_EXISTENT_APP_NAME
+
+${SESSION_ID_FILTER}                    session_id
+${NON_EXISTENT_SESSION_ID}                 NON_EXISTENT_SESSION_ID
+${SESSION_ID}                            5
+
 ${FIXED_ALLOCATION}						 32
 ${ALLOCATION_DIRECTION}					 00
 
@@ -29,4 +37,12 @@ ${ALLOCATION_ID}                         59ab1593-d330-4087-85ec-4e484092f306
 ${NON_EXISTENT_ALLOCATION_ID}            NON_EXISTENT_ALLOCATION_ID
 ${INVALID_ETAG}							 INVALID_ETAG
 ${ETAG_VALUE}
-${ETAG}
\ No newline at end of file
+${ETAG}
+
+##Variables for App Instances management
+${APP_INST_HOST}                     127.0.0.1
+${APP_INST_PORT}                     8081
+${apiRoot_APP_INST}
+${apiName_APP_INST}                  app_lcm
+${apiVersion_APP_INST}               v1
+${elements}
\ No newline at end of file
diff --git a/MEC015/SRV/TM/environment/variables_sandbox.txt b/MEC015/SRV/TM/environment/variables_sandbox.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e72164d75ff2d537e7139d4f20e27f03d997b4e
--- /dev/null
+++ b/MEC015/SRV/TM/environment/variables_sandbox.txt
@@ -0,0 +1,49 @@
+*** Variables ***
+
+# Generic variables
+${SCHEMA}                   https
+${HOST}                     try-mec.etsi.org
+${PORT}                     443
+${response}                         {}
+${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        /<your_token_here>/mep1 
+${apiName}        bwm
+${apiVersion}     v1
+
+# Specific variables
+
+
+
+
+${CORRECT_FILTER}						 app_instance_id
+${BAD_FILTER}							 appInsId
+${APP_INSTANCE_ID}                       81c51643-8c6f-4781-ad45-f8a457ca549b
+${NON_EXISTENT_APP_INSTANCE_ID}          NON_EXISTENT_INSTANCE_ID
+${SESSION_ID}                            5
+${APP_NAME_FILTER}                       app_name
+${APP_NAME}                              appName
+${NON_EXISTENT_APP_NAME}                 NON_EXISTENT_APP_NAME
+
+${SESSION_ID_FILTER}                    session_id
+${NON_EXISTENT_SESSION_ID}                 NON_EXISTENT_SESSION_ID
+
+
+${FIXED_ALLOCATION}						 32
+${ALLOCATION_DIRECTION}					 00
+
+${APP_SRVSUB_NOTIF_CALLBACK_URI}         http://127.0.0.1/subscribe
+${SUBSCRIPTION_ID}                       e0deee2b-6e50-4f33-ab09-8bf0585025d3
+${NON_EXISTENT_SUBSCRIPTION_ID}          NON_EXISTENT_SUBSCRIPTION_ID
+${ALLOCATION_ID}                         6
+${NON_EXISTENT_ALLOCATION_ID}            NON_EXISTENT_ALLOCATION_ID
+${INVALID_ETAG}							 INVALID_ETAG
+${ETAG_VALUE}
+${ETAG}
+
+##Variables for App Instances management
+${APP_INST_HOST}                     127.0.0.1
+${APP_INST_PORT}                     8081
+${apiRoot_APP_INST}
+${apiName_APP_INST}                  app_lcm
+${apiVersion_APP_INST}               v1
+${elements}
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json
index 511b36f02d5439b5c60527f4fdc2a7921b2e6b68..a0688f891dd5d97f06a5efbda055314ef97b692a 100644
--- a/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json
+++ b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json
@@ -1,5 +1,5 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+ "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
   "requestType": 0,
   "fixedAllocation": "32",
   "allocationDirection": "00"
diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas.json b/MEC015/SRV/TM/jsons/BwInfoDeltas.json
index 28d4b0a67ab215e1b8eee343cc352af30811f494..d2d8d10069c9ed5ff909882247c872ad2a6242fc 100644
--- a/MEC015/SRV/TM/jsons/BwInfoDeltas.json
+++ b/MEC015/SRV/TM/jsons/BwInfoDeltas.json
@@ -1,5 +1,5 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
   "requestType": 0,
   "fixedAllocation": "32",
   "allocationDirection": "01"
diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json
index fca0e97387614962fe64e7578884f5b6a0d1fe87..fdca335648ec384e2a23e255914a73703a6451a0 100644
--- a/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json
+++ b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json
@@ -1,6 +1,7 @@
 {
 "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
-  "requestType": "INVALID_VALUE",
+  "requestType": 0,
+  "sessionFilter":"someValues",
   "fixedAllocation": "32",
   "allocationDirection": "01"
 }
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas_BR2.json b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b123a745920cdef5e79a05a56e0889327e235d85
--- /dev/null
+++ b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR2.json
@@ -0,0 +1,6 @@
+{
+"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+  "requestType": "1",
+  "fixedAllocation": "32",
+  "allocationDirection": "01"
+}
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate.json b/MEC015/SRV/TM/jsons/BwInfoUpdate.json
index 28d4b0a67ab215e1b8eee343cc352af30811f494..d2d8d10069c9ed5ff909882247c872ad2a6242fc 100644
--- a/MEC015/SRV/TM/jsons/BwInfoUpdate.json
+++ b/MEC015/SRV/TM/jsons/BwInfoUpdate.json
@@ -1,5 +1,5 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
   "requestType": 0,
   "fixedAllocation": "32",
   "allocationDirection": "01"
diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json
index 2ccb051c623cc4f31615e72b1b131141a32b2116..9346f145f331a3c53426e806405f61af1573929a 100644
--- a/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json
+++ b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json
@@ -1,6 +1,6 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+"appInsId": "appInstanceId",
   "requestType": 0,
   "fixedAllocation": "64",
-  "allocationDirection": "INVALID_VALUE"
+  "sessionFilter":"sessionFilterVlues"
 }
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate_BR2.json b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR2.json
new file mode 100644
index 0000000000000000000000000000000000000000..27e6975928eb7bd3298b724267305f524bfd3f9a
--- /dev/null
+++ b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR2.json
@@ -0,0 +1,5 @@
+{
+"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
+  "requestType": 1,
+  "fixedAllocation": "64"
+}
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR.json b/MEC015/SRV/TM/jsons/BwInfo_BR.json
index b7835299f5966186f9ef3c2f31706db56c6cd564..1b3e26f55cd8062e02464b06402256bb5d2f2a93 100644
--- a/MEC015/SRV/TM/jsons/BwInfo_BR.json
+++ b/MEC015/SRV/TM/jsons/BwInfo_BR.json
@@ -1,6 +1,7 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
+  "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
   "requestType": 0,
+  "sessionFlter":"someValues",
   "fixedAllocation": "INVALID_VALUE",
   "allocationDirection": "00"
 }
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR2.json b/MEC015/SRV/TM/jsons/BwInfo_BR2.json
index c08fbf8f964e22eedee76028aecdcb5479ec2c7b..9736c06f38c184e40baa2f2e1b41063045c1d20b 100644
--- a/MEC015/SRV/TM/jsons/BwInfo_BR2.json
+++ b/MEC015/SRV/TM/jsons/BwInfo_BR2.json
@@ -1,19 +1,6 @@
 {
-"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
-  "requestType": 0,
+"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
+  "requestType": 1,
   "fixedAllocation": "-30",
-  "allocationDirection": "00",
-    "sessionFilter": [{
-			"protocol": "123",
-			"sourceIp": "10.10.0.3",
-			"dstAddress": "1234",
-			"dstPort": [
-				"1234",
-				"1334"
-			],
-			"sourcePort": [
-				"8080",
-				"8082"
-			]
-		}]
+  "allocationDirection": "00"
 }
\ No newline at end of file
diff --git a/MEC015/SRV/TM/jsons/CreateAppInstanceRequest.json b/MEC015/SRV/TM/jsons/CreateAppInstanceRequest.json
new file mode 100644
index 0000000000000000000000000000000000000000..2e28c82cfd9277511c18bfbe403a97a44b3825e2
--- /dev/null
+++ b/MEC015/SRV/TM/jsons/CreateAppInstanceRequest.json
@@ -0,0 +1,5 @@
+{
+  "appDId": "81c51643-8c6f-4781-ad45-f8a457ca549b",
+  "appInstanceDescription": "description",
+  "appInstanceName": "name"
+}
\ No newline at end of file
diff --git a/MEC015/SRV/TM/schemas/BwInfo.schema.json b/MEC015/SRV/TM/schemas/BwInfo.schema.json
index 66ca806fa5137cfae9a9739d8fa7d471a271e7b4..ed52c3bbe9d90b2ac8c14849272b32b7030b33c6 100644
--- a/MEC015/SRV/TM/schemas/BwInfo.schema.json
+++ b/MEC015/SRV/TM/schemas/BwInfo.schema.json
@@ -1,5 +1,4 @@
 {
- "items": {
 	"properties": {
 		"allocationDirection": {
 			"description": "The direction of the requested BW allocation: 00 = Downlink (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical",
@@ -123,5 +122,4 @@
 	],
 	"type": "object",
 	"x-etsi-ref": "7.2.2"
-}
 }
\ No newline at end of file
diff --git a/MEC015/SRV/TM/schemas/BwInfoList.schema.json b/MEC015/SRV/TM/schemas/BwInfoList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..66ca806fa5137cfae9a9739d8fa7d471a271e7b4
--- /dev/null
+++ b/MEC015/SRV/TM/schemas/BwInfoList.schema.json
@@ -0,0 +1,127 @@
+{
+ "items": {
+	"properties": {
+		"allocationDirection": {
+			"description": "The direction of the requested BW allocation: 00 = Downlink (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical",
+			"type": "string",
+			"x-etsi-mec-cardinality": "1",
+			"x-etsi-mec-origin-type": "String"
+		},
+		"appInsId": {
+			"description": "Application instance identifier",
+			"type": "string",
+			"x-etsi-mec-cardinality": "1",
+			"x-etsi-mec-origin-type": "String"
+		},
+		"fixedAllocation": {
+			"description": "Size of requested fixed BW allocation in [bps]",
+			"type": "string",
+			"x-etsi-mec-cardinality": "1",
+			"x-etsi-mec-origin-type": "String"
+		},
+		"fixedBWPriority": {
+			"description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document",
+			"enum": [
+				"SEE_DESCRIPTION"
+			],
+			"type": "string",
+			"x-etsi-mec-cardinality": "0..1",
+			"x-etsi-mec-origin-type": "Enum"
+		},
+		"requestType": {
+			"description": "Numeric value (0 - 255) corresponding to specific type of consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION",
+			"type": "integer",
+			"enum": [
+				0,
+				1
+			],
+			"x-etsi-mec-cardinality": "1",
+			"x-etsi-mec-origin-type": "Enum_inlined"
+		},
+		"sessionFilter": {
+			"description": "Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected",
+			"items": {
+				"type": "object",
+				"properties": {
+					"dstAddress": {
+						"description": "Destination address identity of session (including range)",
+						"type": "string",
+						"x-etsi-mec-cardinality": "0..1",
+						"x-etsi-mec-origin-type": "String"
+					},
+					"dstPort": {
+						"description": "Destination port identity of session",
+						"items": {
+							"type": "string"
+						},
+						"minItems": 0,
+						"type": "array",
+						"x-etsi-mec-cardinality": "0..N",
+						"x-etsi-mec-origin-type": "String"
+					},
+					"protocol": {
+						"description": "Protocol number",
+						"type": "string",
+						"x-etsi-mec-cardinality": "0..1",
+						"x-etsi-mec-origin-type": "String"
+					},
+					"sourceIp": {
+						"description": "Source address identity of session (including range)",
+						"type": "string",
+						"x-etsi-mec-cardinality": "0..1",
+						"x-etsi-mec-origin-type": "String"
+					},
+					"sourcePort": {
+						"description": "Source port identity of session",
+						"items": {
+							"type": "string"
+						},
+						"minItems": 0,
+						"type": "array",
+						"x-etsi-mec-cardinality": "0..N",
+						"x-etsi-mec-origin-type": "String"
+					}
+				}
+			},
+			"minItems": 0,
+			"type": "array",
+			"x-etsi-mec-cardinality": "0..N",
+			"x-etsi-mec-origin-type": "Structure (inlined)"
+		},
+		"timeStamp": {
+			"description": "Time stamp to indicate when the corresponding information elements are sent",
+			"properties": {
+				"nanoSeconds": {
+					"description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
+					"format": "uint32",
+					"type": "integer",
+					"x-etsi-mec-cardinality": "1",
+					"x-etsi-mec-origin-type": "Uint32"
+				},
+				"seconds": {
+					"format": "uint32",
+					"type": "integer",
+					"description": "The seconds part of the Time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC",
+					"x-etsi-mec-cardinality": "1",
+					"x-etsi-mec-origin-type": "Uint32"
+				}
+			},
+			"required": [
+				"seconds",
+				"nanoSeconds"
+			],
+			"type": "object",
+			"x-etsi-mec-cardinality": "0..1",
+			"x-etsi-mec-origin-type": "Structure (inlined)"
+		}
+	},
+	"required": [
+		"appInsId",
+		"requestType",
+		"fixedAllocation",
+		"allocationDirection"
+	],
+	"type": "object",
+	"x-etsi-ref": "7.2.2"
+}
+}
\ No newline at end of file
diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot
index 146a80bb109cd4ff635dcbefe2b54292d887989c..5766d4be5e82e8da9b1021b4e5d47ad3964e6989 100644
--- a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot
+++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot
@@ -11,7 +11,7 @@ Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_v
 
 
 *** Test Cases ***
-TP_MEC_MEC016_MEO_UEAPPCTX_001_OK
+TC_MEC_MEC016_MEO_UEAPPCTX_001_OK
     [Documentation] 
     ...  Check that the IUT acknowledges the creation of the application context when requested by an UE Application
     ...  Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4
@@ -23,21 +23,23 @@ TP_MEC_MEC016_MEO_UEAPPCTX_001_OK
     Check HTTP Response Body Json Schema Is   AppContext
     Check HTTP Response Header Contains    Location
     Should Be Equal As Strings   ${response['body']['appInfo']['appName']}    MyNewWornderfulApp
-    Set Suite Variable    ${contextId}    ${response['body']['contextId']}
+    Set Suite Variable    ${contextId_tbd}    ${response['body']['contextId']}
+    
+    [Teardown]    Delete application context    ${contextId_tbd}
 
 
-TP_MEC_MEC016_MEO_UEAPPCTX_001_BR
+TC_MEC_MEC016_MEO_UEAPPCTX_001_BR
     [Documentation]   
-    ...  Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application
+    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
     ...  Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4
     ...  Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Create application context    AppContext_BR.json
+    Create application context     AppContext_BR.json
     Check HTTP Response Status Code Is    400
     
 
-TP_MEC_MEC016_MEO_UEAPPCTX_001_NF
+TC_MEC_MEC016_MEO_UEAPPCTX_001_NF
     [Documentation]   
     ...  Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application
     ...  Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4
@@ -48,29 +50,42 @@ TP_MEC_MEC016_MEO_UEAPPCTX_001_NF
     Check HTTP Response Status Code Is    404
     
 
-TP_MEC_MEC016_MEO_UEAPPCTX_002_OK
+TC_MEC_MEC016_MEO_UEAPPCTX_002_OK
     [Documentation]   
     ...  Check that the IUT updates the application callback reference when commanded by an UE Application
     ...  Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2
     ...  Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
+
+    [Setup]    Create application context    AppContext.json
+    Set Suite Variable    ${contextId_tbu}    ${response['body']['contextId']}  
+
     # Test Body
-    Update application context        ${contextId}    UpdateAppContext.json
+    Update application context    ${contextId_tbu}    UpdateAppContext.json
     Check HTTP Response Status Code Is    204
 
-TP_MEC_MEC016_MEO_UEAPPCTX_002_BR
+    [Teardown]    Delete application context    ${contextId_tbu}
+
+
+TC_MEC_MEC016_MEO_UEAPPCTX_002_BR
     [Documentation]   
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
     ...  Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2
     ...  Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Update application context    ${contextId}    UpdateAppContext_BR.json
+
+    [Setup]    Create application context    AppContext.json
+    Set Suite Variable    ${contextId_tbu}    ${response['body']['contextId']}
+
+    Update application context    ${contextId_tbu}    UpdateAppContext_BR.json
     Check HTTP Response Status Code Is    400
 
+    [Teardown]    Delete application context    ${contextId_tbu}
+    
 
-TP_MEC_MEC016_MEO_UEAPPCTX_002_NF
+TC_MEC_MEC016_MEO_UEAPPCTX_002_NF
     [Documentation]   
     ...  Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
     ...  Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.2
@@ -78,11 +93,12 @@ TP_MEC_MEC016_MEO_UEAPPCTX_002_NF
     # Preamble
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Update application context using wrong endpoint    ${contextId}    UpdateAppContext.json
+
+    Update application context using wrong endpoint    ${context-id}    UpdateAppContext.json
     Check HTTP Response Status Code Is    404
 
 
-TP_MEC_MEC016_MEO_UEAPPCTX_003_OK
+TC_MEC_MEC016_MEO_UEAPPCTX_003_OK
     [Documentation]  
     ...  Check that the IUT deletes the application context when commanded by an UE Application
     ...  Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5
@@ -90,11 +106,15 @@ TP_MEC_MEC016_MEO_UEAPPCTX_003_OK
     # Preamble
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Delete application context    ${contextId}
+    
+    [Setup]    Create application context    AppContext.json
+    Set Suite Variable    ${contextId_tbd}    ${response['body']['contextId']}
+
+    Delete application context    ${contextId_tbd}
     Check HTTP Response Status Code Is    204
 
 
-TP_MEC_MEC016_MEO_UEAPPCTX_003_NF
+TC_MEC_MEC016_MEO_UEAPPCTX_003_NF
     [Documentation]  
     ...  Check that the IUT deletes the application context when commanded by an UE Application
     ...  Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5
diff --git a/MEC016/MEO/UEAPPCTX/environment/variables.txt b/MEC016/MEO/UEAPPCTX/environment/variables.txt
index ef478b983932689129621fdf8b5e4b41abc59322..2d2e4564d957b5e56a211fff0c8993e4d39bef03 100644
--- a/MEC016/MEO/UEAPPCTX/environment/variables.txt
+++ b/MEC016/MEO/UEAPPCTX/environment/variables.txt
@@ -4,10 +4,10 @@ ${apiName}        dev_app
 ${apiVersion}     v1
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     192.168.56.1
-${MEC-APP_PORT}                     8081
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3003
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 
-${contextId}    
+${context-id}                        1
 ${NON_EXISTING_CONTEXT_ID}          NON_EXISTING_CONTEXT_ID
\ No newline at end of file
diff --git a/MEC016/MEO/UEAPPLOC/environment/variables.txt b/MEC016/MEO/UEAPPLOC/environment/variables.txt
index fd69adc16833ed7bbf8ded964c9497020536c3fd..e76ccf4c01748a6a7079dc7e3323eb946b74db44 100644
--- a/MEC016/MEO/UEAPPLOC/environment/variables.txt
+++ b/MEC016/MEO/UEAPPLOC/environment/variables.txt
@@ -4,8 +4,8 @@ ${apiName}        dev_app
 ${apiVersion}     v1
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     192.168.56.1
-${MEC-APP_PORT}                     8081
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3003
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 
diff --git a/MEC016/MEO/UEAPPS/environment/variables.txt b/MEC016/MEO/UEAPPS/environment/variables.txt
index 82ee14b3988541555049d9a72cadf6a72e4d2eff..6577a06cb73e9ce2660e160194ca1ce9ac3ab1a1 100644
--- a/MEC016/MEO/UEAPPS/environment/variables.txt
+++ b/MEC016/MEO/UEAPPS/environment/variables.txt
@@ -4,8 +4,8 @@ ${apiName}        dev_app
 ${apiVersion}     v1
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     192.168.56.1
-${MEC-APP_PORT}                     8081
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3003
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 
diff --git a/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json b/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json
index 453efaddbc678737d929ecea352606dd9403f2d9..6478132f4293d0ec64878af6f3889452a21508e4 100644
--- a/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json
+++ b/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json
@@ -1,212 +1,212 @@
 {
+  "properties": {
+    "appList": {
+      "description": "List of user applications available to the device application. As defined below.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "appInfo": {
+            "description": "",
+            "properties": {
+              "appCharcs": {
+                "description": "Characteristics of the application. As defined below. The application characteristics relate to the system resources consumed by the application. A device application can use this information e.g. for estimating the cost of use of the application or for the expected user experience.",
+                "properties": {
+                  "bandwidth": {
+                    "description": "The required connection bandwidth in kbit/s for the use of the MEC application instance. ",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "uint32"
+                  },
+                  "latency": {
+                    "description": "The target round trip time in milliseconds supported by the MEC system for the MEC application instance.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "uint32"
+                  },
+                  "memory": {
+                    "description": "The maximum size in Mbytes of the memory resource expected to be used by the MEC application instance in the MEC system.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "uint32"
+                  },
+                  "serviceCont": {
+                    "description": "Required service continuity mode for this application. Permitted values: 0 = SERVICE_CONTINUITY_NOT_REQUIRED. 1 = SERVICE_CONTINUITY_REQUIRED.",
+                    "enum": [
+                      0,
+                      1
+                    ],
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Enum"
+                  },
+                  "storage": {
+                    "description": "The maximum size in Mbytes of the storage resource expected to be used by the MEC application instance in the MEC system.",
+                    "format": "uint32",
+                    "type": "integer",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "uint32"
+                  }
+                },
+                "type": "object",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Structure (inlined)"
+              },
+              "appDId": {
+                "description": "Identifier of this MEC application descriptor. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. This attribute shall be globally unique.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "appDVersion": {
+                "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "appDescription": {
+                "description": "Human readable description of the MEC application (see note 2).",
+                "type": "string",
+                "maxLength": 128,
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "appLocation": {
+                "description": "Identifies the locations of the MEC application.",
+                "items": {
                   "properties": {
-                    "appList": {
-                      "description": "List of user applications available to the device application. As defined below.",
+                    "area": {
+                      "properties": {
+                        "coordinates": {
+                          "items": {
+                            "items": {
+                              "items": {
+                                "type": "number",
+                                "format": "float"
+                              },
+                              "type": "array"
+                            },
+                            "type": "array"
+                          },
+                          "minItems": 1,
+                          "type": "array",
+                          "x-etsi-mec-cardinality": 1,
+                          "x-etsi-mec-origin-type": "array"
+                        }
+                      },
+                      "type": "object"
+                    },
+                    "civicAddressElement": {
+                      "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.",
                       "items": {
                         "type": "object",
                         "properties": {
-                          "appInfo": {
-                            "description": "",
-                            "properties": {
-                              "appCharcs": {
-                                "description": "Characteristics of the application. As defined below. The application characteristics relate to the system resources consumed by the application. A device application can use this information e.g. for estimating the cost of use of the application or for the expected user experience.",
-                                "properties": {
-                                  "bandwidth": {
-                                    "description": "The required connection bandwidth in kbit/s for the use of the MEC application instance. ",
-                                    "format": "uint32",
-                                    "type": "integer",
-                                    "x-etsi-mec-cardinality": "0..1",
-                                    "x-etsi-mec-origin-type": "uint32"
-                                  },
-                                  "latency": {
-                                    "description": "The target round trip time in milliseconds supported by the MEC system for the MEC application instance.",
-                                    "format": "uint32",
-                                    "type": "integer",
-                                    "x-etsi-mec-cardinality": "0..1",
-                                    "x-etsi-mec-origin-type": "uint32"
-                                  },
-                                  "memory": {
-                                    "description": "The maximum size in Mbytes of the memory resource expected to be used by the MEC application instance in the MEC system.",
-                                    "format": "uint32",
-                                    "type": "integer",
-                                    "x-etsi-mec-cardinality": "0..1",
-                                    "x-etsi-mec-origin-type": "uint32"
-                                  },
-                                  "serviceCont": {
-                                    "description": "Required service continuity mode for this application. Permitted values: 0 = SERVICE_CONTINUITY_NOT_REQUIRED. 1 = SERVICE_CONTINUITY_REQUIRED.",
-                                    "enum": [
-                                      0,
-                                      1
-                                    ],
-                                    "type": "integer",
-                                    "x-etsi-mec-cardinality": "0..1",
-                                    "x-etsi-mec-origin-type": "Enum"
-                                  },
-                                  "storage": {
-                                    "description": "The maximum size in Mbytes of the storage resource expected to be used by the MEC application instance in the MEC system.",
-                                    "format": "uint32",
-                                    "type": "integer",
-                                    "x-etsi-mec-cardinality": "0..1",
-                                    "x-etsi-mec-origin-type": "uint32"
-                                  }
-                                },
-                                "type": "object",
-                                "x-etsi-mec-cardinality": "0..1",
-                                "x-etsi-mec-origin-type": "Structure (inlined)"
-                              },
-                              "appDId": {
-                                "description": "Identifier of this MEC application descriptor. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. This attribute shall be globally unique.",
-                                "type": "string",
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              },
-                              "appDVersion": {
-                                "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
-                                "type": "string",
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              },
-                              "appDescription": {
-                                "description": "Human readable description of the MEC application (see note 2).",
-                                "type": "string",
-                                "maxLength": 128,
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              },
-                              "appLocation": {
-                                "description": "Identifies the locations of the MEC application.",
-                                "items": {
-                                  "properties": {
-                                    "area": {
-                                      "properties": {
-                                        "coordinates": {
-                                          "items": {
-                                            "items": {
-                                              "items": {
-                                                "type": "number",
-                                                "format": "float"
-                                              },
-                                              "type": "array"
-                                            },
-                                            "type": "array"
-                                          },
-                                          "minItems": 1,
-                                          "type": "array",
-                                          "x-etsi-mec-cardinality": 1,
-                                          "x-etsi-mec-origin-type": "array"
-                                        }
-                                      },
-                                      "type": "object"
-                                    },
-                                    "civicAddressElement": {
-                                      "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.",
-                                      "items": {
-                                        "type": "object",
-                                        "properties": {
-                                          "caType": {
-                                            "description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ",
-                                            "type": "integer",
-                                            "x-etsi-mec-cardinality": "1",
-                                            "x-etsi-mec-origin-type": "Integer"
-                                          },
-                                          "caValue": {
-                                            "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].",
-                                            "type": "string",
-                                            "x-etsi-mec-cardinality": "1",
-                                            "x-etsi-mec-origin-type": "String"
-                                          }
-                                        }
-                                      },
-                                      "minItems": 0,
-                                      "required": [
-                                        "caType",
-                                        "caValue"
-                                      ],
-                                      "type": "array",
-                                      "x-etsi-mec-cardinality": "0..N",
-                                      "x-etsi-mec-origin-type": "array (Structure inlined)"
-                                    },
-                                    "countryCode": {
-                                      "description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).",
-                                      "type": "string",
-                                      "maxLength": 2,
-                                      "x-etsi-mec-cardinality": "0..1",
-                                      "x-etsi-mec-origin-type": "String"
-                                    }
-                                  },
-                                  "type": "object",
-                                  "x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.",
-                                  "x-etsi-ref": "6.5.2"
-                                },
-                                "minItems": 0,
-                                "type": "array",
-                                "x-etsi-mec-cardinality": "0..N",
-                                "x-etsi-mec-origin-type": "LocationConstraints"
-                              },
-                              "appName": {
-                                "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.",
-                                "type": "string",
-                                "maxLength": 32,
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              },
-                              "appProvider": {
-                                "description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.",
-                                "type": "string",
-                                "maxLength": 32,
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              },
-                              "appSoftVersion": {
-                                "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.",
-                                "type": "string",
-                                "maxLength": 32,
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              }
-                            },
-                            "required": [
-                              "appDId",
-                              "appName",
-                              "appProvider",
-                              "appSoftVersion",
-                              "appDVersion",
-                              "appDescription"
-                            ],
-                            "type": "object",
+                          "caType": {
+                            "description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ",
+                            "type": "integer",
                             "x-etsi-mec-cardinality": "1",
-                            "x-etsi-mec-origin-type": "Structure (inlined)"
+                            "x-etsi-mec-origin-type": "Integer"
                           },
-                          "vendorSpecificExt": {
-                            "description": "Extension for vendor specific information (see note 1).",
-                            "properties": {
-                              "vendorId": {
-                                "description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of vendor specific extension is not defined.",
-                                "type": "string",
-                                "maxLength": 32,
-                                "x-etsi-mec-cardinality": "1",
-                                "x-etsi-mec-origin-type": "String"
-                              }
-                            },
-                            "required": [
-                              "vendorId"
-                            ],
-                            "type": "object",
-                            "x-etsi-mec-cardinality": "0..1",
-                            "x-etsi-mec-origin-type": "Structure (inlined)"
+                          "caValue": {
+                            "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].",
+                            "type": "string",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "String"
                           }
                         }
                       },
                       "minItems": 0,
                       "required": [
-                        "appInfo"
+                        "caType",
+                        "caValue"
                       ],
                       "type": "array",
                       "x-etsi-mec-cardinality": "0..N",
-                      "x-etsi-mec-origin-type": "Array (Structure (inlined))"
+                      "x-etsi-mec-origin-type": "array (Structure inlined)"
+                    },
+                    "countryCode": {
+                      "description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).",
+                      "type": "string",
+                      "maxLength": 2,
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
                     }
                   },
                   "type": "object",
-                  "x-etsi-notes": "NOTE 1:\tThe vendor specific extension allows submitting information on the application lists that have been made available to the device application of the corresponding vendor.\nNOTE 2:\tThe language support may be limited. The length of the value shall not exceed 128 characters.",
-                  "x-etsi-ref": "6.2.2"
-                }
\ No newline at end of file
+                  "x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.",
+                  "x-etsi-ref": "6.5.2"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "LocationConstraints"
+              },
+              "appName": {
+                "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.",
+                "type": "string",
+                "maxLength": 32,
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "appProvider": {
+                "description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.",
+                "type": "string",
+                "maxLength": 32,
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "appSoftVersion": {
+                "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.",
+                "type": "string",
+                "maxLength": 32,
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "required": [
+              "appDId",
+              "appName",
+              "appProvider",
+              "appSoftVersion",
+              "appDVersion",
+              "appDescription"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          },
+          "vendorSpecificExt": {
+            "description": "Extension for vendor specific information (see note 1).",
+            "properties": {
+              "vendorId": {
+                "description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of vendor specific extension is not defined.",
+                "type": "string",
+                "maxLength": 32,
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "required": [
+              "vendorId"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Structure (inlined)"
+          }
+        }
+      },
+      "minItems": 0,
+      "required": [
+        "appInfo"
+      ],
+      "type": "array",
+      "x-etsi-mec-cardinality": "0..N",
+      "x-etsi-mec-origin-type": "Array (Structure (inlined))"
+    }
+  },
+  "type": "object",
+  "x-etsi-notes": "NOTE 1:\tThe vendor specific extension allows submitting information on the application lists that have been made available to the device application of the corresponding vendor.\nNOTE 2:\tThe language support may be limited. The length of the value shall not exceed 128 characters.",
+  "x-etsi-ref": "6.2.2"
+}
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/AMSService.robot b/MEC021/SRV/AMS/AMSService.robot
index 25ed72c2927516c9b76f9759b989403bf97ebabb..8f9cc705c7f8994031456a7536707503b835583c 100644
--- a/MEC021/SRV/AMS/AMSService.robot
+++ b/MEC021/SRV/AMS/AMSService.robot
@@ -9,69 +9,175 @@ Library     REST    ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT}    ssl_verify=false
 Library     BuiltIn
 Library     OperatingSystem
 Library     MockServerLibrary
-
-
+Library     Collections
 
 
 *** Test Cases ***
-TC_MEC_MEC021_SRV_AMS_001_OK
+
+# Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services
+TC_MEC_MEC021_SRV_AMS_001_OK_01
     [Documentation]  Request Registered AMS information 
     ...  Check that the AMS service returns information about the registered application mobility services when requested
-    ...  ETSI GS MEC 021 2.0.8, clause 8.3.3.1
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
+
+    [Setup]    Create two new application mobility service      ${APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}    ${APP_MOBILITY_SERVICE_ID2}    ${APP_INS_ID}
+
     Get Registered AMS information
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   AppMobilityServiceInfos
 
+    FOR    ${app}    IN    @{response['body']}
+        ${passed_appMobilityServiceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID} 
+        ${passed_appInstanceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['serviceConsumerId']['appInstanceId']}    ${APP_INS_ID}  
+        Exit For Loop If    ${passed_appMobilityServiceId} and ${passed_appInstanceId}
+    END
 
-TC_MEC_MEC021_SRV_AMS_002_OK
-    [Documentation]   Request Registered AMS information using attribute-selector
+    Should be True    ${passed_appMobilityServiceId}
+    Should be True    ${passed_appInstanceId}
+
+    FOR    ${app}    IN    @{response['body']}
+        ${passed_appMobilityServiceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID2} 
+        ${passed_appInstanceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['serviceConsumerId']['appInstanceId']}    ${APP_INS_ID}  
+        Exit For Loop If    ${passed_appMobilityServiceId} and ${passed_appInstanceId}
+    END
+
+    Should be True    ${passed_appMobilityServiceId}
+    Should be True    ${passed_appInstanceId}
+
+    [TearDown]    Delete two specific AMS services    ${APP_MOBILITY_SERVICE_ID}    ${APP_MOBILITY_SERVICE_ID2}
+
+TC_MEC_MEC021_SRV_AMS_001_OK_02
+    [Documentation]  Request Registered AMS information 
     ...  Check that the AMS service returns information about the registered application mobility services when requested
-    ...  ETSI GS MEC 021 2.0.8, clause 8.3.3.1
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    Get Registered AMS information using attribute-selector    appMobilityServiceId    ${APP_MOBILITY_SERVICE_ID}
+
+    [Setup]    Create two new application mobility service      ${APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}    ${APP_MOBILITY_SERVICE_ID2}    ${APP_INS_ID}
+
+    Get Registered AMS information using attribute-selector    filter    ${APP_MOBILITY_SERVICE_FILTER_APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is   AppMobilityServiceInfos
-    Check Result Contains    ${response['body']['AppMobilityServiceInfo']}    appMobilityServiceId    ${APP_MOBILITY_SERVICE_ID}
-    
+    Check HTTP Response Body Json Schema Is    AppMobilityServiceInfos
+
+    FOR    ${app}    IN    @{response['body']}
+        ${passed_appMobilityServiceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID} 
+        ${passed_appInstanceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['serviceConsumerId']['appInstanceId']}    ${APP_INS_ID}  
+        Exit For Loop If    ${passed_appMobilityServiceId} and ${passed_appInstanceId}
+    END
+
+    Should be True    ${passed_appMobilityServiceId}
+    Should be True    ${passed_appInstanceId}
+
+    [TearDown]    Delete two specific AMS services    ${APP_MOBILITY_SERVICE_ID}    ${APP_MOBILITY_SERVICE_ID2}
+
+
+TC_MEC_MEC021_SRV_AMS_001_OK_03
+    [Documentation]  Request Registered AMS information 
+    ...  Check that the AMS service returns information about the a specific registered application mobility service when requested - filter
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
+    [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
+
+    [Setup]    Create two new application mobility service      ${APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}    ${APP_MOBILITY_SERVICE_ID2}    ${APP_INS_ID}
+
+    Get Registered AMS information using attribute-selector    filter    ${APP_MOBILITY_SERVICE_FILTER_SERVICE_CONSUMER_ID}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    AppMobilityServiceInfos
+
+    FOR    ${app}    IN    @{response['body']}
+        ${passed_appMobilityServiceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID} 
+        ${passed_appInstanceId}    Run Keyword And Return Status    Should Be Equal As Strings  ${app['serviceConsumerId']['appInstanceId']}    ${APP_INS_ID}  
+        Exit For Loop If    ${passed_appMobilityServiceId} and ${passed_appInstanceId}
+    END
+
+    [TearDown]    Delete two specific AMS services    ${APP_MOBILITY_SERVICE_ID}    ${APP_MOBILITY_SERVICE_ID2}
+
+
+TC_MEC_MEC021_SRV_AMS_001_OK_04
+    [Documentation]  Request Registered AMS information 
+    ...  Check that the AMS service returns information about the a specific registered application mobility service when requested - filter
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
+    [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
+
+    [Setup]    Create two new application mobility service      ${APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}    ${APP_MOBILITY_SERVICE_ID2}    ${APP_INS_ID}
+
+    Get Registered AMS information using attribute-selector    filter    ${APP_MOBILITY_SERVICE_FILTER_EXCLUDE_FIELDS}
+    Check HTTP Response Status Code Is    200
+    #Check HTTP Response Body Json Schema Is    AppMobilityServiceInfos
+
+    FOR    ${app}    IN    @{response['body']}
+        Should Be Equal As Strings  ${app['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID} 
+        Should Not Contain    ${app}    serviceConsumerId
+    END
+
+    [TearDown]    Delete two specific AMS services    ${APP_MOBILITY_SERVICE_ID}    ${APP_MOBILITY_SERVICE_ID2}
+
+#TC_MEC_MEC021_SRV_AMS_001_OK_05
+#    [Documentation]  Request Registered AMS information 
+#    ...  Check that the AMS service returns information about the registered application mobility services when requested - No registered application mobility service
+#    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+#    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
+#    [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
+
+
 
 TC_MEC_MEC021_SRV_AMS_001_BR
     [Documentation]    Request Registered AMS information using bad parameters
     ...  Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters
-    ...  ETSI GS MEC 021 2.0.8, clause 8.3.3.1
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get Registered AMS information using bad parameters
     Check HTTP Response Status Code Is    400
 
 
-TC_MEC_MEC021_SRV_AMS_003_OK
+# Post    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services
+TC_MEC_MEC021_SRV_AMS_002_OK
     [Documentation]   Register a new application mobility services
     ...  Check that the AMS service creates a new application mobility services when requested
-    ...  ETSI GS MEC 021 2.0.8, clause 8.3.3.4
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    Create a new application mobility service      RegistrationInfo
+    Create a new application mobility service      ${APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}      
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    AppMobilityServiceInfo
-    Log    Checking Postcondition
-    Check Result Contains    ${response['body']['AppMobilityServiceInfo']['registeredAppMobilityService']['serviceConsumerId']['']}    appInstanceId    ${APP_INS_ID}
-    
+    Should Be Equal As Strings  ${response['body']['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID}   
+    Should Be Equal As Strings  ${response['body']['serviceConsumerId']['appInstanceId']}    ${APP_INS_ID}  
+
+
+# This test case is incomplete
+#TC_MEC_MEC021_SRV_AMS_002_BR
+#    [Documentation]    Request Registered AMS information using bad parameters
+#    ...  Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters
+#    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.4
+#    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
+#    [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
+
+
+ 
 
 TC_MEC_MEC021_SRV_AMS_003_BR
     [Documentation]   Register an UE Identity Tag using invalid parameter
     ...  Check that the AMS service sends an error when it receives a malformed request to create a new application mobility service
-    ...  ETSI GS MEC 021 2.0.8, clause 8.3.3.4
+    ...  ETSI GS MEC 021 3.3.1, clause 8.3.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    Create a new application mobility service    RegistrationInfoMalformed
+    Create a new application mobility service    ${MALFORMED_APP_MOBILITY_SERVICE_ID}    ${APP_INS_ID}  
     Check HTTP Response Status Code Is    400
 
 
+# Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
 TC_MEC_MEC021_SRV_AMS_004_OK
     [Documentation]   Request Subscriptions List for the registered AMS services
     ...  Check that the AMS service returns information about the available subscriptions when requested.
     ...     Permitted SUBSCRIPTION_TYPE are:
     ...     - MobilityProcedureSubscription
     ...     - AdjacentAppInfoSubscription"
-    ...  ETSI GS MEC 021 2.0.8, clause 8.6.3.1
+    ...  ETSI GS MEC 021 3.3.1, clause 8.6.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get Subscriptions for registered AMS
     Check HTTP Response Status Code Is    200
@@ -82,19 +188,22 @@ TC_MEC_MEC021_SRV_AMS_004_OK
 TC_MEC_MEC021_SRV_AMS_004_BR
     [Documentation]   Request Subscription List for registered AMS Services using wrong attribute parameters
     ...  Check that the AMS service sends an error when it receives a malformed query about the available subscriptions
+    ...  ETSI GS MEC 021 3.3.1, clause 8.6.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get Subscriptions for registered AMS with wrong attbirube parameter
     Check HTTP Response Status Code Is    400
 
 
-
+# Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
 TC_MEC_MEC021_SRV_AMS_005_OK
     [Documentation]   Create a notification subscription
     ...  Check that the AMS service creates a notification subscriptions when requested.
     ...     Permitted SUBSCRIPTION_TYPE are:
     ...     - MobilityProcedureSubscription
     ...     - AdjacentAppInfoSubscription"
-    ...  ETSI GS MEC 021 2.0.8, clause 8.6.3.4
+    ...  ETSI GS MEC 021 3.3.1, clause 8.6.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Post a new notification subscription    NotificationSubscription
     Check HTTP Response Status Code Is    201
@@ -107,20 +216,22 @@ TC_MEC_MEC021_SRV_AMS_005_BR
     ...     Permitted SUBSCRIPTION_TYPE are:
     ...     - MobilityProcedureSubscription
     ...     - AdjacentAppInfoSubscription"
-    ...  ETSI GS MEC 021 2.0.8, clause 8.6.3.4
+    ...  ETSI GS MEC 021 3.3.1, clause 8.6.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Post a new notification subscription    NotificationSubscriptionError
     Check HTTP Response Status Code Is    400
 
 
-
+# Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
 TC_MEC_MEC021_SRV_AMS_006_OK
     [Documentation]   Request a specific subscription
     ...  Check that the AMS service returns information about a given subscription when requested.
     ...     Permitted SUBSCRIPTION_TYPE are:
     ...     - MobilityProcedureSubscription
     ...     - AdjacentAppInfoSubscription"
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.1
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get individual subscription for AMS services    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    200
@@ -131,19 +242,22 @@ TC_MEC_MEC021_SRV_AMS_006_OK
 TC_MEC_MEC021_SRV_AMS_006_NF
     [Documentation]   Request a specific subscription using wrong identifier
     ...  Check that the AMS service returns an error when receives a query about a not existing subscription
-    ...     ETSI GS MEC 021 2.0.8, clause 8.7.3.1
+    ...     ETSI GS MEC 021 3.3.1, clause 8.7.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get individual subscription for AMS services    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
 
+# Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${identifier}
 TC_MEC_MEC021_SRV_AMS_007_OK
     [Documentation]   Modify a specific subscription
     ...  Check that the AMS service modifies a given subscription when requested.
     ...  Permitted SUBSCRIPTION_TYPE are:
     ...    - MobilityProcedureSubscription
     ...    - AdjacentAppInfoSubscription
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Update individual subscription for AMS services    ${SUBSCRIPTION_ID}    NotificationSubscription
     Check HTTP Response Status Code Is    200
@@ -157,7 +271,8 @@ TC_MEC_MEC021_SRV_AMS_007_BR
     ...  Permitted SUBSCRIPTION_TYPE are:
     ...    - MobilityProcedureSubscription
     ...    - AdjacentAppInfoSubscription
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Update individual subscription for AMS services    ${SUBSCRIPTION_ID}    NotificationSubscriptionError
     Check HTTP Response Status Code Is    400
@@ -166,16 +281,19 @@ TC_MEC_MEC021_SRV_AMS_007_BR
 TP_MEC_MEC021_SRV_AMS_007_NF
     [Documentation]   Modify a specific subscription using wrong identifier
     ...  Check that the AMS service sends an error when it receives a modify request for a not existing subscription.
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.2
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Update individual subscription for AMS services    ${NON_EXISTENT_SUBSCRIPTION_ID}    NotificationSubscription
     Check HTTP Response Status Code Is    404
 
 
+# Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
 TC_MEC_MEC021_SRV_AMS_008_OK
     [Documentation]   Remove a specific subscription
     ...  Check that the AMS service deletes a given subscription when requested
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.5
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.5
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Delete individual subscription for AMS services    ${SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    204
@@ -184,28 +302,32 @@ TC_MEC_MEC021_SRV_AMS_008_OK
 TC_MEC_MEC021_SRV_AMS_008_NF
     [Documentation]   Remove a specific subscription using wrong identifier
     ...  Check that the AMS service sends an error when it receives a delete request for a not existing subscription
-    ...  ETSI GS MEC 021 2.0.8, clause 8.7.3.5
+    ...  ETSI GS MEC 021 3.3.1, clause 8.7.3.5
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Delete individual subscription for AMS services    ${NON_EXISTENT_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    404
 
 
+
 TC_MEC_MEC021_SRV_AMS_009_OK
     [Documentation]   Post Mobility Procedure Notification
     ...  Check that the AMS service sends an AMS notification  about a mobility procedure 
     ...    if the AMS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 021 2.0.8, clause 7.4.2
+    ...  ETSI GS MEC 021 3.3.1, clause 7.4.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    ${json}=	Get File	schemas/MobilityProcedureNotification.schema.json
-    Log  Creating mock request and response to handle  Mobility Procedure Notification
-    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
-    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
-    Create Mock Expectation  ${req}  ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation  ${req}
-    Log  Cleaning the endpoint
-    Clear Requests  ${callback_endpoint} 
+    Log    TBD
+#    ${json}=	Get File	schemas/MobilityProcedureNotification.schema.json
+#    Log  Creating mock request and response to handle  Mobility Procedure Notification
+#    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
+#    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
+#    Create Mock Expectation  ${req}  ${rsp}
+#    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
+#    Log  Verifying results
+#    Verify Mock Expectation  ${req}
+#    Log  Cleaning the endpoint
+#    Clear Requests  ${callback_endpoint} 
     
 
 
@@ -213,18 +335,20 @@ TC_MEC_MEC021_SRV_AMS_010_OK
     [Documentation]   Post Adjacent Application Info Notification
     ...  Check that the AMS service sends an AMS notification about adjacent application instances 
     ...    if the AMS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 021 2.0.8, clause 7.4.3
+    ...  ETSI GS MEC 021 3.3.1, clause 7.4.3
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    ${json}=	Get File	schemas/AdjacentAppInfoNotification.schema.json
-    Log  Creating mock request and response to handle Adjacent Application Info Notification
-    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
-    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
-    Create Mock Expectation  ${req}  ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation  ${req}
-    Log  Cleaning the endpoint
-    Clear Requests  ${callback_endpoint} 
+    Log    TBD
+#    ${json}=	Get File	schemas/AdjacentAppInfoNotification.schema.json
+#    Log  Creating mock request and response to handle Adjacent Application Info Notification
+#    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
+#    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
+#    Create Mock Expectation  ${req}  ${rsp}
+#    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
+#    Log  Verifying results
+#    Verify Mock Expectation  ${req}
+#    Log  Cleaning the endpoint
+#    Clear Requests  ${callback_endpoint} 
 
 
 
@@ -232,25 +356,28 @@ TC_MEC_MEC021_SRV_AMS_011_OK
     [Documentation]   Post Expire Notification
     ...  Check that the AMS service sends an AMS notification on subscription expiration
     ...    if the AMS service has an associated subscription and the event is generated
-    ...  ETSI GS MEC 021 2.0.8, clause 7.4.4
+    ...  ETSI GS MEC 021 3.3.1, clause 7.4.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
-    ${json}=	Get File	schemas/ExpiryNotification.schema.json
-    Log  Creating mock request and response to handle Expire Notification
-    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
-    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
-    Create Mock Expectation  ${req}  ${rsp}
-    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
-    Log  Verifying results
-    Verify Mock Expectation  ${req}
-    Log  Cleaning the endpoint
-    Clear Requests  ${callback_endpoint} 
-
-
-
+    Log    TBD
+#    ${json}=	Get File	schemas/ExpiryNotification.schema.json
+#    Log  Creating mock request and response to handle Expire Notification
+#    &{req}=  Create Mock Request Matcher	POST  ${callback_endpoint}  body_type="JSON_SCHEMA"    body=${json}
+#    &{rsp}=  Create Mock Response	headers="Content-Type: application/json"  status_code=204
+#    Create Mock Expectation  ${req}  ${rsp}
+#    Wait Until Keyword Succeeds    ${total_polling_time}   ${polling_interval}   Verify Mock Expectation    ${req}
+#    Log  Verifying results
+#    Verify Mock Expectation  ${req}
+#    Log  Cleaning the endpoint
+#    Clear Requests  ${callback_endpoint} 
+
+
+# Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
 TC_MEC_MEC021_SRV_AMS_012_OK
     [Documentation]   Request a specific AMS service
     ...  Check that the AMS service returns information about this individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get specific AMS service    ${APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    200
@@ -262,21 +389,47 @@ TC_MEC_MEC021_SRV_AMS_012_NF
     [Documentation]   Request a specific AMS Service using non existent identifier
     ...  Check that the AMS service sends an error when receives a query about a not existing individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.1
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Get specific AMS service     ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    404
 
 
-
+# Put    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
 TC_MEC_MEC021_SRV_AMS_013_OK
     [Documentation]   Modify a specific AMS service
     ...  Check that the AMS service modifies the individual application mobility service when requested
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Modify a specific AMS service    ${APP_MOBILITY_SERVICE_ID}     RegistrationInfo 
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    AppMobilityServiceInfo
-    Check Result Contains  ${response['registeredAppMobilityService']['serviceConsumerId']}  appInstanceId  ${APP_INS_ID}
+    Should Be Equal As Strings  ${response['body']['appMobilityServiceId']}    ${APP_MOBILITY_SERVICE_ID}
+    Should Be Equal As Strings  ${response['body']['serviceConsumerId']['appInstanceId']}    ${APP_MOBILITY_SERVICE_ID}            # from req
+    #Check Result Contains  ${response['registeredAppMobilityService']['serviceConsumerId']}  appInstanceId  ${APP_INS_ID}
+
+#ensure that {
+#    when {
+#       the IUT entity receives a vPUT containing 
+#            uri indicating value "/amsi/v1/app_mobility_services/{APP_MOBILITY_SERVICE_ID_1}",
+#            body containing
+#                RegistrationInfo containing
+#                    serviceConsumerId containing
+#                        appInstanceId indicating value NEW_APP_INS_ID_NEW_1;;;;
+#        from the AMS_CLIENT entity
+#    }
+#    then {
+#        the IUT entity sends a HTTP_RESPONSE containing
+#            status set to "200 OK",
+#            body containing
+#                RegistrationInfo containing
+#                    appMobilityServiceId indicating value APP_MOBILITY_SERVICE_ID_1,
+#                    serviceConsumerId containing
+#                        appInstanceId indicating value NEW_APP_INS_ID_NEW_1;;;;
+#        to the AMS_CLIENT entity
+#    }
+#}
 
 
 
@@ -284,6 +437,7 @@ TC_MEC_MEC021_SRV_AMS_013_NF
     [Documentation]   Modify a specific AMS Service using non existent identifier
     ...  Check that the AMS service sends an error when receives a request to modify a not existing individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Modify a specific AMS service    ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}    RegistrationInfo 
     Check HTTP Response Status Code Is    404
@@ -293,16 +447,19 @@ TC_MEC_MEC021_SRV_AMS_013_BR
     [Documentation]   Modify a specific AMS Service using bad parameters
     ...  Check that the AMS service sends an error when receives a request to modify a individual application mobility service using bad parameters
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.2
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Modify a specific AMS service    ${APP_MOBILITY_SERVICE_ID}     RegistrationInfoWithError
     Check HTTP Response Status Code Is    400
 
 
+# Delete    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
 TC_MEC_MEC021_SRV_AMS_014_OK
     [Documentation]   Remove a specific AMS service
     ...  Check that the AMS service de-register the individual application mobility service and delete the resource
     ...  that represents the individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.5
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Delete specific AMS service    ${APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    204
@@ -313,16 +470,18 @@ TC_MEC_MEC021_SRV_AMS_014_NF
     ...  Check that the AMS service sends an error when is requested to delete the resource
 	...		that represents the individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.4.3.5
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Delete specific AMS service     ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    404
 
 
-
+# POST    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}/deregisterTask
 TC_MEC_MEC021_SRV_AMS_015_OK
     [Documentation]   Request to deregister a specific AMS service
     ...  Check that the AMS service deregister an individual application mobility service on expiry of the timer associated with the service
     ...  ETSI GS MEC 021 2.0.10, clause 8.5.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Deregister specific AMS service    ${APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    204
@@ -333,6 +492,7 @@ TC_MEC_MEC021_SRV_AMS_015_NF
     [Documentation]   Request to deregister a specific AMS service using non existent identifier
     ...  Check that the AMS service send an error when is requested to deregister a not existent individual application mobility service
     ...  ETSI GS MEC 021 2.0.10, clause 8.5.3.4
+    ...  Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml
     [Tags]    PIC_AMS    INCLUDE_UNDEFINED_SCHEMAS
     Deregister specific AMS service     ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID}
     Check HTTP Response Status Code Is    404
@@ -341,7 +501,7 @@ TC_MEC_MEC021_SRV_AMS_015_NF
 Get Registered AMS information
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
@@ -349,7 +509,7 @@ Get Registered AMS information using attribute-selector
     [Arguments]    ${key}    ${value}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices?${key}=${value}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services?${key}=${value}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -357,7 +517,7 @@ Get specific AMS service
     [Arguments]     ${amsId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}    
 
@@ -365,7 +525,7 @@ Get specific AMS service
 Get Registered AMS information using bad parameters
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices?appMobilityService=${APP_MOBILITY_SERVICE_ID}     //param should be appMobilityServiceId
+    Get    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services?appMobilityService=${APP_MOBILITY_SERVICE_ID}     #param should be appMobilityServiceId
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -375,17 +535,29 @@ Modify a specific AMS service
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Put    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}   ${content}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}   ${content}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 
-
 Delete specific AMS service
     [Arguments]     ${amsId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Delete    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Delete two specific AMS services
+    [Arguments]     ${amsId}    ${amsId2}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId2}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -395,22 +567,54 @@ Deregister specific AMS service
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}/deregisterTask
+    POST    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId}/deregisterTask
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 
 Create a new application mobility service
-    [Arguments]    ${content}
+    [Arguments]    ${appMobilityServiceId}    ${appInstanceId}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    ${file}=    Catenate    SEPARATOR=    json/    ${content}    .json
+    ${file}=    Catenate    SEPARATOR=    json/    RegistrationInfo    .json
     ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices    ${body}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    Set To Dictionary    ${json_data}    appMobilityServiceId=${appMobilityServiceId}
+    Set To Dictionary    ${json_data['serviceConsumerId']}    appInstanceId=${appInstanceId}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    Post    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services    ${modified_json_string}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    
+
+Create two new application mobility service
+    [Arguments]    ${appMobilityServiceId}    ${appInstanceId}    ${appMobilityServiceId2}    ${appInstanceId2}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    json/    RegistrationInfo    .json
+    ${body}=    Get File    ${file}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    Set To Dictionary    ${json_data}    appMobilityServiceId=${appMobilityServiceId}
+    Set To Dictionary    ${json_data['serviceConsumerId']}    appInstanceId=${appInstanceId}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    Post    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services    ${modified_json_string}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    json/    RegistrationInfo    .json
+    ${body}=    Get File    ${file}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    Set To Dictionary    ${json_data}    appMobilityServiceId=${appMobilityServiceId2}
+    Set To Dictionary    ${json_data['serviceConsumerId']}    appInstanceId=${appInstanceId2}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    Post    ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services    ${modified_json_string}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+
 
 Get Subscriptions for registered AMS    
     Set Headers    {"Accept":"application/json"}
@@ -456,7 +660,7 @@ Delete individual subscription for AMS services
     [Arguments]    ${content}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}      
 
diff --git a/MEC021/SRV/AMS/environment/variables.txt b/MEC021/SRV/AMS/environment/variables.txt
index af30adf4c6d0cb4fb9ade3077238eb63af920563..045ce68d5f40191c1ffd65d37b68fa63ee1826fa 100644
--- a/MEC021/SRV/AMS/environment/variables.txt
+++ b/MEC021/SRV/AMS/environment/variables.txt
@@ -1,16 +1,21 @@
 *** Variables ***
 # Generic variables
 ${AMS_SCHEMA}                   http
-${AMS_HOST}                     10.192.2.172
-${AMS_PORT}                     8081
+${AMS_HOST}                     mockoon
+${AMS_PORT}                     3006
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
-${apiName}        
+${apiName}        amsi
 ${apiVersion}     v1
 
 # Specific variables
-${APP_MOBILITY_SERVICE_ID}          KtRGymNQ84dG3mQfRepa
+${APP_MOBILITY_SERVICE_ID}          APP_MOBILITY_SERVICE_ID
+${APP_MOBILITY_SERVICE_ID2}          APP_MOBILITY_SERVICE_ID2
+${MALFORMED_APP_MOBILITY_SERVICE_ID}          MALFORMED_APP_MOBILITY_SERVICE_ID
+${APP_MOBILITY_SERVICE_FILTER_APP_MOBILITY_SERVICE_ID}        (eq,appMobilityServiceId,APP_MOBILITY_SERVICE_ID)
+${APP_MOBILITY_SERVICE_FILTER_SERVICE_CONSUMER_ID}        (eq,serviceConsumerId[appInstanceId],5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f)
+${APP_MOBILITY_SERVICE_FILTER_EXCLUDE_FIELDS}        (eq,appMobilityServiceId,APP_MOBILITY_SERVICE_ID)&exclude_fields=[serviceConsumerId]
 ${APP_INS_ID}                       5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
 ${SUBSCRIPTION_TYPE}                MobilityProcedureSubscription
 ${SUBSCRIPTION_ID}                  e0deee2b-6e50-4f33-ab09-8bf0585025d3
diff --git a/MEC021/SRV/AMS/json/NotificationSubscription.json b/MEC021/SRV/AMS/json/NotificationSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c2ed02195d97b75b2a0d9e4c75f31912348447c
--- /dev/null
+++ b/MEC021/SRV/AMS/json/NotificationSubscription.json
@@ -0,0 +1,16 @@
+{
+    "callbackReference": "http://example.com/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+        "websocketUri": "ws://example.com/websocket",
+        "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+        "seconds": 1644691200,
+        "nanoSeconds": 0
+    },
+    "filterCriteria": {
+        "appInstanceId": "app-123"
+    },
+    "subscriptionType": "AdjacentAppInfoSubscription"
+}
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/json/NotificationSubscriptionError.json b/MEC021/SRV/AMS/json/NotificationSubscriptionError.json
new file mode 100644
index 0000000000000000000000000000000000000000..3c78fc9a3128a77d49041a8601dbd4eaeee8c1ca
--- /dev/null
+++ b/MEC021/SRV/AMS/json/NotificationSubscriptionError.json
@@ -0,0 +1,16 @@
+{
+    "callbackReference": "http://example.com/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+        "websocketUri": "ws://example.com/websocket",
+        "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+        "seconds": 1644691200,
+        "nanoSeconds": 0
+    },
+    "filterCriteria": {
+        "appInstanceId": "app-123"
+    },
+    "subscriptionType": "INVALID_SUBSCRIPTION_TYPE"
+}
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/json/RegistrationInfo.json b/MEC021/SRV/AMS/json/RegistrationInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..ac38cbfb1997b8e5607d4a586a7cf7ce54409525
--- /dev/null
+++ b/MEC021/SRV/AMS/json/RegistrationInfo.json
@@ -0,0 +1,26 @@
+{
+    "serviceConsumerId": {
+        "appInstanceId": "exampleAppInstanceId",
+        "mepId": "exampleMepId"
+    },
+    "appMobilityServiceId": "exampleAppMobilityServiceId",
+    "deviceInformation": [
+        {
+            "associateId": {
+                "type": "UE_IPv4_ADDRESS",
+                "value": "192.168.1.100"
+            },
+            "appMobilityServiceLevel": "APP_MOBILITY_NOT_ALLOWED",
+            "contextTransferState": "NOT_TRANSFERRED"
+        },
+        {
+            "associateId": {
+                "type": "UE_IPV6_ADDRESS",
+                "value": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
+            },
+            "appMobilityServiceLevel": "APP_MOBILITY_WITH_CONFIRMATION",
+            "contextTransferState": "USER_CONTEXT_TRANSFER_COMPLETED"
+        }
+    ],
+    "expiryTime": 3600
+}
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/schemas/AppMobilityServiceInfo.schema.json b/MEC021/SRV/AMS/schemas/AppMobilityServiceInfo.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..2af27c6c50b818b6323bd084bac60b150a3f7b01
--- /dev/null
+++ b/MEC021/SRV/AMS/schemas/AppMobilityServiceInfo.schema.json
@@ -0,0 +1,99 @@
+{
+    "title": "RegistrationInfo",
+    "required": [
+      "serviceConsumerId"
+    ],
+    "type": "object",
+    "properties": {
+      "appMobilityServiceId": {
+        "type": "string",
+        "description": "The identifier of registered application mobility service. Shall be absent in POST requests, and present otherwise."
+      },
+      "deviceInformation": {
+        "type": "array",
+        "items": {
+          "title": "RegistrationInfo.deviceInformation",
+          "required": [
+            "associateId"
+          ],
+          "type": "object",
+          "properties": {
+            "associateId": {
+              "title": "AssociateId",
+              "required": [
+                "type",
+                "value"
+              ],
+              "type": "object",
+              "properties": {
+                "type": {
+                  "title": "Type",
+                  "enum": [
+                    "UE_IPv4_ADDRESS",
+                    "UE_IPV6_ADDRESS",
+                    "NATED_IP_ADDRESS",
+                    "GTP_TEID"
+                  ],
+                  "type": "string",
+                  "description": "Numeric value (0-255) corresponding to specified type of identifier",
+                  "examples": [
+                    "UE_IPv4_ADDRESS"
+                  ]
+                },
+                "value": {
+                  "type": "string",
+                  "description": "Value for the identifier."
+                }
+              }
+            },
+            "appMobilityServiceLevel": {
+              "title": "AppMobilityServiceLevel",
+              "enum": [
+                "APP_MOBILITY_NOT_ALLOWED",
+                "APP_MOBILITY_WITH_CONFIRMATION",
+                "APP_MOBILITY_WITHOUT_CONFIRMATION"
+              ],
+              "type": "string",
+              "description": "This attribute provides an option for the application instance (server) to communicate with the application client before relocating this application instance to another MEC host.",
+              "examples": [
+                "APP_MOBILITY_NOT_ALLOWED"
+              ]
+            },
+            "contextTransferState": {
+              "title": "contextTransferState",
+              "enum": [
+                "NOT_TRANSFERRED",
+                "USER_CONTEXT_TRANSFER_COMPLETED"
+              ],
+              "type": "string",
+              "description": "If present, it represents the state of transferring the user context to another application instance.",
+              "examples": [
+                "NOT_TRANSFERRED"
+              ]
+            }
+          }
+        },
+        "description": "If present, it specifies the device served by the application instance which is registering is registering the Application Mobility Service."
+      },
+      "expiryTime": {
+        "type": "integer",
+        "description": "If present, it indicates the time of Application Mobility Service expiration from the time of registration accepted.The value \"0\" means infinite time, i.e. no expiration.The unit of expiry time is one second.",
+        "contentEncoding": "int32"
+      },
+      "serviceConsumerId": {
+        "title": "RegistrationInfo.serviceConsumerId",
+        "type": "object",
+        "properties": {
+          "appInstanceId": {
+            "type": "string",
+            "description": "If present, it represents the identifier of the application instance registering the Application Mobility Service."
+          },
+          "mepId": {
+            "type": "string",
+            "description": "If present, it represents the identifier of the MEC platform registering the Application Mobility Service."
+          }
+        },
+        "description": "The identifier of service consumer requesting the application mobility service, i.e. either the application instance ID or the MEC platform ID."
+      }
+    }
+  }
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/schemas/AppMobilityServiceInfos.schema.json b/MEC021/SRV/AMS/schemas/AppMobilityServiceInfos.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..5a64a8e0beb03011fdfa76e9a339b0fec6769b64
--- /dev/null
+++ b/MEC021/SRV/AMS/schemas/AppMobilityServiceInfos.schema.json
@@ -0,0 +1,104 @@
+{
+    "type": "array",
+    "items": {
+      "title": "RegistrationInfo",
+      "required": [
+        "serviceConsumerId"
+      ],
+      "type": "object",
+      "properties": {
+        "appMobilityServiceId": {
+          "type": "string",
+          "description": "The identifier of registered application mobility service. Shall be absent in POST requests, and present otherwise."
+        },
+        "deviceInformation": {
+          "type": "array",
+          "items": {
+            "title": "RegistrationInfo.deviceInformation",
+            "required": [
+              "associateId"
+            ],
+            "type": "object",
+            "properties": {
+              "associateId": {
+                "title": "AssociateId",
+                "required": [
+                  "type",
+                  "value"
+                ],
+                "type": "object",
+                "properties": {
+                  "type": {
+                    "title": "Type",
+                    "enum": [
+                      "UE_IPv4_ADDRESS",
+                      "UE_IPV6_ADDRESS",
+                      "NATED_IP_ADDRESS",
+                      "GTP_TEID"
+                    ],
+                    "type": "string",
+                    "description": "Numeric value (0-255) corresponding to specified type of identifier",
+                    "examples": [
+                      "UE_IPv4_ADDRESS"
+                    ]
+                  },
+                  "value": {
+                    "type": "string",
+                    "description": "Value for the identifier."
+                  }
+                }
+              },
+              "appMobilityServiceLevel": {
+                "title": "AppMobilityServiceLevel",
+                "enum": [
+                  "APP_MOBILITY_NOT_ALLOWED",
+                  "APP_MOBILITY_WITH_CONFIRMATION",
+                  "APP_MOBILITY_WITHOUT_CONFIRMATION"
+                ],
+                "type": "string",
+                "description": "This attribute provides an option for the application instance (server) to communicate with the application client before relocating this application instance to another MEC host.",
+                "examples": [
+                  "APP_MOBILITY_NOT_ALLOWED"
+                ]
+              },
+              "contextTransferState": {
+                "title": "contextTransferState",
+                "enum": [
+                  "NOT_TRANSFERRED",
+                  "USER_CONTEXT_TRANSFER_COMPLETED"
+                ],
+                "type": "string",
+                "description": "If present, it represents the state of transferring the user context to another application instance.",
+                "examples": [
+                  "NOT_TRANSFERRED"
+                ]
+              }
+            }
+          },
+          "description": "If present, it specifies the device served by the application instance which is registering is registering the Application Mobility Service."
+        },
+        "expiryTime": {
+          "type": "integer",
+          "description": "If present, it indicates the time of Application Mobility Service expiration from the time of registration accepted.The value \"0\" means infinite time, i.e. no expiration.The unit of expiry time is one second.",
+          "contentEncoding": "int32"
+        },
+        "serviceConsumerId": {
+          "title": "RegistrationInfo.serviceConsumerId",
+          "type": "object",
+          "properties": {
+            "appInstanceId": {
+              "type": "string",
+              "description": "If present, it represents the identifier of the application instance registering the Application Mobility Service."
+            },
+            "mepId": {
+              "type": "string",
+              "description": "If present, it represents the identifier of the MEC platform registering the Application Mobility Service."
+            }
+          },
+          "description": "The identifier of service consumer requesting the application mobility service, i.e. either the application instance ID or the MEC platform ID."
+        }
+      }
+    },
+    "description": "",
+    "contentMediaType": "application/json"
+  }
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json b/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MEC021/SRV/AMS/schemas/NotificationSubscription.schema.json b/MEC021/SRV/AMS/schemas/NotificationSubscription.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..59a81981897520f9fda7cf8cc45f0005e65ca1b5
--- /dev/null
+++ b/MEC021/SRV/AMS/schemas/NotificationSubscription.schema.json
@@ -0,0 +1,248 @@
+{
+    "oneOf": [
+        {
+            "title": "MobilityProcedureSubscription",
+            "required": [
+                "filterCriteria",
+                "subscriptionType"
+            ],
+            "type": "object",
+            "properties": {
+                "_links": {
+                    "title": "MobilityProcedureSubscription.links",
+                    "required": [
+                        "self"
+                    ],
+                    "type": "object",
+                    "properties": {
+                        "self": {
+                            "title": "LinkType",
+                            "required": [
+                                "href"
+                            ],
+                            "type": "object",
+                            "properties": {
+                                "href": {
+                                    "type": "string",
+                                    "description": "The URI referring to the subscription."
+                                }
+                            },
+                            "description": "'This data type represents a type of link'"
+                        }
+                    }
+                },
+                "callbackReference": {
+                    "type": "string",
+                    "format": "uri",
+                    "description": "URI selected by the service consumer to receive notifications on the subscribed Application Mobility Service. This shall be included both in the request and in response."
+                },
+                "requestTestNotification": {
+                    "type": "boolean",
+                    "description": "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, specified in ETSI GS MEC 009, as described in clause 6.12a."
+                },
+                "websockNotifConfig": {
+                    "description": "Provides details to negotiate and signal the use of a Websocket connection between AMS and the service consumer for notifications.",
+                    "type": "object",
+                    "properties": {
+                        "websocketUri": {
+                            "description": "Set by AMS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                            "type": "string",
+                            "format": "uri"
+                        },
+                        "requestWebsocketUri": {
+                            "type": "boolean",
+                            "description": "Set to true by the service consumer to indicate that Websocket delivery is requested."
+                        }
+                    }
+                },
+                "expiryDeadline": {
+                    "description": "Identifies a boundary after which the subscription will expire.",
+                    "title": "TimeStamp",
+                    "required": [
+                        "seconds",
+                        "nanoSeconds"
+                    ],
+                    "type": "object",
+                    "properties": {
+                        "seconds": {
+                            "type": "integer",
+                            "description": "'The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
+                            "contentEncoding": "int32"
+                        },
+                        "nanoSeconds": {
+                            "type": "integer",
+                            "description": "'The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
+                            "contentEncoding": "int32"
+                        }
+                    }
+                },
+                "filterCriteria": {
+                    "title": "MobilityProcedureSubscription.filterCriteria",
+                    "type": "object",
+                    "properties": {
+                        "appInstanceId": {
+                            "type": "string",
+                            "description": "Identifier of the application instance that registers the Application Mobility Service."
+                        },
+                        "associateId": {
+                            "type": "array",
+                            "items": {
+                                "title": "AssociateId",
+                                "required": [
+                                    "type",
+                                    "value"
+                                ],
+                                "type": "object",
+                                "properties": {
+                                    "type": {
+                                        "title": "Type",
+                                        "enum": [
+                                            "UE_IPv4_ADDRESS",
+                                            "UE_IPV6_ADDRESS",
+                                            "NATED_IP_ADDRESS",
+                                            "GTP_TEID"
+                                        ],
+                                        "type": "string",
+                                        "description": "Numeric value (0-255) corresponding to specified type of identifier",
+                                        "examples": [
+                                            "UE_IPv4_ADDRESS"
+                                        ]
+                                    },
+                                    "value": {
+                                        "type": "string",
+                                        "description": "Value for the identifier."
+                                    }
+                                }
+                            },
+                            "description": "0 to N identifiers to associate the information for specific UE(s) and flow(s)."
+                        },
+                        "mobilityStatus": {
+                            "type": "array",
+                            "items": {
+                                "title": "MobilityStatus",
+                                "enum": [
+                                    "INTERHOST_MOVEOUT_TRIGGERED",
+                                    "INTERHOST_MOVEOUT_COMPLETED",
+                                    "INTERHOST_MOVEOUT_FAILED"
+                                ],
+                                "type": "string",
+                                "description": "Indicate the status of the UE mobility",
+                                "examples": [
+                                    "INTERHOST_MOVEOUT_TRIGGERED"
+                                ]
+                            },
+                            "description": "In case mobilityStatus is not included in the subscription request, the default value 1 = INTER_HOST_MOBILITY_TRIGGERED shall be used and included in the response."
+                        }
+                    },
+                    "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response."
+                },
+                "subscriptionType": {
+                    "const": "MobilityProcedureSubscription",
+                    "type": "string",
+                    "description": "Shall be set to \"MobilityProcedureSubscription\".",
+                    "examples": [
+                        "MobilityProcedureSubscription"
+                    ]
+                }
+            }
+        },
+        {
+            "title": "AdjacentAppInfoSubscription",
+            "required": [
+                "callbackReference",
+                "filterCriteria",
+                "subscriptionType"
+            ],
+            "type": "object",
+            "properties": {
+                "_links": {
+                    "title": "AdjacentAppInfoSubscription.links",
+                    "required": [
+                        "self"
+                    ],
+                    "type": "object",
+                    "properties": {
+                        "self": {
+                            "title": "LinkType",
+                            "required": [
+                                "href"
+                            ],
+                            "type": "object",
+                            "properties": {
+                                "href": {
+                                    "type": "string",
+                                    "description": "The URI referring to the subscription."
+                                }
+                            },
+                            "description": "'This data type represents a type of link'"
+                        }
+                    },
+                    "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests."
+                },
+                "callbackReference": {
+                    "type": "string",
+                    "format": "uri",
+                    "description": "URI selected by the service consumer to receive notifications on the subscribed Application Mobility Service. This shall be included both in the request and in response."
+                },
+                "requestTestNotification": {
+                    "type": "boolean",
+                    "description": "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, specified in ETSI GS MEC 009, as described in clause 6.12a."
+                },
+                "websockNotifConfig": {
+                    "type": "object",
+                    "properties": {
+                        "websocketUri": {
+                            "description": "Set by AMS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                            "type": "string",
+                            "format": "uri"
+                        },
+                        "requestWebsocketUri": {
+                            "type": "boolean",
+                            "description": "Set to true by the service consumer to indicate that Websocket delivery is requested."
+                        }
+                    }
+                },
+                "expiryDeadline": {
+                    "description": "Identifies a boundary after which the subscription will expire.",
+                    "title": "TimeStamp",
+                    "required": [
+                        "seconds",
+                        "nanoSeconds"
+                    ],
+                    "type": "object",
+                    "properties": {
+                        "seconds": {
+                            "type": "integer",
+                            "description": "'The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
+                            "contentEncoding": "int32"
+                        },
+                        "nanoSeconds": {
+                            "type": "integer",
+                            "description": "'The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
+                            "contentEncoding": "int32"
+                        }
+                    }
+                },
+                "filterCriteria": {
+                    "title": "AdjacentAppInfoSubscription.filterCriteria",
+                    "type": "object",
+                    "properties": {
+                        "appInstanceId": {
+                            "type": "string"
+                        }
+                    },
+                    "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response."
+                },
+                "subscriptionType": {
+                    "const": "AdjacentAppInfoSubscription",
+                    "type": "string",
+                    "description": "Shall be set to \"AdjacentAppInfoSubscription\".",
+                    "examples": [
+                        "AdjacentAppInfoSubscription"
+                    ]
+                }
+            }
+        }
+    ],
+    "contentMediaType": "application/json"
+}
\ No newline at end of file
diff --git a/MEC021/SRV/AMS/schemas/SubscriptionLinkList.schema.json b/MEC021/SRV/AMS/schemas/SubscriptionLinkList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6c29b446848105849c7b5efa90dfcb15a78c24ef
--- /dev/null
+++ b/MEC021/SRV/AMS/schemas/SubscriptionLinkList.schema.json
@@ -0,0 +1,64 @@
+{
+    "title": "SubscriptionLinkList",
+    "required": [
+        "_links"
+    ],
+    "type": "object",
+    "properties": {
+        "_links": {
+            "description": "Hyperlinks related to the resource.",
+            "title": "SubscriptionLinkList.links",
+            "required": [
+                "self"
+            ],
+            "type": "object",
+            "properties": {
+                "self": {
+                    "description": "URI of this resource.",
+                    "title": "LinkType",
+                    "required": [
+                        "href"
+                    ],
+                    "type": "object",
+                    "properties": {
+                        "href": {
+                            "type": "string",
+                            "description": "The URI referring to the subscription."
+                        }
+                    }
+                },
+                "subscription": {
+                    "type": "array",
+                    "description": "The service consumer’s subscriptions.",
+                    "items": {
+                        "title": "SubscriptionLinkList.subscription",
+                        "required": [
+                            "href",
+                            "subscriptionType"
+                        ],
+                        "type": "object",
+                        "properties": {
+                            "href": {
+                                "type": "string",
+                                "description": "The URI referring to the subscription."
+                            },
+                            "subscriptionType": {
+                                "description": "The Subscription Type",
+                                "title": "subscriptionType",
+                                "enum": [
+                                    0,
+                                    1,
+                                    2
+                                ],
+                                "type": "integer",
+                                "examples": [
+                                    0
+                                ]
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC028/WAI/AP_INFO/WaiApInfo.robot b/MEC028/WAI/AP_INFO/WaiApInfo.robot
index c181ba049bc6b7b1132a84027b45ae1ab8cb1a53..a6a94ab6bf6f36d9a555617231819d526b820baf 100644
--- a/MEC028/WAI/AP_INFO/WaiApInfo.robot
+++ b/MEC028/WAI/AP_INFO/WaiApInfo.robot
@@ -9,13 +9,12 @@ Library     String
 Library     OperatingSystem
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
 
-
 *** Test Cases ***
-TP_MEC_MEC028_SRV_WAI_001_OK
+TC_MEC_MEC028_SRV_WAI_001_OK
     [Documentation] 
     ...  Check that the IUT responds with the list of WLAN Access Point
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/ApInfo
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the access point information
@@ -23,16 +22,16 @@ TP_MEC_MEC028_SRV_WAI_001_OK
     Check HTTP Response Body Json Schema Is   ApInfo
     ## Post condition
     FOR    ${apInfo}    IN    @{response['body']}
-        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${apInfo['apId']['macId']}    ${MAC_ID}    
+        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${apInfo['apId']['bssid']}    ${BSS_ID}    
         Exit For Loop If    ${passed}
     END
     Should Be True    ${passed}
    
-TP_MEC_MEC028_SRV_WAI_002_OK
+TC_MEC_MEC028_SRV_WAI_002_OK
     [Documentation] 
     ...  Check that the IUT responds with the list of WLAN Access Point filtered by the macId provided as query parameter 
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/ApInfo
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the access point information using filters    ${filter} 
@@ -40,17 +39,17 @@ TP_MEC_MEC028_SRV_WAI_002_OK
     Check HTTP Response Body Json Schema Is   ApInfo
     ## Post condition
     FOR    ${apInfo}    IN    @{response['body']}
-        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${apInfo['apId']['macId']}    ${MAC_ID}    
+        ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${apInfo['apId']['bssid']}    ${BSS_ID}    
         Exit For Loop If    ${passed}
     END
     Should Be True    ${passed}
    
 
-TP_MEC_MEC028_SRV_WAI_002_BR
+TC_MEC_MEC028_SRV_WAI_002_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application 
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/ApInfo
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the access point information using filters    ${bad_filter} 
@@ -78,4 +77,7 @@ Retrieve the access point information using filters
     Set Headers    {"Authorization":"${TOKEN}"}
     GET     ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information?filter=${filter}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
+    Set Suite Variable    ${response}    ${output}
+
+
+      
diff --git a/MEC028/WAI/AP_INFO/environment/variables.txt b/MEC028/WAI/AP_INFO/environment/variables.txt
index 0f20b2e2afce7307555bfb94507188687d96807b..c19b668f78e9eae4c6961493f8d16599d6325db6 100644
--- a/MEC028/WAI/AP_INFO/environment/variables.txt
+++ b/MEC028/WAI/AP_INFO/environment/variables.txt
@@ -4,11 +4,16 @@ ${apiName}        wai
 ${apiVersion}     v2
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_PORT}                     8082
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3001
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
  
-${MAC_ID}          macId01
-${filter}                           (eq,apId/macId,macId01)
-${bad_filter}                           (eq,apId/mac,macId01)
\ No newline at end of file
+${BSS_ID}          bssId01
+${filter}                           (eq,bssid,bssId01)
+${bad_filter}                           (eq,bss_id,bssId01)
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+${DEVICE_ID_PLACEHOLDER}    PLACEHOLDER_DEVICEID
diff --git a/MEC028/WAI/AP_INFO/jsons/APInfo.json b/MEC028/WAI/AP_INFO/jsons/APInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json
index 19cc713220070b8093914883827757377fa798fa..854d99f4bf67b4c4544d221ab361696023db8641 100644
--- a/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json
+++ b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json
@@ -248,7 +248,7 @@
         "geolocation": {
           "properties": {
             "altitude": {
-              "description": "The altitude value of location as defined in IETF RFC 6225 [6]",
+              "description": "The altitude value of location as defined in IETF RFC 6225 [6]",
               "format": "uint32",
               "type": "integer",
               "x-etsi-mec-cardinality": "0..1",
@@ -276,7 +276,7 @@
               "x-etsi-mec-origin-type": "Uint8"
             },
             "lat": {
-              "description": "The latitude value of location as defined in IETF RFC 6225 [6]",
+              "description": "The latitude value of location as defined in IETF RFC�6225 [6]",
               "format": "int64",
               "type": "integer",
               "x-etsi-mec-cardinality": "1",
@@ -290,7 +290,7 @@
               "x-etsi-mec-origin-type": "Uint8"
             },
             "long": {
-              "description": "The longitude value of location as defined in IETF RFC 6225 [6]",
+              "description": "The longitude value of location as defined in IETF RFC�6225 [6]",
               "format": "int64",
               "type": "integer",
               "x-etsi-mec-cardinality": "1",
@@ -375,7 +375,7 @@
           "x-etsi-mec-origin-type": "Uint16"
         },
         "channelUtilization": {
-          "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP sensed the medium was busy, as indicated by either the physical or virtual Carrier Sense (CS) mechanism.",
+          "description": "The percentage of time, linearly scaled with 255 representing 100�%, that the AP sensed the medium was busy, as indicated by either the physical or virtual Carrier Sense (CS) mechanism.",
           "format": "uint8",
           "type": "integer",
           "x-etsi-mec-cardinality": "1",
@@ -435,7 +435,7 @@
           "x-etsi-mec-origin-type": "Uint8"
         },
         "spatStreamUnderUtil": {
-          "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP has underutilized spatial domain resources for given busy time of the medium.",
+          "description": "The percentage of time, linearly scaled with 255 representing 100�%, that the AP has underutilized spatial domain resources for given busy time of the medium.",
           "format": "uint8",
           "type": "integer",
           "x-etsi-mec-cardinality": "1",
diff --git a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot
index 187ff91203c19be4db2cb2d499ce0f67524ae160..4bfbfc70d4bdee7b66030262ac46d0e66e392259 100644
--- a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot
+++ b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot
@@ -5,16 +5,21 @@
 Resource    environment/variables.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
+Library     Collections
 Library     String
 Library     OperatingSystem
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
 
 *** Test Cases ***
-TP_MEC_MEC028_SRV_WAI_008_OK
+TC_MEC_MEC028_SRV_WAI_008_OK
     [Documentation] 
     ...  Check that the IUT responds with the list of Subscription"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
+    
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']}  
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve existing subscription information  ${SUB_ID}
@@ -22,25 +27,32 @@ TP_MEC_MEC028_SRV_WAI_008_OK
     Check HTTP Response Body Json Schema Is   AssocStaSubscription
     Should Be Equal As Strings  ${response['body']['subscriptionType']}    ${SUB_TYPE}
     Should Be Equal As Strings  ${response['body']['callbackReference']}    ${CALLBACK_URI}
-    Should Be Equal As Strings  ${response['body']['apId']['macId']}    ${MAC_ID}
+    Should Be Equal As Strings  ${response['body']['apId']['bssid']}    ${BSSID}
+
+    [TearDown]  Remove Subscription Info    ${Location}  
    
-TP_MEC_MEC028_SRV_WAI_008_NF
+
+TC_MEC_MEC028_SRV_WAI_008_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when a request for existing subscription with incorrect parameters is sent"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
+    [Setup]  Remove Subscription Info Using SubId    ${SUB_ID}
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve existing subscription information  ${NOT_EXISTING_SUB_ID}
-    Check HTTP Response Status Code Is    404
- 
+    Check HTTP Response Status Code Is    404 
 
-*** Test Cases ***
-TP_MEC_MEC028_SRV_WAI_009_OK
+
+TC_MEC_MEC028_SRV_WAI_009_OK
     [Documentation] 
     ...  Check that the IUT responds with a Notification Subscription when it is modified"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.2
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Modify existing subscription information  ${SUB_ID}   UpdateAssocStaSubscription.json
@@ -49,31 +61,40 @@ TP_MEC_MEC028_SRV_WAI_009_OK
     Should Be Equal As Strings  ${response['body']['subscriptionType']}    ${SUB_TYPE}
     Should Be Equal As Strings  ${response['body']['callbackReference']}    ${NEW_CALLBACK_URI}
     Should Be Equal As Strings  ${response['body']['apId']['macId']}    ${MAC_ID}
+
+    [TearDown]  Remove Subscription Info    ${Location}  
    
-TP_MEC_MEC028_SRV_WAI_009_BR
+TC_MEC_MEC028_SRV_WAI_009_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid field is set in the subscription modification request"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.2
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Modify existing subscription information  ${SUB_ID}   UpdateAssocStaSubscription_BR.json
+    Modify existing subscription information  ${BAD_REQUEST_SUB_ID}   UpdateAssocStaSubscription_BR.json
     Check HTTP Response Status Code Is    400
 
 
-TP_MEC_MEC028_SRV_WAI_010_OK
+TC_MEC_MEC028_SRV_WAI_010_OK
     [Documentation] 
     ...  Check that the IUT responds with 204 when an existing subscription is correctly deleted"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.5
+    
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription information  ${SUB_ID}
     Check HTTP Response Status Code Is    204  
 
-TP_MEC_MEC028_SRV_WAI_010_NF
+TC_MEC_MEC028_SRV_WAI_010_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when an not existing subscription cannot be deleted"
-    ...	 Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5
+    ...	 Reference "ETSI GS MEC 028 2.3.1, clause 7.6.3.5
+    
+    [Setup]  Remove Subscription Info Using SubId    ${NOT_EXISTING_SUB_ID}
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription information  ${NOT_EXISTING_SUB_ID}
@@ -115,4 +136,37 @@ Remove existing subscription information
     Set Headers    {"Authorization":"${TOKEN}"}
     DELETE     ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
+    Set Suite Variable    ${response}    ${output}
+
+Create New Subscription Info
+    [Arguments]     ${content}   
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    ${file}=    Catenate    SEPARATOR=    jsons/    CreateAssocStaSubscription    .json
+    ${body}=    Get File    ${file}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    ${new_href}=    Set Variable    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}/${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
+    Set To Dictionary    ${json_data["_links"]["self"]}    href=${new_href}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    
+    POST   ${apiRoot}/${apiName}/${apiVersion}/subscriptions   ${modified_json_string}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Remove Subscription Info 
+    [Arguments]     ${delete_url}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    DELETE    ${delete_url}
+
+Remove Subscription Info Using SubId
+    [Arguments]     ${SUB_ID}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+
+    DELETE     ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}/${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
\ No newline at end of file
diff --git a/MEC028/WAI/EXT_SUB/environment/variables.txt b/MEC028/WAI/EXT_SUB/environment/variables.txt
index d7beea87162ae10b50b7270001a5bf1fb1404bec..7bf7a4bbbf0552db5c80009c89f1f86f4191627f 100644
--- a/MEC028/WAI/EXT_SUB/environment/variables.txt
+++ b/MEC028/WAI/EXT_SUB/environment/variables.txt
@@ -4,14 +4,20 @@ ${apiName}        wai
 ${apiVersion}     v2
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_PORT}                     8082
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3001
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
  
 ${SUB_TYPE}          AssocStaSubscription
 ${SUB_ID}          1
 ${NOT_EXISTING_SUB_ID}          99
+${BAD_REQUEST_SUB_ID}          98 
 ${CALLBACK_URI}          http://callback.uri/1
 ${NEW_CALLBACK_URI}          http://new.callback.uri/1
-${MAC_ID}          macId01
\ No newline at end of file
+${MAC_ID}          macId01
+${BSSID}          005C0A0A0A0A
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
\ No newline at end of file
diff --git a/MEC028/WAI/EXT_SUB/jsons/CreateAssocStaSubscription.json b/MEC028/WAI/EXT_SUB/jsons/CreateAssocStaSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..7fed6986ec8cb98f3d750618eae9d2336f8be8b5
--- /dev/null
+++ b/MEC028/WAI/EXT_SUB/jsons/CreateAssocStaSubscription.json
@@ -0,0 +1,23 @@
+{
+  "subscriptionType": "AssocStaSubscription",
+  "callbackReference": "http://meAppClient.example.com/wai/v2/notifications/1",
+  "_links": {
+    "self": {
+      "href": "/wai/v2/subscriptions/sub123"
+    }
+  },
+  "expiryDeadline": {
+    "seconds": 1977836800,
+    "nanoSeconds": 0
+  },
+  "apId": {
+    "bssid": "005C0A0A0A0A",
+    "ssid": [
+      "myNetworkSsid"
+    ],
+    "macId": "macId01",
+    "ipAddress": [
+      "10.10.100.1"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/MEC028/WAI/MEAS/WaiMeasurement.robot b/MEC028/WAI/MEAS/WaiMeasurement.robot
index 0aa1a6ddf95b22ffb21687fcc0972ccd005e5a24..3fe3b74c86d8d924f69aaf74156cd80e3966f69e 100644
--- a/MEC028/WAI/MEAS/WaiMeasurement.robot
+++ b/MEC028/WAI/MEAS/WaiMeasurement.robot
@@ -5,84 +5,95 @@
 Resource    environment/variables.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
+Library     Collections
 Library     String
 Library     OperatingSystem
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
 
 
 *** Test Cases ***
-TP_MEC_MEC028_SRV_WAI_012_OK
+TC_MEC_MEC028_SRV_WAI_012_OK
     [Documentation] 
     ...  Check that the IUT responds with a list of measurement 
     ...  configurations available from the WLAN Access Information Service
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.7.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList
+    [Setup]  Create a new measurement configuration    ${MEAS_ID} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a list of list of measurement configurations
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   MeasurementConfigLinkList
+
+    [TearDown]  Delete a specified measurement configuration    ${MEAS_ID}
     
-TP_MEC_MEC028_SRV_WAI_013_OK
+TC_MEC_MEC028_SRV_WAI_013_OK
     [Documentation] 
     ...  Check that the IUT responds with a new measurement configuration
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.4
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfig
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.7.3.4
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfig
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    ${path}    Catenate    SEPARATOR=      jsons/     MeasurementConfig.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Create a new measurement configuration  ${body}
-    Check HTTP Response Status Code Is    200
+
+    Create a new measurement configuration  ${MEAS_ID}
+    Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is   MeasurementConfigLinkList
     Should Be Equal As Strings  ${response['body']['staIdentity']['staId']}     ${STA_ID}
-    Should Be Equal As Strings  ${response['body']['measurementId']    ${MEAS_ID}
-    Should Be Equal As Strings  ${json_object['measurementInfo']}    ${response['body']['measurementInfo']}
+    Should Be Equal As Strings  ${response['body']['measurementId']}    ${MEAS_ID}
+    Should Be Equal As Strings  ${response['body']['measurementInfo']}    ${response['body']['measurementInfo']}
 
-TP_MEC_MEC028_SRV_WAI_013_BR
+TC_MEC_MEC028_SRV_WAI_013_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid request is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.4
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfig
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.7.3.4
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfig
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    ${path}    Catenate    SEPARATOR=      jsons/     MeasurementConfigError.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Create a new measurement configuration  ${body}
+
+    Create a new measurement configuration from file  MeasurementConfigError
     Check HTTP Response Status Code Is    400   
 
-TP_MEC_MEC028_SRV_WAI_014_OK
+TC_MEC_MEC028_SRV_WAI_014_OK
     [Documentation] 
     ...  Check that the IUT responds with the specified measurement configuration
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.1
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.1
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Create a new measurement configuration    ${MEAS_ID} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    Check HTTP Response Body Json Schema Is   MeasurementConfig
+
     Retrieve a specified measurement configuration   ${MEAS_ID}
+    Check HTTP Response Body Json Schema Is   MeasurementConfig
     Check HTTP Response Status Code Is    200
-    Should Be Equal As Strings  ${response['body']['measurementId']    ${MEAS_ID}
-    
-    
+    Should Be Equal As Strings  ${response['body']['measurementId']}    ${MEAS_ID}
 
-TP_MEC_MEC028_SRV_WAI_014_NF
+    [TearDown]  Delete a specified measurement configuration    ${MEAS_ID}
+   
+TC_MEC_MEC028_SRV_WAI_014_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid request is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.1
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.1
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Delete a specified measurement configuration    ${INVALID_MEASUREMENT_CONFIG_ID}
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a specified measurement configuration   ${INVALID_MEASUREMENT_CONFIG_ID}
     Check HTTP Response Status Code Is    404
-    
+  
 
-TP_MEC_MEC028_SRV_WAI_015_OK
+TC_MEC_MEC028_SRV_WAI_015_OK
     [Documentation] 
     ...  Check that the IUT responds with the modified measurement configuration
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.2
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.2
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Create a new measurement configuration    ${MEAS_ID} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1  
     ${path}    Catenate    SEPARATOR=      jsons/     MeasurementConfigUpdate.json
@@ -91,42 +102,55 @@ TP_MEC_MEC028_SRV_WAI_015_OK
     Update a specified measurement configuration   ${MEAS_ID}   ${body}
     Check HTTP Response Status Code Is    200
     Should Be Equal As Strings  ${response['body']['staIdentity']['staId']}    ${json_object['staIdentity']['staId']}
-    Should Be Equal As Strings  ${response['body']['measurementId']    ${MEAS_ID}
+    Should Be Equal As Strings  ${response['body']['measurementId']}    ${MEAS_ID}
     Should Be Equal As Strings  ${response['body']['measurementInfo']}    ${json_object['measurementInfo']}
 
+    [TearDown]  Delete a specified measurement configuration    ${MEAS_ID}
+
 
 
-TP_MEC_MEC028_SRV_WAI_015_NF
+TC_MEC_MEC028_SRV_WAI_015_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid request is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.2
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.2
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Create a new measurement configuration    ${MEAS_ID} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Update a specified measurement configuration   ${INVALID_MEASUREMENT_CONFIG_ID}   MeasurementConfigUpdate.json
     Check HTTP Response Status Code Is    404
+
+    [TearDown]  Delete a specified measurement configuration    ${MEAS_ID}
     
 
-TP_MEC_MEC028_SRV_WAI_016_OK
+TC_MEC_MEC028_SRV_WAI_016_OK
     [Documentation] 
     ...  Check that the IUT responds with with 204 when requested to delete the specified measurement configuration
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.5
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.5
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Create a new measurement configuration    ${MEAS_ID} 
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Delete a specified measurement configuration   ${MEAS_ID} 
     Check HTTP Response Status Code Is    204
     
 
-TP_MEC_MEC028_SRV_WAI_016_NF
+TC_MEC_MEC028_SRV_WAI_016_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid request is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.5
-    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.8.3.5
+    ...  "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList"
+    
+    [Setup]  Delete a specified measurement configuration    ${INVALID_MEASUREMENT_CONFIG_ID}
+
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Delete a specified measurement configuration   ${INVALID_MEASUREMENT_CONFIG_ID} 
-    Check HTTP Response Status Code Is    204
+    Check HTTP Response Status Code Is    404
     
   
 *** Keywords ***
@@ -136,18 +160,39 @@ Retrieve a list of list of measurement configurations
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    GET     ${apiRoot}/${apiName}/${apiVersion}/queries/measurement
+    GET     ${apiRoot}/${apiName}/${apiVersion}/measurements
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
    
 Create a new measurement configuration
-    [Arguments]   ${body}
+    [Arguments]   ${measurementId}
+    
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${path}    Catenate    SEPARATOR=      jsons/     MeasurementConfig.json
+    ${body}    Get File    ${path}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    Set To Dictionary    ${json_data}    measurementId=${measurementId}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    POST     ${apiRoot}/${apiName}/${apiVersion}/measurements   ${modified_json_string}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Create a new measurement configuration from file
+    [Arguments]   ${filename}
+    
+    Should Be True    ${PIC_MEC_SYSTEM} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    POST     ${apiRoot}/${apiName}/${apiVersion}/queries/measurements   ${body}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${filename}    .json
+    ${body}    Get File    ${path}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    POST     ${apiRoot}/${apiName}/${apiVersion}/measurements   ${json_data}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
@@ -157,9 +202,9 @@ Retrieve a specified measurement configuration
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    GET     ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID}
+    GET     ${apiRoot}/${apiName}/${apiVersion}/measurements/${MEAS_CONF_ID}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
@@ -168,14 +213,13 @@ Update a specified measurement configuration
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    GET     ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID}    ${body}
+    PUT     ${apiRoot}/${apiName}/${apiVersion}/measurements/${MEAS_CONF_ID}    ${content}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
 
-
 Delete a specified measurement configuration
     [Arguments]   ${MEAS_CONF_ID}
     Should Be True    ${PIC_MEC_SYSTEM} == 1
@@ -183,7 +227,7 @@ Delete a specified measurement configuration
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    GET     ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID} 
+    DELETE     ${apiRoot}/${apiName}/${apiVersion}/measurements/${MEAS_CONF_ID} 
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
diff --git a/MEC028/WAI/MEAS/environment/variables.txt b/MEC028/WAI/MEAS/environment/variables.txt
index bb9bd9dd503e35ce794bb8f8e3f39e7f10690e1d..becba2157fa10a0fb7e7f1b437123486e38333d9 100644
--- a/MEC028/WAI/MEAS/environment/variables.txt
+++ b/MEC028/WAI/MEAS/environment/variables.txt
@@ -4,11 +4,11 @@ ${apiName}        wai
 ${apiVersion}     v2
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_PORT}                     8082
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3001
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 
 ${STA_ID}    		123
-${MEAS_ID}    		456
+${MEAS_ID}    		123
 ${INVALID_MEASUREMENT_CONFIG_ID}   999
\ No newline at end of file
diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfig.json b/MEC028/WAI/MEAS/jsons/MeasurementConfig.json
index deb6857866480a2595a843d4f02d4ff012d4e0d6..97d78c999fe8de331be84331f809122d79e77823 100644
--- a/MEC028/WAI/MEAS/jsons/MeasurementConfig.json
+++ b/MEC028/WAI/MEAS/jsons/MeasurementConfig.json
@@ -4,6 +4,9 @@
       "macId": "123"
     }
   ],
+  "staIdentity": {
+    "staId": "123"
+  },
   "measurementId": "123",
   "measurementInfo": {
     "measurementDuration": 10
diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json b/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json
index a2e38f2087768821fda81296927b16e971455c6d..b1cc702235b54ab73176541b477c6b20747e4d93 100644
--- a/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json
+++ b/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json
@@ -1,10 +1,10 @@
 {
-  "StaIdentities": [
+  "statId": [
     {
       "macId": "123"
     }
   ],
-  "measurementId": "123",
+  "measurementId": "321",
   "measurementInfo": {
     "measurementDuration": 10
   },
diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json b/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json
index b758cf4353c89e140b37f8533d9c4e9326d53a3f..176404117515f687207aa975af869d7728ed3e8d 100644
--- a/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json
+++ b/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json
@@ -4,6 +4,9 @@
       "macId": "123"
     }
   ],
+  "staIdentity": {
+    "staId": "123"
+  },
   "measurementId": "123",
   "measurementInfo": {
     "measurementDuration": 50
diff --git a/MEC028/WAI/STA_INFO/WaiStaInfo.robot b/MEC028/WAI/STA_INFO/WaiStaInfo.robot
index 7cc7b4e0789b8f2069e8d90227eb030d2959aa30..9fa2c31bd59a342748a16f6b75809d6fad51dd4f 100644
--- a/MEC028/WAI/STA_INFO/WaiStaInfo.robot
+++ b/MEC028/WAI/STA_INFO/WaiStaInfo.robot
@@ -14,8 +14,8 @@ Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_v
 TP_MEC_MEC028_SRV_WAI_003_OK
     [Documentation] 
     ...  Check that the IUT responds with the list of Station Point
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schema/StaInfo 
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the station information
@@ -31,8 +31,8 @@ TP_MEC_MEC028_SRV_WAI_003_OK
 TP_MEC_MEC028_SRV_WAI_004_OK
     [Documentation] 
     ...  Check that the IUT responds with the list of Station Point filtered by the macId provided as query parameter 
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schema/StaInfo 
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the station information using filters    ${filter} 
@@ -49,8 +49,8 @@ TP_MEC_MEC028_SRV_WAI_004_OK
 TP_MEC_MEC028_SRV_WAI_004_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 028 2.2.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo  #Outdated
+    ...  ETSI GS MEC 028 2.3.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schema/StaInfo
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the station information using filters    ${bad_filter} 
diff --git a/MEC028/WAI/STA_INFO/environment/variables.txt b/MEC028/WAI/STA_INFO/environment/variables.txt
index 79e2b50d7252eb9ea39b85c71ac9375dd5d0288b..042ce8f7ad34afda3bd7f7faba05256dbb20bb3c 100644
--- a/MEC028/WAI/STA_INFO/environment/variables.txt
+++ b/MEC028/WAI/STA_INFO/environment/variables.txt
@@ -4,8 +4,8 @@ ${apiName}        wai
 ${apiVersion}     v2
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_PORT}                     8082
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3001
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
  
diff --git a/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json
index e14c086be788bc09d04dec116e920963de1ec3f6..5581cbf590492f59183b3f933f6fb899f0d38375 100644
--- a/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json
+++ b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json
@@ -1,38 +1,38 @@
-{
-  "properties": {
-    "detail": {
-      "description": "A human-readable explanation specific to this occurrence of the problem",
-      "type": "string",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "String"
+  {
+    "properties": {
+      "detail": {
+        "description": "A human-readable explanation specific to this occurrence of the problem",
+        "type": "string",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "String"
+      },
+      "instance": {
+        "description": "A URI reference that identifies the specific occurrence of the problem",
+        "format": "uri",
+        "type": "string",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "URI"
+      },
+      "status": {
+        "description": "The HTTP status code for this occurrence of the problem",
+        "format": "uint32",
+        "type": "integer",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "Uint32"
+      },
+      "title": {
+        "description": "A short, human-readable summary of the problem type",
+        "type": "string",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "String"
+      },
+      "type": {
+        "description": "A URI reference according to IETF RFC 3986 that identifies the problem type",
+        "format": "uri",
+        "type": "string",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "URI"
+      }
     },
-    "instance": {
-      "description": "A URI reference that identifies the specific occurrence of the problem",
-      "format": "uri",
-      "type": "string",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "URI"
-    },
-    "status": {
-      "description": "The HTTP status code for this occurrence of the problem",
-      "format": "uint32",
-      "type": "integer",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "Uint32"
-    },
-    "title": {
-      "description": "A short, human-readable summary of the problem type",
-      "type": "string",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "String"
-    },
-    "type": {
-      "description": "A URI reference according to IETF RFC 3986 that identifies the problem type",
-      "format": "uri",
-      "type": "string",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "URI"
-    }
-  },
-  "type": "object"
-}
\ No newline at end of file
+    "type": "object"
+  }
\ No newline at end of file
diff --git a/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json
index cc1136cf40ab0943b114356954d889dedd330f53..52449df0c55239561f672dc88d6570a1837754bd 100644
--- a/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json
+++ b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json
@@ -1,789 +1,789 @@
 {
-"items":{
-  "properties": {
-    "apAssociated": {
-      "properties": {
-        "assocId": {
-          "description": "Unique number which identifies a particular association between the station and Access Point.",
-          "type": "string",
-          "x-etsi-mec-cardinality": "0..1",
-          "x-etsi-mec-origin-type": "string"
-        },
-        "ipAddress": {
-          "description": "IPv4 or IPv6 address allocated for the Access Point.",
-          "items": {
-            "type": "string"
+  "items": {
+    "properties": {
+      "apAssociated": {
+        "properties": {
+          "assocId": {
+            "description": "Unique number which identifies a particular association between the station and Access Point.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "string"
           },
-          "minItems": 0,
-          "type": "array",
-          "x-etsi-mec-cardinality": "0..N",
-          "x-etsi-mec-origin-type": "string"
-        },
-        "macId": {
-          "description": "Unique identifier assigned to the Access Point (as network interface controller) for communications at the data link layer of a network segment.",
-          "type": "string",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "string"
-        },
-        "ssid": {
-          "description": "Service Set Identifier to identify logical networks.",
-          "items": {
-            "type": "string"
+          "ipAddress": {
+            "description": "IPv4 or IPv6 address allocated for the Access Point.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "string"
           },
-          "minItems": 0,
-          "type": "array",
-          "x-etsi-mec-cardinality": "0..N",
-          "x-etsi-mec-origin-type": "String"
-        }
-      },
-      "required": [
-        "macId"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.12"
-    },
-    "beaconReport": {
-      "properties": {
-        "bssId": {
-          "description": "The BSSID field indicates the BSSID of the BSS(s) for which a beacon report has been received.",
-          "items": {
-            "type": "string"
+          "macId": {
+            "description": "Unique identifier assigned to the Access Point (as network interface controller) for communications at the data link layer of a network segment.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "string"
           },
-          "minItems": 1,
-          "type": "array",
-          "x-etsi-mec-cardinality": "1..N",
-          "x-etsi-mec-origin-type": "String"
-        },
-        "channelId": {
-          "description": "Channel number where the beacon was received.",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "Integer"
-        },
-        "measurementId": {
-          "description": "Measurement ID of the Measurement configuration applied to this Beacon Report.",
-          "type": "string",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "String"
+          "ssid": {
+            "description": "Service Set Identifier to identify logical networks.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "String"
+          }
         },
-        "reportingCondition": {
-          "description": "As in table T9-89 of IEEE 802.11-2012 [8].",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "Integer"
-        },
-        "ssId": {
-          "description": "(Optional) The SSID subelement indicates the ESS(s) or IBSS(s) for which a beacon report is received.",
-          "items": {
-            "type": "string"
+        "required": [
+          "macId"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.12"
+      },
+      "beaconReport": {
+        "properties": {
+          "bssId": {
+            "description": "The BSSID field indicates the BSSID of the BSS(s) for which a beacon report has been received.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 1,
+            "type": "array",
+            "x-etsi-mec-cardinality": "1..N",
+            "x-etsi-mec-origin-type": "String"
           },
-          "minItems": 1,
-          "type": "array",
-          "x-etsi-mec-cardinality": "1..N",
-          "x-etsi-mec-origin-type": "String"
-        },
-        "staId": {
-          "properties": {
-            "aid": {
-              "description": "Number which identifies a particular association between a station and an Access Point ",
-              "type": "string",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "ipAddress": {
-              "description": "IPv4 or IPv6 address allocated for the station.",
-              "items": {
-                "type": "string"
-              },
-              "minItems": 0,
-              "type": "array",
-              "x-etsi-mec-cardinality": "0..N",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "macId": {
-              "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
-              "type": "string",
-              "x-etsi-mec-cardinality": "1",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "ssid": {
-              "description": "Service Set Identifier to identify logical networks.",
-              "items": {
-                "type": "string"
-              },
-              "minItems": 0,
-              "type": "array",
-              "x-etsi-mec-cardinality": "0..N",
-              "x-etsi-mec-origin-type": "String"
-            }
+          "channelId": {
+            "description": "Channel number where the beacon was received.",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Integer"
           },
-          "required": [
-            "macId"
-          ],
-          "type": "object",
-          "x-etsi-ref": "6.5.11"
-        }
-      },
-      "required": [
-        "staId",
-        "measurementId",
-        "channelId",
-        "bssId",
-        "ssId",
-        "reportingCondition"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.27"
-    },
-    "channel": {
-      "description": "Channel currently used by the station.",
-      "format": "uint32",
-      "type": "integer",
-      "x-etsi-mec-cardinality": "0..1",
-      "x-etsi-mec-origin-type": "Uint32"
-    },
-    "rssi": {
-      "properties": {
-        "rssi": {
-          "description": "The Received Signal Strength Indicator from a station",
-          "format": "uint8",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "Uint8"
-        }
-      },
-      "required": [
-        "rssi"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.21"
-    },
-    "staDataRate": {
-      "properties": {
-        "staId": {
-          "properties": {
-            "aid": {
-              "description": "Number which identifies a particular association between a station and an Access Point ",
-              "type": "string",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "ipAddress": {
-              "description": "IPv4 or IPv6 address allocated for the station.",
-              "items": {
-                "type": "string"
-              },
-              "minItems": 0,
-              "type": "array",
-              "x-etsi-mec-cardinality": "0..N",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "macId": {
-              "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
-              "type": "string",
-              "x-etsi-mec-cardinality": "1",
-              "x-etsi-mec-origin-type": "String"
-            },
-            "ssid": {
-              "description": "Service Set Identifier to identify logical networks.",
-              "items": {
-                "type": "string"
-              },
-              "minItems": 0,
-              "type": "array",
-              "x-etsi-mec-cardinality": "0..N",
-              "x-etsi-mec-origin-type": "String"
-            }
+          "measurementId": {
+            "description": "Measurement ID of the Measurement configuration applied to this Beacon Report.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
           },
-          "required": [
-            "macId"
-          ],
-          "type": "object",
-          "x-etsi-ref": "6.5.11"
-        },
-        "staLastDataDownlinkRate": {
-          "description": "The data transmit rate in kbps that was most recently used for transmission of data PPDUs from the access point to the station.",
-          "format": "uint32",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "0..1",
-          "x-etsi-mec-origin-type": "Uint32"
+          "reportingCondition": {
+            "description": "As in table T9-89 of IEEE 802.11-2012 [8].",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Integer"
+          },
+          "ssId": {
+            "description": "(Optional) The SSID subelement indicates the ESS(s) or IBSS(s) for which a beacon report is received.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 1,
+            "type": "array",
+            "x-etsi-mec-cardinality": "1..N",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "staId": {
+            "properties": {
+              "aid": {
+                "description": "Number which identifies a particular association between a station and an Access Point ",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ipAddress": {
+                "description": "IPv4 or IPv6 address allocated for the station.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "macId": {
+                "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ssid": {
+                "description": "Service Set Identifier to identify logical networks.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "required": [
+              "macId"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.11"
+          }
         },
-        "staLastDataUplinkRate": {
-          "description": "The data transmit rate in Kbps that was most recently used for transmission of data PPDUs from the associated station to the access point.",
-          "format": "uint32",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "0..1",
-          "x-etsi-mec-origin-type": "Uint32"
-        }
+        "required": [
+          "staId",
+          "measurementId",
+          "channelId",
+          "bssId",
+          "ssId",
+          "reportingCondition"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.27"
       },
-      "type": "object",
-      "x-etsi-ref": "6.5.22"
-    },
-    "staId": {
-      "properties": {
-        "aid": {
-          "description": "Number which identifies a particular association between a station and an Access Point ",
-          "type": "string",
-          "x-etsi-mec-cardinality": "0..1",
-          "x-etsi-mec-origin-type": "String"
+      "channel": {
+        "description": "Channel currently used by the station.",
+        "format": "uint32",
+        "type": "integer",
+        "x-etsi-mec-cardinality": "0..1",
+        "x-etsi-mec-origin-type": "Uint32"
+      },
+      "rssi": {
+        "properties": {
+          "rssi": {
+            "description": "The Received Signal Strength Indicator from a station",
+            "format": "uint8",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uint8"
+          }
         },
-        "ipAddress": {
-          "description": "IPv4 or IPv6 address allocated for the station.",
-          "items": {
-            "type": "string"
+        "required": [
+          "rssi"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.21"
+      },
+      "staDataRate": {
+        "properties": {
+          "staId": {
+            "properties": {
+              "aid": {
+                "description": "Number which identifies a particular association between a station and an Access Point ",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ipAddress": {
+                "description": "IPv4 or IPv6 address allocated for the station.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "macId": {
+                "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
+                "type": "string",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "ssid": {
+                "description": "Service Set Identifier to identify logical networks.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 0,
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "required": [
+              "macId"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.11"
           },
-          "minItems": 0,
-          "type": "array",
-          "x-etsi-mec-cardinality": "0..N",
-          "x-etsi-mec-origin-type": "String"
-        },
-        "macId": {
-          "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
-          "type": "string",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "String"
-        },
-        "ssid": {
-          "description": "Service Set Identifier to identify logical networks.",
-          "items": {
-            "type": "string"
+          "staLastDataDownlinkRate": {
+            "description": "The data transmit rate in kbps that was most recently used for transmission of data PPDUs from the access point to the station.",
+            "format": "uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uint32"
           },
-          "minItems": 0,
-          "type": "array",
-          "x-etsi-mec-cardinality": "0..N",
-          "x-etsi-mec-origin-type": "String"
-        }
-      },
-      "required": [
-        "macId"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.11"
-    },
-    "staStatistics": {
-      "properties": {
-        "groupIdentity": {
-          "description": "Indicates the requested statistics group describing the Statistics Group Data according to table 9-114 of IEEE 802.11-2016 [8].",
-          "format": "uint8",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "UInt8"
-        },
-        "md": {
-          "description": "Measurement Duration.",
-          "format": "uint16",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "UInt16"
+          "staLastDataUplinkRate": {
+            "description": "The data transmit rate in Kbps that was most recently used for transmission of data PPDUs from the associated station to the access point.",
+            "format": "uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Uint32"
+          }
         },
-        "statisticsGroupData": {
-          "description": "Statistics Group Data as defined in Annex C of IEEE 802.112016 [8].",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "not specified",
-          "properties": {
-            "dot11AMPDUDelimiterCRCErrorCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11AMPDUReceivedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11AMSDUAckFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11AckFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11BeamformingFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ChannelWidthSwitchCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11DualCTSFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11DualCTSSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ExplicitBARFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FCSErrorCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FailedAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FailedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FortyMHzFrameReceivedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FortyMHzFrameTransmittedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11FrameDuplicateCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11GrantedRDGUnusedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11GrantedRDGUsedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11GroupReceivedFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11GroupTransmittedFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ImplicitBARFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11MPDUInReceivedAMPDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11MultipleRetryAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11MultipleRetryCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11PSMPUTTGrantDuration": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11PSMPUTTUsedDuration": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosAckFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosDiscardedFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosFailedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosFrameDuplicateCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosMPDUsReceivedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosMultipleRetryCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosRTSFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosRTSSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosReceivedFragmentCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosRetriesReceivedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosRetryCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosTransmittedFragmentCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11QosTransmittedFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsBIPMICErrors": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsCCMPDecryptErrors": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsCCMPReplays": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsCMACReplays": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsRobustMgmtCCMPReplays": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsTKIPICVErrors": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RSNAStatsTKIPReplays": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RTSFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RTSLSIGFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RTSLSIGSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RTSSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ReceivedAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ReceivedFragmentCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11ReceivedOctetsInAMPDUCount": {
-              "format": "int64",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint64"
-            },
-            "dot11ReceivedOctetsInAMSDUCount": {
-              "format": "int64",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint64"
-            },
-            "dot11RetryAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11RetryCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11STAStatisticsAPAverageAccessDelay": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsAverageAccessDelayBackGround": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsAverageAccessDelayBestEffort": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsAverageAccessDelayVideo": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsAverageAccessDelayVoice": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsChannelUtilization": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STAStatisticsStationCount": {
-              "format": "uint8",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint8"
-            },
-            "dot11STBCCTSFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11STBCCTSSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedAMPDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedFragmentCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedFrameCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedFramesInGrantedRDGCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedMPDUsInAMPDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedOctetsInAMPDUCount": {
-              "format": "int64",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint64"
-            },
-            "dot11TransmittedOctetsInAMSDUCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TransmittedOctetsInGrantedRDGCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TwentyMHzFrameReceivedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11TwentyMHzFrameTransmittedCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11nonSTBCCTSFailureCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            },
-            "dot11nonSTBCCTSSuccessCount": {
-              "format": "uint32",
-              "type": "integer",
-              "x-etsi-mec-cardinality": "0..1",
-              "x-etsi-mec-origin-type": "Uint32"
-            }
+        "type": "object",
+        "x-etsi-ref": "6.5.22"
+      },
+      "staId": {
+        "properties": {
+          "aid": {
+            "description": "Number which identifies a particular association between a station and an Access Point ",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "ipAddress": {
+            "description": "IPv4 or IPv6 address allocated for the station.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "String"
           },
-          "type": "object"
-        }
+          "macId": {
+            "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "ssid": {
+            "description": "Service Set Identifier to identify logical networks.",
+            "items": {
+              "type": "string"
+            },
+            "minItems": 0,
+            "type": "array",
+            "x-etsi-mec-cardinality": "0..N",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "macId"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.11"
       },
-      "required": [
-        "md",
-        "groupIdentity",
-        "statisticsGroupData"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.13"
-    },
-    "timeStamp": {
-      "properties": {
-        "nanoSeconds": {
-          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-          "format": "uint32",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "Uint32"
+      "staStatistics": {
+        "properties": {
+          "groupIdentity": {
+            "description": "Indicates the requested statistics group describing the Statistics Group Data according to table 9-114 of IEEE 802.11-2016 [8].",
+            "format": "uint8",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "UInt8"
+          },
+          "md": {
+            "description": "Measurement Duration.",
+            "format": "uint16",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "UInt16"
+          },
+          "statisticsGroupData": {
+            "description": "Statistics Group Data as defined in Annex C of IEEE 802.112016�[8].",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "not specified",
+            "properties": {
+              "dot11AMPDUDelimiterCRCErrorCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11AMPDUReceivedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11AMSDUAckFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11AckFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11BeamformingFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ChannelWidthSwitchCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11DualCTSFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11DualCTSSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ExplicitBARFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FCSErrorCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FailedAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FailedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FortyMHzFrameReceivedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FortyMHzFrameTransmittedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11FrameDuplicateCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11GrantedRDGUnusedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11GrantedRDGUsedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11GroupReceivedFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11GroupTransmittedFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ImplicitBARFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11MPDUInReceivedAMPDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11MultipleRetryAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11MultipleRetryCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11PSMPUTTGrantDuration": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11PSMPUTTUsedDuration": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosAckFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosDiscardedFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosFailedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosFrameDuplicateCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosMPDUsReceivedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosMultipleRetryCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosRTSFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosRTSSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosReceivedFragmentCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosRetriesReceivedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosRetryCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosTransmittedFragmentCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11QosTransmittedFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsBIPMICErrors": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsCCMPDecryptErrors": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsCCMPReplays": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsCMACReplays": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsRobustMgmtCCMPReplays": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsTKIPICVErrors": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RSNAStatsTKIPReplays": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RTSFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RTSLSIGFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RTSLSIGSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RTSSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ReceivedAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ReceivedFragmentCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11ReceivedOctetsInAMPDUCount": {
+                "format": "int64",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint64"
+              },
+              "dot11ReceivedOctetsInAMSDUCount": {
+                "format": "int64",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint64"
+              },
+              "dot11RetryAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11RetryCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11STAStatisticsAPAverageAccessDelay": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsAverageAccessDelayBackGround": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsAverageAccessDelayBestEffort": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsAverageAccessDelayVideo": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsAverageAccessDelayVoice": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsChannelUtilization": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STAStatisticsStationCount": {
+                "format": "uint8",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint8"
+              },
+              "dot11STBCCTSFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11STBCCTSSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedAMPDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedFragmentCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedFrameCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedFramesInGrantedRDGCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedMPDUsInAMPDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedOctetsInAMPDUCount": {
+                "format": "int64",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint64"
+              },
+              "dot11TransmittedOctetsInAMSDUCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TransmittedOctetsInGrantedRDGCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TwentyMHzFrameReceivedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11TwentyMHzFrameTransmittedCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11nonSTBCCTSFailureCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "dot11nonSTBCCTSSuccessCount": {
+                "format": "uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "type": "object"
+          }
         },
-        "seconds": {
-          "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
-          "format": "uint32",
-          "type": "integer",
-          "x-etsi-mec-cardinality": "1",
-          "x-etsi-mec-origin-type": "Uint32"
-        }
+        "required": [
+          "md",
+          "groupIdentity",
+          "statisticsGroupData"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.13"
       },
-      "required": [
-        "seconds",
-        "nanoSeconds"
-      ],
-      "type": "object",
-      "x-etsi-ref": "6.5.2"
-    }
-  },
-  "required": [
-    "staId"
-  ],
-  "type": "object",
-  "x-etsi-ref": "6.2.3"
-	}
+      "timeStamp": {
+        "properties": {
+          "nanoSeconds": {
+            "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+            "format": "uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uint32"
+          },
+          "seconds": {
+            "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+            "format": "uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uint32"
+          }
+        },
+        "required": [
+          "seconds",
+          "nanoSeconds"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.2"
+      }
+    },
+    "required": [
+      "staId"
+    ],
+    "type": "object",
+    "x-etsi-ref": "6.2.3"
+  }
 }
\ No newline at end of file
diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot
index 1db1a1d1c56e2c6aabf48467a8871abb3d8cacb9..294d297c6a489ffc0b88eb89411c424889b96132 100644
--- a/MEC028/WAI/SUB/WaiSubscription.robot
+++ b/MEC028/WAI/SUB/WaiSubscription.robot
@@ -5,6 +5,7 @@
 Resource    environment/variables.txt
 Resource    ../../../pics.txt
 Resource    ../../../GenericKeywords.robot
+Library     Collections
 Library     String
 Library     OperatingSystem
 Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_verify=false
@@ -13,24 +14,32 @@ Library     REST    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}    ssl_v
 TP_MEC_MEC028_SRV_WAI_005_OK
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
+    
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']}  
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the subscription information    ${SUB_FILTER}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   SubscriptionLinkList
-    FOR    ${assocStaSub}    IN    @{response['body']['assocStaSubscription']}
+    FOR    ${assocStaSub}    IN    @{response['body']}
         ${passed}    Run Keyword And Return Status    Should Be Equal As Strings  ${assocStaSub['_links']['self']['href']}    ${HREF}    
         Exit For Loop If    ${passed}
     END
 
+    [TearDown]  Remove Subscription Info    ${Location}
+
 TP_MEC_MEC028_SRV_WAI_006_OK
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
+    
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']}  
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -38,31 +47,38 @@ TP_MEC_MEC028_SRV_WAI_006_OK
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   SubscriptionLinkList
     Should Be Equal As Strings  ${response['body']['_links']['self']['href']}    ${HREF}
+
+    [TearDown]  Remove Subscription Info    ${Location}
         
 TP_MEC_MEC028_SRV_WAI_006_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription
+
+    [Setup]  Create New Subscription Info    ${SUB_ID}
+    Set Suite Variable    ${Location}    ${response['headers']['Location']} 
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve the subscription information    ${INVALID_SUB_FILTER}
     Check HTTP Response Status Code Is    400
+
+    [TearDown]  Remove Subscription Info    ${Location}
   
 TP_MEC_MEC028_SRV_WAI_006_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when	a request with not existing parameters is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
     Retrieve the subscription information using wrong endpoint
     Check HTTP Response Status Code Is    404   
     
 TP_MEC_MEC028_SRV_WAI_007_OK
     [Documentation] 
     ...  Check that the IUT responds with a Notification Subscription
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.4
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.4
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription 
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Send a request for creating a subscription  AssocStaSubscription.json
@@ -75,8 +91,8 @@ TP_MEC_MEC028_SRV_WAI_007_OK
 TP_MEC_MEC028_SRV_WAI_007_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when an invalid Subscription request is sent
-    ...  ETSI GS MEC 028 2.2.1, clause 7.5.3.4
-    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated
+    ...  ETSI GS MEC 028 2.3.1, clause 7.5.3.4
+    ...  https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.3.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Send a request for creating a subscription  AssocStaSubscription_BR.json
@@ -85,7 +101,7 @@ TP_MEC_MEC028_SRV_WAI_007_BR
 TP_MEC_MEC028_SRV_WAI_007_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with not existing parameters is sent
-    ...  Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1
+    ...  Reference "ETSI GS MEC 028 2.3.1, clause 7.5.3.1
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Send a request for creating a subscription using wrong endpoint  AssocStaSubscription.json
@@ -96,7 +112,7 @@ TP_MEC_MEC028_SRV_WAI_007_NF
 Send a request for creating a subscription    
     [Arguments]    ${content}
     Log    Creating a new subscription
-    #Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     ${path}    Catenate    SEPARATOR=      jsons/     ${content}
@@ -109,7 +125,7 @@ Send a request for creating a subscription
 Send a request for creating a subscription using wrong endpoint  
     [Arguments]    ${content}
     Log    Creating a new subscription
-    #Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     ${path}    Catenate    SEPARATOR=      jsons/     ${content}
@@ -122,7 +138,7 @@ Retrieve the subscription information
     [Arguments]    ${subscription_type}
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    #Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
     GET     ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type}
@@ -137,4 +153,29 @@ Retrieve the subscription information using wrong endpoint
     Set Headers    {"Authorization":"${TOKEN}"}
     GET     ${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
\ No newline at end of file
+    Set Suite Variable    ${response}    ${output}
+
+Create New Subscription Info
+    [Arguments]     ${content}   
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    ${file}=    Catenate    SEPARATOR=    jsons/    CreateAssocStaSubscription    .json
+    ${body}=    Get File    ${file}
+    ${json_data}=    Evaluate    json.loads('''${body}''')    json
+    ${new_href}=    Set Variable    ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}/${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
+    Set To Dictionary    ${json_data["_links"]["self"]}    href=${new_href}
+    ${modified_json_string}=    Evaluate    json.dumps(${json_data})
+    
+    POST   ${apiRoot}/${apiName}/${apiVersion}/subscriptions   ${modified_json_string}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Remove Subscription Info 
+    [Arguments]     ${delete_url}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    DELETE    ${delete_url}
\ No newline at end of file
diff --git a/MEC028/WAI/SUB/environment/variables.txt b/MEC028/WAI/SUB/environment/variables.txt
index 0a66f360896900ae0697e4be24a673400c6d1f57..963ae9f4054dbe730c9c973913599dd0dd4377e0 100644
--- a/MEC028/WAI/SUB/environment/variables.txt
+++ b/MEC028/WAI/SUB/environment/variables.txt
@@ -4,8 +4,8 @@ ${apiName}        wai
 ${apiVersion}     v2
 
 ${MEC-APP_SCHEMA}                   http
-${MEC-APP_HOST}                     127.0.0.1
-${MEC-APP_PORT}                     8082
+${MEC-APP_HOST}                     mockoon
+${MEC-APP_PORT}                     3001
 
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
  
@@ -14,5 +14,6 @@ ${SUB_TYPE}          AssocStaSubscription
 ${SUB_FILTER}          assoc_sta
 ${INVALID_SUB_FILTER}          assocStaSub
 
+${SUB_ID}        123
 ${HREF}          /wai/v2/subscriptions/1
 ${CALLBACK_URI}          http://callback.uri/1
\ No newline at end of file
diff --git a/MEC028/WAI/SUB/jsons/AssocStaSubscription.json b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json
index 152ca49c96f3898d8412086b50a959d63ed18ec7..db4d57109f3158c8e2e2996955d368fc05f3a14d 100644
--- a/MEC028/WAI/SUB/jsons/AssocStaSubscription.json
+++ b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json
@@ -1,7 +1,19 @@
 {
+	"_links": {
+	  "self": {
+		"href": "/wai/v2/subscriptions/1"
+	  }
+	},
 	"apId": {
-		"macId": "macId01"
+	  "ipAddress": ["192.168.1.1", "2001:db8::1"],
+	  "macId": "00:1A:2B:3C:4D:5E",
+	  "ssid": ["Network1", "Network2"]
+	},
+	"callbackReference": "http://example.com/callback",
+	"expiryDeadline": {
+	  "nanoSeconds": 500000000,
+	  "seconds": 1641234567
 	},
-	"callbackReference": "http://callback.uri/1",
 	"subscriptionType": "AssocStaSubscription"
-}
\ No newline at end of file
+  }
+  
\ No newline at end of file
diff --git a/MEC028/WAI/SUB/jsons/CreateAssocStaSubscription.json b/MEC028/WAI/SUB/jsons/CreateAssocStaSubscription.json
new file mode 100644
index 0000000000000000000000000000000000000000..3e04ff82fe9ea239a084649ffbe6967bfffaee21
--- /dev/null
+++ b/MEC028/WAI/SUB/jsons/CreateAssocStaSubscription.json
@@ -0,0 +1,23 @@
+{
+  "subscriptionType": "AssocStaSubscription",
+  "callbackReference": "http://meAppClient.example.com/wai/v2/notifications/1",
+  "_links": {
+    "self": {
+      "href": "http://meAppServer.example.com/wai/v2/subscriptions/sub123"
+    }
+  },
+  "expiryDeadline": {
+    "seconds": 1977836800,
+    "nanoSeconds": 0
+  },
+  "apId": {
+    "bssid": "005C0A0A0A0A",
+    "ssid": [
+      "myNetworkSsid"
+    ],
+    "macId": "macId01",
+    "ipAddress": [
+      "10.10.100.1"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot
index aa2b87a66378ac8ce6fa0c3837ba64a7daf1e951..68ff0575430fd1ae78ae8189fb7f90f91e964cf2 100644
--- a/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot
+++ b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot
@@ -21,7 +21,7 @@ TC_MEC_MEC029_SRV_FAIS_001_OK
     ...    Check that the IUT responds with the current status of the fixed access information
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.3.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get fixed access information details
@@ -34,7 +34,7 @@ TC_MEC_MEC029_SRV_FAIS_001_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.3.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get fixed access information details using query prameters    interface    ${INTERFACE_ID}
@@ -46,7 +46,7 @@ TC_MEC_MEC029_SRV_FAIS_001_NF
     ...    Check that the IUT responds with an error when
     ...    a request for non-existing data is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.3.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get fixed access information details using query prameters    interfaceType    ${NON_EXISTENT_INTERFACE_ID}
@@ -58,7 +58,7 @@ TC_MEC_MEC029_SRV_FAIS_002_OK
     ...    Check that the IUT responds with the current status of the device information
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.4.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of device information
@@ -71,7 +71,7 @@ TC_MEC_MEC029_SRV_FAIS_002_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.4.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of device information using query prameters    device    ${DEVICE_ID}
@@ -83,7 +83,7 @@ TC_MEC_MEC029_SRV_FAIS_002_NF
     ...    Check that the IUT responds with an error when
     ...    a request for non-existing data is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.4.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of device information using query prameters    deviceId    ${NON_EXISTENT_DEVICE_ID}
@@ -95,7 +95,7 @@ TC_MEC_MEC029_SRV_FAIS_003_OK
     ...    Check that the IUT responds with the current status of the cable line information
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the cable line information
@@ -108,7 +108,7 @@ TC_MEC_MEC029_SRV_FAIS_003_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the cable line information using query parameters    cm    ${CABLE_MODEM_ID}
@@ -120,7 +120,7 @@ TC_MEC_MEC029_SRV_FAIS_003_NF
     ...    Check that the IUT responds with an error when
     ...    a request for non-existing data is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the cable line information using query parameters    cmId    ${NON_EXISTING_FAI_CM_ID}
@@ -132,7 +132,7 @@ TC_MEC_MEC029_SRV_FAIS_004_OK
     ...    Check that the IUT responds with the current status of the optical network information
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.6.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the opentical network information
@@ -145,7 +145,7 @@ TC_MEC_MEC029_SRV_FAIS_004_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.6.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the opentical network information using query parameters    onu    ${ONU_ID}
@@ -157,7 +157,7 @@ TC_MEC_MEC029_SRV_FAIS_004_NF
     ...    Check that the IUT responds with an error when
     ...    a request for non-existing data is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.6.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get status of the opentical network information using query parameters    onuId    ${NON_EXISTING_FAI_ONU_ID}
@@ -169,20 +169,26 @@ TC_MEC_MEC029_SRV_FAIS_005_OK
     ...    Check that the IUT responds with the subscriptions for fixed access information notifications
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+
+    [Setup]    Create a new subscription    OnuAlarmSubscription
+    Set Suite Variable    ${subscriptionUrl}    ${response['body']['_links']['self']['href']}  
+
     Get list of subscriptions
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    SubscriptionLinkList
 
+    [Teardown]    Remove subscription using url    ${subscriptionUrl}    
+
 
 TC_MEC_MEC029_SRV_FAIS_005_BR
     [Documentation]
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get list of subscriptions using query parameters    subscription    ${SUBSCRIPTION_TYPE}
@@ -194,9 +200,10 @@ TC_MEC_MEC029_SRV_FAIS_005_NF
     ...    Check that the IUT responds with an error when
     ...    a request for non-existing data is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+
     Get list of subscriptions using query parameters    subscriptionType    ${NON_EXISTENT_SUBSCRIPTION_TYPE}
     Check HTTP Response Status Code Is    404
 
@@ -206,14 +213,13 @@ TC_MEC_MEC029_SRV_FAIS_006_OK
     ...    Check that the IUT acknowledges the subscription by a MEC Application
     ...    to notifications on Optical Network Unit alarm events
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.4
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Create a new subscription    OnuAlarmSubscription
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    OnuAlarmSubscription
-    Check Result Contains    ${response['body']['OnuAlarmSubscription']}    subscriptionType    OnuAlarmSubscription
-
+    Should Be Equal As Strings  ${response['body']['subscriptionType']}    OnuAlarmSubscription
 
 
 TC_MEC_MEC029_SRV_FAIS_006_BR
@@ -221,7 +227,7 @@ TC_MEC_MEC029_SRV_FAIS_006_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.4
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Create a new subscription    OnuAlarmSubscriptionError
@@ -233,13 +239,19 @@ TC_MEC_MEC029_SRV_FAIS_007_OK
     ...    Check that the IUT responds with the information on a given subscription
     ...    when queried by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+
+    [Setup]    Create a new subscription    OnuAlarmSubscription
+    Set Suite Variable    ${subscriptionUrl}    ${response['body']['_links']['self']['href']} 
+
     Get an individual subscription     ${ONU_ALARM_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    OnuAlarmSubscription
-    Check Result Contains    ${response['body']['OnuAlarmSubscription']}    subscriptionType    OnuAlarmSubscription
+    Should Be Equal As Strings  ${response['body']['subscriptionType']}    OnuAlarmSubscription
+    
+    [Teardown]    Remove subscription using url    ${subscriptionUrl} 
 
 
 TC_MEC_MEC029_SRV_FAIS_007_NF
@@ -247,7 +259,7 @@ TC_MEC_MEC029_SRV_FAIS_007_NF
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.1
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Get an individual subscription     ${NON_ESISTENT_SUBSCRIPTION_ID}
@@ -259,13 +271,19 @@ TC_MEC_MEC029_SRV_FAIS_008_OK
     ...    Check that the IUT updates an existing subscription
     ...    when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.2
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+
+    [Setup]    Create a new subscription    OnuAlarmSubscription
+    Set Suite Variable    ${subscriptionUrl}    ${response['body']['_links']['self']['href']}
+
     Update subscription    ${ONU_ALARM_SUBSCRIPTION_ID}    OnuAlarmSubscriptionUpdate
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    OnuAlarmSubscription
-    Check Result Contains    ${response['body']['OnuAlarmSubscription']}    subscriptionType    OnuAlarmSubscription
+    Should Be Equal As Strings  ${response['body']['subscriptionType']}    OnuAlarmSubscription
+
+    [Teardown]    Remove subscription using url    ${subscriptionUrl} 
 
 
 TC_MEC_MEC029_SRV_FAIS_008_BR
@@ -273,7 +291,7 @@ TC_MEC_MEC029_SRV_FAIS_008_BR
     ...    Check that the IUT responds with an error when
     ...    a request with incorrect parameters is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.2
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Update subscription    ${ONU_ALARM_SUBSCRIPTION_ID}    OnuAlarmSubscriptionUpdateError
@@ -285,9 +303,12 @@ TC_MEC_MEC029_SRV_FAIS_008_NF
     ...    Check that the IUT responds with an error when
     ...    a request for an unknown URI is sent by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.2
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+
+    [Setup]    Remove subscription    ${NON_ESISTENT_SUBSCRIPTION_ID}
+
     Update subscription    ${NON_ESISTENT_SUBSCRIPTION_ID}    OnuAlarmSubscriptionUpdate
     Check HTTP Response Status Code Is    404
 
@@ -297,7 +318,7 @@ TC_MEC_MEC029_SRV_FAIS_008_PF
     ...    Check that the IUT responds with an error when
     ...    a request sent by a MEC Application doesn't comply with a required condition
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.2
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     Update subscription using invalid etag    ${ONU_ALARM_SUBSCRIPTION_ID}    OnuAlarmSubscriptionUpdate
@@ -309,9 +330,13 @@ TC_MEC_MEC029_SRV_FAIS_009_OK
     ...    Check that the IUT cancels an existing subscription
     ...    when commanded by a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.8.3.5
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.8.3.5
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
+    
+    [Setup]    Create a new subscription    OnuAlarmSubscription
+    Set Suite Variable    ${subscriptionUrl}    ${response['body']['_links']['self']['href']}
+
     Remove subscription    ${ONU_ALARM_SUBSCRIPTION_ID}
     Check HTTP Response Status Code Is    204
 
@@ -321,7 +346,7 @@ TC_MEC_MEC029_SRV_FAIS_010_OK
     ...    Check that the IUT sends notification on expiry of Fixed Access Information event subscription
     ...    to a MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 7.7.3.4
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     ${json}=	Get File	schemas/DevInfoSubscription.schema.json
@@ -341,7 +366,7 @@ TC_MEC_MEC029_SRV_FAIS_011_OK
     ...    Check that the IUT sends notifications on Fixed Access Information events
     ...    to a subscribed MEC Application
     ...
-    ...    Reference    ETSI GS MEC 029 V2.1.1, clause 5.2.7
+    ...    Reference    ETSI GS MEC 029 V2.2.1, clause 5.2.7
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
     ${json}=	Get File	schemas/OnuAlarmSubscription.schema.json
@@ -460,7 +485,7 @@ Update subscription
     Set Headers    {"Authorization":"${TOKEN}"}
     ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
     ${body}=    Get File    ${file}
-    Post    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}    ${body}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}    ${body}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     
@@ -468,10 +493,24 @@ Update subscription
 Update subscription using invalid etag
     [Arguments]    ${subscriptionId}    ${content}
     Set Headers    {"If-Match": "${INVALID_ETAG}"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    Put    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
     
 Remove subscription
     [Arguments]    ${subscriptionId}
     Set Headers    {"Authorization":"${TOKEN}"}
     Delete    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
     ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Remove subscription using url
+    [Arguments]    ${url}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Delete    ${url}
+    ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/environment/variables.txt b/MEC029/SRV/FAIS/environment/variables.txt
index 698f298198ae6ddb409689ed76de0b11f2aaee52..e84f497951fefe33e8e85bc5e4ef5f57f44f36e9 100644
--- a/MEC029/SRV/FAIS/environment/variables.txt
+++ b/MEC029/SRV/FAIS/environment/variables.txt
@@ -1,8 +1,8 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     10.192.2.172
-${PORT}                     8081
+${HOST}                     mockoon
+${PORT}                     3004
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
diff --git a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..33708579eb94a0a6eb2aeba7a5865073c9ec26b6 100644
--- a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json
+++ b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json
@@ -0,0 +1,35 @@
+{
+    "subscriptionType": "OnuAlarmSubscription",
+    "filterCriteriaOnuAlarm": {
+      "alarms": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1],
+      "customerPremisesInfo": [
+        {
+          "latitude": 37.7749,
+          "longitude": -122.4194,
+          "postalCode": "94105"
+        },
+        {
+          "latitude": 40.7128,
+          "longitude": -74.0060,
+          "postalCode": "10001"
+        }
+      ],
+      "onuId": ["ABC123", "DEF456"]
+    },
+    "_links": {
+      "self": {
+        "href": "https://example.com/resource/6cd12d29-30c7-4c8c-bf51-846daa51bab0"
+      }
+    },
+    "callbackReference": "https://client/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+      "subscriptionType": "ws://example.com/notification",
+      "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+      "seconds": 1641398400,
+      "nanoSeconds": 0
+    }
+  }
+  
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69c91635cb68952fdf0db215be3d9fd32a024685 100644
--- a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json
+++ b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json
@@ -0,0 +1,35 @@
+{
+    "subscriptionType": "OnuAlarmSubscriptionError",
+    "filterCriteriaOnuAlarm": {
+      "alarms": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1],
+      "customerPremisesInfo": [
+        {
+          "latitude": 37.7749,
+          "longitude": -122.4194,
+          "postalCode": "94105"
+        },
+        {
+          "latitude": 40.7128,
+          "longitude": -74.0060,
+          "postalCode": "10001"
+        }
+      ],
+      "onuId": ["ABC123", "DEF456"]
+    },
+    "_links": {
+      "self": {
+        "href": "https://example.com/resource/123"
+      }
+    },
+    "callbackReference": "https://client/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+      "subscriptionType": "ws://example.com/notification",
+      "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+      "seconds": 1641398400,
+      "nanoSeconds": 0
+    }
+  }
+  
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..46db68589484c59a539ec8885f9999fd5bb780e0 100644
--- a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json
+++ b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json
@@ -0,0 +1,35 @@
+{
+    "subscriptionType": "OnuAlarmSubscription",
+    "filterCriteriaOnuAlarm": {
+      "alarms": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1],
+      "customerPremisesInfo": [
+        {
+          "latitude": 37.7749,
+          "longitude": -122.4194,
+          "postalCode": "94105"
+        },
+        {
+          "latitude": 40.7128,
+          "longitude": -74.0060,
+          "postalCode": "10001"
+        }
+      ],
+      "onuId": ["ABC123", "DEF456"]
+    },
+    "_links": {
+      "self": {
+        "href": "https://example.com/resource/123"
+      }
+    },
+    "callbackReference": "https://client/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+      "subscriptionType": "ws://example.com/notification",
+      "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+      "seconds": 1641398400,
+      "nanoSeconds": 0
+    }
+  }
+  
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69c91635cb68952fdf0db215be3d9fd32a024685 100644
--- a/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json
+++ b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json
@@ -0,0 +1,35 @@
+{
+    "subscriptionType": "OnuAlarmSubscriptionError",
+    "filterCriteriaOnuAlarm": {
+      "alarms": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1],
+      "customerPremisesInfo": [
+        {
+          "latitude": 37.7749,
+          "longitude": -122.4194,
+          "postalCode": "94105"
+        },
+        {
+          "latitude": 40.7128,
+          "longitude": -74.0060,
+          "postalCode": "10001"
+        }
+      ],
+      "onuId": ["ABC123", "DEF456"]
+    },
+    "_links": {
+      "self": {
+        "href": "https://example.com/resource/123"
+      }
+    },
+    "callbackReference": "https://client/callback",
+    "requestTestNotification": true,
+    "websockNotifConfig": {
+      "subscriptionType": "ws://example.com/notification",
+      "requestWebsocketUri": true
+    },
+    "expiryDeadline": {
+      "seconds": 1641398400,
+      "nanoSeconds": 0
+    }
+  }
+  
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json b/MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..18c9bfca35c00a5d09641ac566b78fb5af2645ea 100644
--- a/MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json
+++ b/MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json
@@ -0,0 +1,273 @@
+{
+    "type": "object",
+    "required": [
+      "customerPremisesInfo",
+      "cmId"
+    ],
+    "properties": {
+      "timeStamp": {
+        "properties": {
+          "nanoSeconds": {
+            "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+            "format": "Uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uint32"
+          },
+          "seconds": {
+            "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+            "format": "Uint32",
+            "type": "integer",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "Uint32"
+          }
+        },
+        "required": [
+          "seconds",
+          "nanoSeconds"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.5.2"
+      },
+      "customerPremisesInfo": {
+        "properties": {
+          "latitude": {
+            "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+            "format": "Float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "longitude": {
+            "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+            "format": "Float",
+            "type": "number",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "Float"
+          },
+          "postalCode": {
+            "description": "Postal code for the location",
+            "type": "string",
+            "x-etsi-mec-cardinality": "0..1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "type": "object",
+        "x-etsi-ref": "6.5.3"
+      },
+      "cmId": {
+        "type": "string",
+        "description": "Information (typically the serial number) to identify a Cable Modem at subscriber locations intended for use in conveying data communications on a cable data system. This value SHALL remain fixed over the lifetime of the device, including across firmware updates."
+      },
+      "cmStatus": {
+        "description": "It provides CM connectivity status information of the CM.",
+        "type": "object",
+        "required": [
+          "ifIndex",
+          "cmRegState",
+          "resets",
+          "lostSyncs",
+          "invalidRegRsps",
+          "energyMgt1x1OperStatus",
+          "emDlsOperStatus"
+        ],
+        "properties": {
+          "ifIndex": {
+            "description": "It denotes the MAC Domain interface index of the CM.",
+            "type": "string"
+          },
+          "cmRegState": {
+            "type": "integer",
+            "description": "It indicates the CM connectivity state. Enumeration of:  1 = notReady. 2 = notSynchronized. 3 = phySynchronized. 4 = dsTopologyResolutionInProgress.5 = usParametersAcquired. 6 = rangingInProgress.7 = rangingComplete. 8 = eaeInProgress.9 = dhcpv4InProgress. 10 = dhcpv6InProgress.11 = dhcpV4Complete.12 = dhcpV6Complete.13 = todEstablished.14 = securityEstablished.15 = configFileDownloadComplete.16 = registrationInProgress.17 = registrationComplete. 18 = accessDenied. 19 =operational. 20 = bpiInit.21 =forwardingDisabled. 22 = rangingInProgress. 23 = rfMuteAll.",
+            "enum": [
+              1,
+              2,
+              3,
+              4,
+              5,
+              6,
+              7,
+              8,
+              9,
+              10,
+              11,
+              12,
+              13,
+              14,
+              15,
+              16,
+              17,
+              18,
+              19,
+              20,
+              21,
+              22,
+              23
+            ]
+          },
+          "resets": {
+            "description": "It denotes the number of times the CM reset or initialized this interface.",
+            "type": "integer"
+          },
+          "lostSyncs": {
+            "description": "It denotes the number of times the CM lost synchronization with the downstream channel.",
+            "type": "integer"
+          },
+          "invalidRegRsps": {
+            "description": "It denotes the number of times the CM received invalid registration response messages.",
+            "type": "integer"
+          },
+          "energyMgt1x1OperStatus": {
+            "description": "It indicates whether the CM is currently operating in Energy Management 1x1 Mode.",
+            "type": "boolean"
+          },
+          "emDlsOperStatus": {
+            "description": "It indicates whether the CM is currently operating in Energy Management DLS Mode.",
+            "type": "boolean"
+          }
+        }
+      },
+      "cmDpvStats": {
+        "required": [
+          "ifIndex",
+          "lastMeasLatency",
+          "lastMeasTime",
+          "minLatency",
+          "maxLatency",
+          "avgLatency",
+          "numMeas"
+        ],
+        "properties": {
+          "ifIndex": {
+            "description": "It represents the interface Index of the Downstream Interface where the measurements are taken.",
+            "type": "string"
+          },
+          "lastMeasLatency": {
+            "description": "The last latency measurement",
+            "type": "integer"
+          },
+          "lastMeasTime": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "minLatency": {
+            "description": "The minimum latency measurement.",
+            "type": "integer"
+          },
+          "maxLatency": {
+            "description": "The maximum latency measurement.",
+            "type": "integer"
+          },
+          "avgLatency": {
+            "description": "The average latency measurement.",
+            "type": "integer"
+          },
+          "numMeas": {
+            "description": "The number of latency measurements made.",
+            "type": "integer"
+          }
+        }
+      },
+      "serviceFlowStats": {
+        "type": "object",
+        "required": [
+          "ifIndex",
+          "serviceFlowInfo"
+        ],
+        "properties": {
+          "ifIndex": {
+            "description": "It represents the interface index of the MAC Domain of the Service Flow.",
+            "type": "string"
+          },
+          "serviceFlowInfo": {
+            "description": "It represents the information of a Service Flow.",
+            "type": "array",
+            "items": {
+              "type": "object",
+              "required": [
+                "serviceFlowId",
+                "description",
+                "timeCreated",
+                "timeActive",
+                "policedDropPkts",
+                "policedDelayPkts",
+                "aqmDroppedPkts"
+              ],
+              "properties": {
+                "serviceFlowId": {
+                  "description": "It represents an identifier assigned to a Service Flow by CMTS within a MAC Domain.",
+                  "type": "integer"
+                },
+                "pkts": {
+                  "description": "For outgoing Service Flows, this attribute counts the number of Packet Data PDUs forwarded to this Service Flow. For incoming upstream CMTS service flows, this attribute counts the number of Packet Data PDUs actually received on the Service Flow identified by the SID for which the packet was scheduled.",
+                  "type": "integer"
+                },
+                "timeCreated": {
+                  "description": "For outgoing Service Flows, this attribute counts the number of Packet Data PDUs forwarded to this Service Flow. For incoming upstream CMTS service flows, this attribute counts the number of Packet Data PDUs actually received on the Service Flow identified by the SID for which the packet was scheduled.",
+                  "properties": {
+                    "nanoSeconds": {
+                      "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                      "format": "Uint32",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Uint32"
+                    },
+                    "seconds": {
+                      "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                      "format": "Uint32",
+                      "type": "integer",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "Uint32"
+                    }
+                  },
+                  "required": [
+                    "seconds",
+                    "nanoSeconds"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.5.2"
+                },
+                "timeActive": {
+                  "description": "FIt indicates the number of seconds that the service flow has been active",
+                  "type": "integer"
+                },
+                "policedDropPkts": {
+                  "description": "For upstream service flows, this attribute counts the number of Packet Data PDUs classified to this service flow dropped due to 1) exceeding the selected Buffer Size for the service flow; or 2) UGS packets dropped due to exceeding the Unsolicited Grant Size with a Request/Transmission policy that requires such packets to be dropped.",
+                  "type": "integer"
+                },
+                "policedDelayPkts": {
+                  "description": "It counts only outgoing packets delayed in order to maintain the Maximum Sustained Traffic Rate.",
+                  "type": "integer"
+                },
+                "aqmDroppedPkts": {
+                  "description": "For upstream service flows on which AQM is enabled, this attribute counts the number of Packet Data PDUs classified to this service flow dropped due to Active Queue Management drop decisions.",
+                  "type": "integer"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "x-etsi-ref": "6.2.4"
+  }
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json b/MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a868cb14503e18adcbbd3be68d0dc2be92169d9e 100644
--- a/MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json
+++ b/MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json
@@ -0,0 +1,581 @@
+{
+    "type": "array",
+    "items": {
+      "properties": {
+        "deviceId": {
+          "description": "Typically, the serial number of the device.This value shall remain fixed over the lifetime of the device, including across firmware updates.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "0..1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "deviceStatus": {
+          "description": "Current operational status of the device. Enumeration of: 1 = Up. 2 = Initializing. 3 = Error. 4 = Disabled.",
+          "enum": [
+            1,
+            2,
+            3,
+            4
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum"
+        },
+        "downloadDiagnostics": {
+          "properties": {
+            "bOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "diagnosticsState": {
+              "description": "The state of the HTTP and FTP download test. Enumeration of:1 = None.2 = Requested.3 = Completed.4 = Error_InitConnectionFailed.5 = Error_NoResponse.6 = Error_TransferFailed. 7 = Error_PasswordRequestFailed.8 = Error_LoginFailed.9 = Error_NoTransferMode.10 = Error_NoPASV.11 = Error_IncorrectSize.12 = Error_Timeout.",
+              "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12
+              ],
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Enum"
+            },
+            "downloadURI": {
+              "description": "The URI for the device to perform the download on.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "URI"
+            },
+            "eOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "rOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "tCPOpenReponseTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "tCPOpenRequestTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "testBytesReceived": {
+              "description": "The test traffic received in bytes during the FTP/HTTP transaction including FTP/HTTP headers, between bOMTime and eOMTime.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "totalBytesReceived": {
+              "description": "The total number of bytes received on the Interface between bOMTime and eOMTime.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            }
+          },
+          "required": [
+            "diagnosticsState"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.6"
+        },
+        "gwId": {
+          "description": "Information (typically the serial number) to identify an Internet Gateway Device through which the customer premises device is connected. This value shall remain fixed over the lifetime of the device, including across firmware updates.",
+          "items": {
+            "type": "string"
+          },
+          "minItems": 1,
+          "type": "array",
+          "x-etsi-mec-cardinality": "1..N",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "iPConnectionUpTime": {
+          "description": "The time in seconds that the IP interface has been connected.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "iPPingDiagnostics": {
+          "properties": {
+            "averageResponseTime": {
+              "description": "Result parameter indicating the average response time in milliseconds over all repetitions with successful responses of the most recent ping test.\n\nIf there were no successful responses, this value shall be zero.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "dataBlockSize": {
+              "description": "Size of the data block in bytes to be sent for each ping.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "diagnosticsState": {
+              "description": "The state of the IP ping test. Enumeration of: 1 = None. 2 = Requested. 3 = Complete. 4 = Error_CannotResolveHostName. 5 = Error_Internal.6 = Error_Other.",
+              "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6
+              ],
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Enum"
+            },
+            "failureCount": {
+              "description": "Result parameter indicating the number of failed pings in the most recent ping test.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "host": {
+              "description": "Host name or address of the host to ping.",
+              "type": "string",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "String"
+            },
+            "maximumResponseTime": {
+              "description": "Result parameter indicating the maximum response time in milliseconds over all repetitions with successful responses of the most recent ping test.\n\nIf there were no successful responses, this value shall be zero.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "minimumResponseTime": {
+              "description": "Result parameter indicating the minimum response time in milliseconds over all repetitions with successful responses of the most recent ping test.\n\nIf there were no successful responses, this value shall be zero.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "numberOfRepetitions": {
+              "description": "Number of repetitions of the ping test to perform before reporting the results.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "successCount": {
+              "description": "Result parameter indicating the number of successful\npings (those in which a successful response was received prior to the timeout) in the most recent ping test.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "timeout": {
+              "description": "Timeout in milliseconds for the ping test.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            }
+          },
+          "required": [
+            "diagnosticsState"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.4"
+        },
+        "timeStamp": {
+          "properties": {
+            "nanoSeconds": {
+              "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+              "format": "Uint32",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uint32"
+            },
+            "seconds": {
+              "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+              "format": "Uint32",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uint32"
+            }
+          },
+          "required": [
+            "seconds",
+            "nanoSeconds"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.2"
+        },
+        "totalBytesReceived": {
+          "description": "Total number of IP payload bytes received since the device was last restarted.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "totalBytesSent": {
+          "description": "Total number of IP payload bytes sent since the device was last restarted.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "totalPacketsReceived": {
+          "description": "Total number of packets received since the device was last restarted.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "totalPacketsSent": {
+          "description": "Total number of packets sent since the device was last restarted.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "traceRouteDiagnostics": {
+          "properties": {
+            "dataBlockSize": {
+              "description": "Size of the data block in bytes to be sent for each trace route.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "diagnosticsState": {
+              "description": "The state of the IP trace-route test. Enumeration of: 1 = None. 2 = Requested. 3 = Complete.  4 = Error_CannotResolveHostName. 5 = Error_MaxHopCountExceeded. 6 = Error_Internal. 7 = Error_Other.",
+              "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7
+              ],
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Enum"
+            },
+            "host": {
+              "description": "Host name or address of the host to find a route to.",
+              "type": "string",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "String"
+            },
+            "maxHopCount": {
+              "description": "The maximum number of hop used in outgoing probe packets. The default is 30 hops.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "numberOfRouteHops": {
+              "description": "Result parameter indicating the number of hops within the discovered route.\n\nIf a route could not be determined, this value shall be zero.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "responseTime": {
+              "description": "Result parameter indicating the response time in milliseconds the most recent trace route test.\n\nIf a route could not be determined, this value shall be zero.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "timeout": {
+              "description": "Timeout in milliseconds for the trace route test.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            }
+          },
+          "required": [
+            "diagnosticsState"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.5"
+        },
+        "upTime": {
+          "description": "Time in seconds since the device was last restarted.",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Integer"
+        },
+        "uploadDiagnostics": {
+          "properties": {
+            "bOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "diagnosticsState": {
+              "description": "The state of the HTTP and FTP download test. Enumeration of: 1 = None. 2 = Requested. 3 = Completed. 4 = Error_InitConnectionFailed. 5 = Error_NoResponse.  6 = Error_PasswordRequestFailed. 7 = Error_LoginFailed. 8 = Error_NoTransferMode. 9 = Error_NoPASV.  10 = Error_NoCWD. 11 = Error_NoSTOR.12 = Error_NoTransferComplete.",
+              "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12
+              ],
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Enum"
+            },
+            "eOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "rOMTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "tCPOpenReponseTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "tCPOpenRequestTime": {
+              "properties": {
+                "nanoSeconds": {
+                  "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                },
+                "seconds": {
+                  "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                  "format": "Uint32",
+                  "type": "integer",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Uint32"
+                }
+              },
+              "required": [
+                "seconds",
+                "nanoSeconds"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.2"
+            },
+            "testBytesSent": {
+              "description": "The test traffic sent in bytes during the FTP/HTTP transaction including FTP/HTTP headers, between bOMTime and eOMTime.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "testFileLength": {
+              "description": "The size of the file (in bytes) to be uploaded to the\nserver.",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Integer"
+            },
+            "uploadURI": {
+              "description": "The URI for the device to perform the upload to.",
+              "format": "uri",
+              "type": "string",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "URI"
+            }
+          },
+          "required": [
+            "diagnosticsState"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.7"
+        }
+      },
+      "required": [
+        "gwId",
+        "deviceId",
+        "deviceStatus",
+        "upTime",
+        "iPConnectionUpTime",
+        "totalBytesSent",
+        "totalBytesReceived",
+        "totalPacketsSent",
+        "totalPacketsReceived"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.2.3"
+    }
+  }
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/FaInfo.schema.json b/MEC029/SRV/FAIS/schemas/FaInfo.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..76fae669bd270c39932653d350a25c74e7f922f7 100644
--- a/MEC029/SRV/FAIS/schemas/FaInfo.schema.json
+++ b/MEC029/SRV/FAIS/schemas/FaInfo.schema.json
@@ -0,0 +1,133 @@
+{
+    "type": "array",
+    "items": {
+        "properties": {
+            "connectivityInfo": {
+                "type": "array",
+                "items": {
+                    "description": "The per connectivity domain FAI as defined below.",
+                    "properties": {
+                        "dsbw": {
+                            "description": "The bandwidth (in Mbps) from the network towards the customer site.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Integer"
+                        },
+                        "interfaceType": {
+                            "description": "The physical interface used for the end customer site:1   =   100BASE-TX.2   =   1000BASE-TX.3   =   1000BASE-LX.4   =   1000BASELX10.5   =   1000BASEBX10. 6   =   1000BASE-LH.7   =   1000Base-ZX. 8   =   ADSL-RJ11.9   =   VDSL-RJ11.10 =   GPON.",
+                            "enum": [
+                                1,
+                                2,
+                                3,
+                                4,
+                                5,
+                                6,
+                                7,
+                                8,
+                                9,
+                                10
+                            ],
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "Enum"
+                        },
+                        "lastMileTech": {
+                            "description": "An informative field identifying the last mile access technology used.The valid values are:1 = ADSL.2 = VDSL.3 = GPON. 4 = XGPON.5 = NGPON2. 6 = XGSPON. 7 = GFAST.8 = P2PEthernet.",
+                            "enum": [
+                                1,
+                                2,
+                                3,
+                                4,
+                                5,
+                                6,
+                                7,
+                                8
+                            ],
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "1",
+                            "x-etsi-mec-origin-type": "Enum"
+                        },
+                        "latency": {
+                            "description": "Maximum baseline latency (in ms) between customer site and service edge node.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Integer"
+                        },
+                        "usbw": {
+                            "description": "The bandwidth (in Mbps) from the customer site towards the network.",
+                            "type": "integer",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Integer"
+                        }
+                    },
+                    "required": [
+                        "lastMileTech",
+                        "interfaceType"
+                    ]
+                }
+            },
+            "customerPremisesInfo": {
+                "description": "The physical location of a customer site.",
+                "items": {
+                    "properties": {
+                        "latitude": {
+                            "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                            "format": "Float",
+                            "type": "number",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Float"
+                        },
+                        "longitude": {
+                            "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                            "format": "Float",
+                            "type": "number",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "Float"
+                        },
+                        "postalCode": {
+                            "description": "Postal code for the location",
+                            "type": "string",
+                            "x-etsi-mec-cardinality": "0..1",
+                            "x-etsi-mec-origin-type": "String"
+                        }
+                    },
+                    "type": "object",
+                    "x-etsi-ref": "6.5.3"
+                },
+                "minItems": 1,
+                "type": "array",
+                "x-etsi-mec-cardinality": "1..N",
+                "x-etsi-mec-origin-type": "CpInfo"
+            },
+            "timeStamp": {
+                "properties": {
+                    "nanoSeconds": {
+                        "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                        "format": "Uint32",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Uint32"
+                    },
+                    "seconds": {
+                        "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                        "format": "Uint32",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Uint32"
+                    }
+                },
+                "required": [
+                    "seconds",
+                    "nanoSeconds"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.5.2"
+            }
+        },
+        "type": "object",
+        "required": [
+            "customerPremisesInfo"
+        ],
+        "x-etsi-ref": "6.2.2"
+    }
+}
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json b/MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..88840d27569f64798aa67c78ce37e193ebc15130 100644
--- a/MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json
+++ b/MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json
@@ -0,0 +1,672 @@
+{
+    "oneOf": [
+      {
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "description": "'URI referring to a resource'",
+                "type": "object",
+                "required": [
+                  "href"
+                ],
+                "properties": {
+                  "href": {
+                    "description": "The URI referring to the subscription.",
+                    "type": "string",
+                    "format": "uri"
+                  }
+                }
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "URI"
+          },
+          "requestTestNotification": {
+            "description": "Shall be set to TRUE by the service consumer to request",
+            "type": "boolean"
+          },
+          "websockNotifConfig": {
+            "description": "Provides details to negotiate and signal the use of a Websocket connection between FAIS and the service consumer for notifications. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "type": "object",
+            "properties": {
+              "subscriptionType": {
+                "description": "Set by FAIS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "type": "string",
+                "format": "uri"
+              },
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean"
+              }
+            }
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "filterCriteriaOnuAlarm": {
+            "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+            "properties": {
+              "alarms": {
+                "items": {
+                  "description": "In case alarms is not included in the subscription request, the default value -1 = All shall be used and included in the response:\n0  =\tEquipmentAlarm.\n\t(Functional failure on an internal interface.)\n1  =\tPoweringAlarm.\n\t(Loss of external power to battery backup unit. This alarm is typically derived through an external interface to a battery backup unit, and indicates that AC is no longer available to maintain battery charge.)\n2  =\tBatteryMissing.\n\t(Battery is provisioned but missing.)\n3  =\tBatteryFailure.\n\t(Battery is provisioned and present but cannot recharge.)\n4  =\tBatteryLow.\n\t(Battery is provisioned and present but its voltage is too low.)\n5  =\tPhysicalIntrusion.\n\t(Applies if the ONU supports detection such as door or box open.)\n6  =\tOnuSelfTestFailure.\n\t(ONU has failed autonomous self-test.)\n7  =\tDyingGasp.\n\t(ONU is powering off imminently due to loss of power to the ONU itself.)\n8  =\tTemperatureYellow.\n\t(No service shutdown at present, but the circuit pack is operating beyond its recommended range.)\n9  =\tTemperatureRed.\n\t(Some services have been shut down to avoid equipment damage.)\n10 =\tVoltageYellow.\n\t(No service shutdown at present, but the line power voltage is below its recommended minimum.)\n11 =\tVoltageRed.\n\t(Some services have been shut down to avoid power collapse.)\n12 =\tOnuManualPowerOff.\n\t(The ONU is shutting down because the subscriber has turned off its power switch.)\n13 =\tInvImage.\n\t(Software image is invalid.)\n14 =\tPseOverloadYellow.\n\t(Indicates that the ONU is nearing its maximum ability to supply the known PoE demand of the attached PDs. The thresholds for declaring and clearing this alarm are vendor-specific.)\n15 =\tPseOverloadRed.\n\t(Indicates that the ONU is unable to supply all of the PoE demand of the attached PDs and has removed or reduced power to at least one PD.)\n-1 =\tAll.",
+                  "enum": [
+                    0,
+                    1,
+                    2,
+                    3,
+                    4,
+                    5,
+                    6,
+                    7,
+                    8,
+                    9,
+                    10,
+                    11,
+                    12,
+                    13,
+                    14,
+                    15,
+                    -1
+                  ],
+                  "type": "integer"
+                },
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "Enum"
+              },
+              "customerPremisesInfo": {
+                "description": "0 to N physical locations of the customer sites.",
+                "items": {
+                  "properties": {
+                    "latitude": {
+                      "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                      "format": "Float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "longitude": {
+                      "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                      "format": "Float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "postalCode": {
+                      "description": "Postal code for the location",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "type": "object",
+                  "x-etsi-ref": "6.5.3"
+                },
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "CpInfo"
+              },
+              "onuId": {
+                "description": "1 to N unique identifiers for the optical network units. Typical it is the unique serial number for each ONU, which contains the vendor ID and version number. The first four bytes are an ASCII-encoded four-letter vendor ID. The second four bytes are a binary encoded serial number, under the control of the ONU vendor.",
+                "items": {
+                  "type": "string"
+                },
+                "minItems": 1,
+                "type": "array",
+                "x-etsi-mec-cardinality": "1..N",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "required": [
+              "onuId"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "1"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \\\"OnuAlarmSubscription\\\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "filterCriteriaOnuAlarm"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.2"
+      },
+      {
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "description": "'URI referring to a resource'",
+                "type": "object",
+                "required": [
+                  "href"
+                ],
+                "properties": {
+                  "href": {
+                    "description": "The URI referring to the subscription.",
+                    "type": "string",
+                    "format": "uri"
+                  }
+                }
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "URI"
+          },
+          "requestTestNotification": {
+            "description": "Shall be set to TRUE by the service consumer to request",
+            "type": "boolean"
+          },
+          "websockNotifConfig": {
+            "description": "Provides details to negotiate and signal the use of a Websocket connection between FAIS and the service consumer for notifications. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "type": "object",
+            "properties": {
+              "subscriptionType": {
+                "description": "Set by FAIS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "type": "string",
+                "format": "uri"
+              },
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean"
+              }
+            }
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "filterCriteriaDevInfo": {
+            "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+            "properties": {
+              "deviceErrStatus": {
+                "items": {
+                  "description": "The abnormal operational status of the device. Enumeration of:  1 = Error. 2 = Disabled.",
+                  "enum": [
+                    1,
+                    2
+                  ],
+                  "type": "integer"
+                },
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "Enum"
+              },
+              "deviceId": {
+                "description": "The device identifier.",
+                "items": {
+                  "type": "string"
+                },
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              },
+              "gwId": {
+                "description": "The identifier of an Internet Gateway Device through which the customer premises device is connected.",
+                "items": {
+                  "type": "string"
+                },
+                "type": "array",
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "type": "object",
+            "x-etsi-mec-cardinality": "1"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"DevInfoSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "callbackReference",
+          "filterCriteriaDevInfo"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.3"
+      },
+      {
+        "properties": {
+          "_links": {
+            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+            "properties": {
+              "self": {
+                "description": "'URI referring to a resource'",
+                "type": "object",
+                "required": [
+                  "href"
+                ],
+                "properties": {
+                  "href": {
+                    "description": "The URI referring to the subscription.",
+                    "type": "string",
+                    "format": "uri"
+                  }
+                }
+              }
+            },
+            "required": [
+              "self"
+            ],
+            "type": "object",
+            "x-etsi-mec-cardinality": "0..1"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "URI"
+          },
+          "requestTestNotification": {
+            "description": "Shall be set to TRUE by the service consumer to request",
+            "type": "boolean"
+          },
+          "websockNotifConfig": {
+            "description": "Provides details to negotiate and signal the use of a Websocket connection between FAIS and the service consumer for notifications. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "type": "object",
+            "properties": {
+              "subscriptionType": {
+                "description": "Set by FAIS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "type": "string",
+                "format": "uri"
+              },
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean"
+              }
+            }
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "filterCriteriaCmConn": {
+            "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+            "properties": {
+              "cmIf": {
+                "type": "array",
+                "items": {
+                  "description": "",
+                  "properties": {
+                    "cmId": {
+                      "description": "The identifier of a Cable Modem at subscriber locations intended for use in conveying data communications on a cable data system.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "cmRegState": {
+                      "items": {
+                        "description": "It indicates the CM connectivity state. Enumeration of:  1 = notReady. 2 = notSynchronized. 3 = phySynchronized. 4 = dsTopologyResolutionInProgress.5 = usParametersAcquired. 6 = rangingInProgress.7 = rangingComplete. 8 = eaeInProgress.9 = dhcpv4InProgress. 10 = dhcpv6InProgress.11 = dhcpV4Complete.12 = dhcpV6Complete.13 = todEstablished.14 = securityEstablished.15 = configFileDownloadComplete.16 = registrationInProgress.17 = registrationComplete. 18 = accessDenied. 19 =operational. 20 = bpiInit.21 =forwardingDisabled.",
+                        "enum": [
+                          1,
+                          2,
+                          3,
+                          4,
+                          5,
+                          6,
+                          7,
+                          8,
+                          9,
+                          10,
+                          11,
+                          12,
+                          13,
+                          14,
+                          15,
+                          16,
+                          17,
+                          18,
+                          19,
+                          20,
+                          21
+                        ],
+                        "type": "integer"
+                      },
+                      "minItems": 1,
+                      "type": "array",
+                      "x-etsi-mec-cardinality": "1..N",
+                      "x-etsi-mec-origin-type": "Enum"
+                    },
+                    "ifIndex": {
+                      "description": "The MAC Domain interface index of the CM.",
+                      "items": {
+                        "type": "string"
+                      },
+                      "minItems": 1,
+                      "type": "array",
+                      "x-etsi-mec-cardinality": "1..N",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "required": [
+                    "cmId",
+                    "ifIndex",
+                    "cmRegState"
+                  ]
+                }
+              },
+              "customerPremisesInfo": {
+                "properties": {
+                  "latitude": {
+                    "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                    "format": "Float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "longitude": {
+                    "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                    "format": "Float",
+                    "type": "number",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "Float"
+                  },
+                  "postalCode": {
+                    "description": "Postal code for the location",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "0..1",
+                    "x-etsi-mec-origin-type": "String"
+                  }
+                },
+                "type": "object",
+                "x-etsi-ref": "6.5.3"
+              }
+            },
+            "type": "object",
+            "x-etsi-mec-cardinality": "1"
+          },
+          "subscriptionType": {
+            "description": "Shall be set to \"CmConnSubscription\".",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "filterCriteriaCmConn"
+        ],
+        "type": "object",
+        "x-etsi-notes": "NOTE:\t'notReady' indicates that the CM has not started the registration process yet.\n\t'notSynchronized' indicates that the CM has not initiated or completed the synchronization of the downstream physical layer.\n\t'phySynchronized' indicates that the CM has completed the synchronization of the downstream physical layer.\n\t'dsTopologyResolutionInProgress' indicates that the CM is attempting to determine its MD-DS-SG.\n\t'usParametersAcquired' indicates that the CM has completed the upstream parameters acquisition or have completed the downstream and upstream service groups resolution.\n\t'rangingInProgress' indicates that the CM has initiated the initial ranging process.\n\t'rangingComplete' indicates that the CM has completed initial ranging and received a Ranging Status of success from the CMTS in the RNG-RSP message.\n\t'eaeInProgress' indicates that the CM has sent an Auth Info message for EAE.\n\t'dhcpv4InProgress' indicates that the CM has sent a DHCPv4 DISCOVER to gain IP connectivity.\n\t'dhcpv6InProgress' indicates that the CM has sent a DHCPv6 Solicit message.\n\t'dhcpv4Complete' indicates that the CM has received a DHCPv4 ACK message from the CMTS.\n\t'dhcpv6Complete' indicates that the CM has received a DHCPv6 Reply message from the CMTS.\n\t'todEstablished' indicates that the CM has successfully acquired time of day.\n\t'securityEstablished' indicates that the CM has successfully completed the BPI initialization process.\n\t'configFileDownloadComplete' indicates that the CM has completed the config file download process.\n\t'registrationInProgress' indicates that the CM has sent a Registration Request.\n\t'registrationComplete' indicates that the CM has successfully completed the Registration process with the CMTS.\n\t'accessDenied' indicates that the CM has received a registration aborted notification from the CMTS.\n\t'operational' indicates that the CM has completed all necessary initialization steps and is operational.\n\t'bpiInit' indicates that the CM has started the BPI initialization process as indicated in the CM config file.\n\t'forwardingDisabled' indicates that the registration process was completed, but the network access option in the received configuration file prohibits forwarding.",
+        "x-etsi-ref": "6.3.4"
+      },
+      {
+        "properties": {
+          "subscriptionType": {
+            "description": "Shall be set to \\\"AniAlarmSubscription\\\"",
+            "type": "string"
+          },
+          "_links": {
+            "properties": {
+              "self": {
+                "description": "'URI referring to a resource'",
+                "type": "object",
+                "required": [
+                  "href"
+                ],
+                "properties": {
+                  "href": {
+                    "description": "The URI referring to the subscription.",
+                    "type": "string",
+                    "format": "uri"
+                  }
+                }
+              }
+            },
+            "required": [
+              "self"
+            ]
+          },
+          "aniIndex": {
+            "description": "The index of an access network interface supported by the optical network unit.",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "String"
+          },
+          "callbackReference": {
+            "description": "URI exposed by the client on which to receive notifications via HTTP. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "format": "uri",
+            "type": "string",
+            "x-etsi-mec-cardinality": "1",
+            "x-etsi-mec-origin-type": "URI"
+          },
+          "requestTestNotification": {
+            "description": "Shall be set to TRUE by the service consumer to request",
+            "type": "boolean"
+          },
+          "websockNotifConfig": {
+            "description": "Provides details to negotiate and signal the use of a Websocket connection between FAIS and the service consumer for notifications. At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to FAIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009, clause 6.12a.",
+            "type": "object",
+            "properties": {
+              "subscriptionType": {
+                "description": "Set by FAIS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
+                "type": "string",
+                "format": "uri"
+              },
+              "requestWebsocketUri": {
+                "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
+                "type": "boolean"
+              }
+            }
+          },
+          "expiryDeadline": {
+            "properties": {
+              "nanoSeconds": {
+                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              },
+              "seconds": {
+                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+                "format": "Uint32",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Uint32"
+              }
+            },
+            "required": [
+              "seconds",
+              "nanoSeconds"
+            ],
+            "type": "object",
+            "x-etsi-ref": "6.5.2"
+          },
+          "filterCriteriaAniAlarm": {
+            "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+            "required": [
+              "onuId",
+              "aniId"
+            ],
+            "properties": {
+              "customerPremisesInfo": {
+                "required": [
+                  "onuId",
+                  "aniId"
+                ],
+                "description": "0 to N physical locations of the customer sites.",
+                "type": "array",
+                "items": {
+                  "properties": {
+                    "latitude": {
+                      "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                      "format": "Float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "longitude": {
+                      "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                      "format": "Float",
+                      "type": "number",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "Float"
+                    },
+                    "postalCode": {
+                      "description": "Postal code for the location",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "0..1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "type": "object",
+                  "x-etsi-ref": "6.5.3"
+                },
+                "x-etsi-mec-cardinality": "0..N",
+                "x-etsi-mec-origin-type": "CpInfo"
+              },
+              "onuId": {
+                "description": "1 to N unique identifiers for the optical network units.  Typical it is the unique serial number for each ONU, which contains the vendor ID and version number. The first four bytes are an ASCII-encoded four-letter vendor ID. The second four bytes are a binary encoded serial number, under the control of the ONU vendor.",
+                "type": "array",
+                "items": {
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "aniId": {
+                "description": "",
+                "type": "object",
+                "required": [
+                  "onuId",
+                  "aniIndex"
+                ],
+                "properties": {
+                  "onuId": {
+                    "description": "The unique identifiers for the optical network unit",
+                    "type": "string"
+                  },
+                  "aniIndex": {
+                    "description": "The index of an access network interface supported by the optical network unit",
+                    "type": "string"
+                  }
+                }
+              },
+              "alarms": {
+                "type": "array",
+                "items": {
+                  "description": "In case alarms is not included in the subscription request, the default value -1 = All shall be used and included in the response:\n0  =\tLowReceivedOpticalPower.\n(Received downstream optical power below threshold.)\n1  =\tHighReceivedOpticalPower.\n\t(Received downstream optical power above threshold.)\n2  =\tSignalFalure.\n(Bit error-based signal fail.)\n3  =\tSignalDegrade.\n(Bit error-based signal degrade.)\n4  =\tLowTransmitOpticalPower.\n(Transmit optical power below lower threshold.)\n5  =\tHighTransmitOpticalPower.\n(Transmit optical power above upper threshold.)\n6  =\tLaserBiasCurrent.\n(Laser bias current above threshold determined by vendor.)\n-1 =\tAll.",
+                  "enum": [
+                    0,
+                    1,
+                    2,
+                    3,
+                    4,
+                    5,
+                    6,
+                    -1
+                  ],
+                  "type": "integer"
+                }
+              }
+            }
+          }
+        },
+        "required": [
+          "subscriptionType",
+          "callbackReference",
+          "filterCriteriaAniAlarm",
+          "onuId",
+          "aniIndex"
+        ],
+        "type": "object",
+        "x-etsi-ref": "6.3.6"
+      }
+    ]
+  }
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/PonInfo.schema.json b/MEC029/SRV/FAIS/schemas/PonInfo.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8ffbb47a8d62f9b55871738c548a17f66ef6418d 100644
--- a/MEC029/SRV/FAIS/schemas/PonInfo.schema.json
+++ b/MEC029/SRV/FAIS/schemas/PonInfo.schema.json
@@ -0,0 +1,130 @@
+{
+    "type": "array",
+    "items": {
+      "properties": {
+        "timeStamp": {
+          "properties": {
+            "nanoSeconds": {
+              "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+              "format": "Uint32",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uint32"
+            },
+            "seconds": {
+              "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+              "format": "Uint32",
+              "type": "integer",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Uint32"
+            }
+          },
+          "required": [
+            "seconds",
+            "nanoSeconds"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.2"
+        },
+        "customerPremisesInfo": {
+          "description": "The physical location of a customer site.",
+          "items": {
+            "properties": {
+              "latitude": {
+                "description": "Latitude (DATUM=WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                "format": "Float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "longitude": {
+                "description": "Longitude (DATUM=WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                "format": "Float",
+                "type": "number",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "Float"
+              },
+              "postalCode": {
+                "description": "Postal code for the location",
+                "type": "string",
+                "x-etsi-mec-cardinality": "0..1",
+                "x-etsi-mec-origin-type": "String"
+              }
+            },
+            "type": "object",
+            "x-etsi-ref": "6.5.3"
+          },
+          "minItems": 1,
+          "type": "array",
+          "x-etsi-mec-cardinality": "1..N",
+          "x-etsi-mec-origin-type": "CpInfo"
+        },
+        "ponSYS_ID": {
+          "description": "The 20-bit identity of the optical system within a certain domain.This is a reference value set by the OSS.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "onuId": {
+          "description": "Information to identify an Optical Network Unit.",
+          "type": "string",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "String"
+        },
+        "ponTech": {
+          "description": "An informative field identifying the optical technology used. The valid values are: 1 = GPON. 2 = XGPON.3 = NGPON2. 4 = XGSPON.",
+          "enum": [
+            1,
+            2,
+            3,
+            4
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum"
+        },
+        "operationalState": {
+          "description": "It reports whether the ONU is currently capable of performing its function. Valid values are: 0 = enabled 1 = disabled",
+          "enum": [
+            0,
+            1
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum"
+        },
+        "dsRate": {
+          "description": "Downstream line rate, valid values are:\n1 =\t2,48832 Gbit/s: G-PON [i.9]; or\nNG-PON2 option 2 [i.8].\n2 =\t9,95328 Gbit/s:  XG-PON [i.10]; or\n XGS-PON [i.11]; or\nNG-PON2 option 1 [i.8].",
+          "enum": [
+            1,
+            2
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum"
+        },
+        "usRate": {
+          "description": "Upstream line rate, valid values are:\n1 =\t1,24416 Gbit/s: G-PON option 1 [i.9].\n2 =\t2,48832 Gbit/s: G-PON option 2 [i.9]; or\nXG-PON [i.10]; or\nNG-PON2 option 2 [i.8].\n3 =\t9,95328 Gbit/s: XGS-PON [i.11]; or\nNG-PON2 option 1 [i.8].",
+          "enum": [
+            1,
+            2,
+            3
+          ],
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Enum"
+        }
+      },
+      "required": [
+        "customerPremisesInfo",
+        "ponSYS_ID",
+        "onuId",
+        "ponTech",
+        "operationalState",
+        "dsRate",
+        "usRate"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.2.5"
+    }
+  }
\ No newline at end of file
diff --git a/MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json b/MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e83a83657a04b50fd7b42f8b4d41dfcdee9d8646 100644
--- a/MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json
+++ b/MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json
@@ -0,0 +1,63 @@
+{
+    "properties": {
+      "_links": {
+        "description": "Hyperlinks related to the resource.",
+        "type": "object",
+        "required": [
+          "self"
+        ],
+        "properties": {
+          "self": {
+            "description": "'URI referring to a resource'",
+            "type": "object",
+            "required": [
+              "href"
+            ],
+            "properties": {
+              "href": {
+                "description": "The URI referring to the subscription.",
+                "type": "string",
+                "format": "uri"
+              }
+            }
+          },
+          "subscriptions": {
+            "description": "The service consumer's subscriptions.",
+            "type": "array",
+            "items": {
+              "properties": {
+                "href": {
+                  "description": "The URI referring to the subscription.",
+                  "format": "uri",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "URI"
+                },
+                "subscriptionType": {
+                  "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.2, 6.3.3, 6.3.4 and 6.3.6 \"OnuAlarmSubscription\" \"DevInfoSubscription\" \"CmConnSubscription\" \"AniAlarmSubscription\"",
+                  "enum": [
+                    "OnuAlarmSubscription",
+                    "DevInfoSubscription",
+                    "CmConnSubscription",
+                    "AniAlarmSubscription\""
+                  ],
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Enum"
+                }
+              },
+              "required": [
+                "href",
+                "subscriptionType"
+              ]
+            }
+          }
+        }
+      }
+    },
+    "required": [
+      "_links"
+    ],
+    "type": "object",
+    "x-etsi-ref": "6.3.5"
+  }
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/V2XInformationService.robot b/MEC030/SRV/V2X/V2XInformationService.robot
index 915cbc6a5470ad73e5b176f16061d1e13be74d15..c6449e1eab0dbc086dc43a68835f3c9a62572f86 100644
--- a/MEC030/SRV/V2X/V2XInformationService.robot
+++ b/MEC030/SRV/V2X/V2XInformationService.robot
@@ -10,173 +10,201 @@ Library     OperatingSystem
 
 ##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info
 *** Test Cases ***
-TP_MEC_MEC030_SRV_V2X_001_OK_01
+TC_MEC_MEC030_SRV_V2X_001_OK_01
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu unicast using ecgi filter    ${ECGI} 	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   UuUnicastProvisioningInfo
     
     
-TP_MEC_MEC030_SRV_V2X_001_OK_02
+TC_MEC_MEC030_SRV_V2X_001_OK_02
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu unicast using geographical filter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   UuUnicastProvisioningInfo
 
-TP_MEC_MEC030_SRV_V2X_001_BR
+TC_MEC_MEC030_SRV_V2X_001_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu unicast using geographical filter wrong parameter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    400
     
 
 
-TP_MEC_MEC030_SRV_V2X_001_NF
+TC_MEC_MEC030_SRV_V2X_001_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.3.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.3.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu unicast using ecgi filter    ${UNKNOWN_ECGI} 
     Check HTTP Response Status Code Is    404
 
 
    
 ##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/uu_mbms_provisioning_info
-TP_MEC_MEC030_SRV_V2X_002_OK_01
+TC_MEC_MEC030_SRV_V2X_002_OK_01
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over Uu MBM when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.4.3.1
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.4.3.1
     Retrieve configured provisioning information over Uu MBM using ecgi filter    ${ECGI} 	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   UuMbmsProvisioningInfo
 
-TP_MEC_MEC030_SRV_V2X_002_OK_02
+TC_MEC_MEC030_SRV_V2X_002_OK_02
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu MBM using geographical filter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   UuMbmsProvisioningInfo
     
-TP_MEC_MEC030_SRV_V2X_002_BR
+TC_MEC_MEC030_SRV_V2X_002_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu MBM using geographical filter wrong parameter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    400
 
-TP_MEC_MEC030_SRV_V2X_002_NF
+TC_MEC_MEC030_SRV_V2X_002_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.4.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.4.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over Uu MBM using geographical filter    ${UNKNOWN_LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    404
         
 
 
 ##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/pc5_provisioning_info
-TP_MEC_MEC030_SRV_V2X_003_OK_01
+TC_MEC_MEC030_SRV_V2X_003_OK_01
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over PC5 when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over PC5 using ecgi filter    ${ECGI} 	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   Pc5ProvisioningInfo
 
-TP_MEC_MEC030_SRV_V2X_003_OK_02
+TC_MEC_MEC030_SRV_V2X_003_OK_02
     [Documentation]
     ...  Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over PC5 using geographical filter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is   Pc5ProvisioningInfo
 
-TP_MEC_MEC030_SRV_V2X_003_BR
+TC_MEC_MEC030_SRV_V2X_003_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over PC5 using geographical filter wrong parameter    ${LAT_VALUE}     ${LON_VALUE}	
     Check HTTP Response Status Code Is    400
 
 
-TP_MEC_MEC030_SRV_V2X_003_NF
+TC_MEC_MEC030_SRV_V2X_003_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.5.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.5.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Retrieve configured provisioning information over PC5 using ecgi filter    ${UNKNOWN_ECGI} 
     Check HTTP Response Status Code Is    404
 
 
+##POST on ${apiRoot}/${apiName}/${apiVersion}/provide_v2x_msg_distribution_server_info
+TC_MEC_MEC030_SRV_V2X_004_OK
+    [Documentation]
+    ...  Check that the IUT processes properly a request to information of V2X Message Distribution servers
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
+    Request v2x message distribution servers    V2XDistributionServers
+    Check HTTP Response Body Json Schema Is   V2XDistributionServers
+    Check HTTP Response Status Code Is    200
+
+TC_MEC_MEC030_SRV_V2X_004_BR
+    [Documentation]
+    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
+    Request v2x message distribution servers    V2XDistributionServers_BR
+    Check HTTP Response Status Code Is    400
+    
+    
+TC_MEC_MEC030_SRV_V2X_004_NF
+    [Documentation]
+    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
+    Request v2x message distribution servers    V2XDistributionServers_NF
+    Check HTTP Response Status Code Is    404
+
+
 ##POST on ${apiRoot}/${apiName}/${apiVersion}/provide_predicted_qos
-TP_MEC_MEC030_SRV_V2X_004_OK
+TC_MEC_MEC030_SRV_V2X_005_OK
     [Documentation]
     ...  Check that the IUT sends a request about QoS information for a vehicular UE when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.6.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Request predicted QoS   PredictedQoS.json
     Check HTTP Response Body Json Schema Is   PredictedQoS
     Check HTTP Response Status Code Is    200
     
     
-TP_MEC_MEC030_SRV_V2X_004_BR
+TC_MEC_MEC030_SRV_V2X_005_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.6.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     ##Wrong parameter into JSON: locality instead of locationGranularity
     Request predicted QoS   PredictedQoS_BR.json 
     Check HTTP Response Status Code Is    400
 
-TP_MEC_MEC030_SRV_V2X_004_NF
+TC_MEC_MEC030_SRV_V2X_005_NF
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.6.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.6.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Request predicted QoS   PredictedQoS_NF.json
     Check HTTP Response Status Code Is    404
         
 
 
 ##POST on ${apiRoot}/${apiName}/${apiVersion}/publish_v2x_message
-TP_MEC_MEC030_SRV_V2X_005_OK
+TC_MEC_MEC030_SRV_V2X_006_OK
     [Documentation]
     ...  Check that the IUT processes properly a request to publish a V2X message
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.7.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.7.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Publish V2X message   V2xMsgPublication.json
     Check HTTP Response Status Code Is    204
     
-TP_MEC_MEC030_SRV_V2X_005_BR
+TC_MEC_MEC030_SRV_V2X_006_BR
     [Documentation]
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.7.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.7.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Publish V2X message   V2xMsgPublication_BR.json
     Check HTTP Response Status Code Is    400    
 
 
 
 ##GET on ${apiRoot}/${apiName}/${apiVersion}/subscription    
-TP_MEC_MEC030_SRV_V2X_006_OK_01
+TC_MEC_MEC030_SRV_V2X_007_OK_01
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -189,11 +217,11 @@ TP_MEC_MEC030_SRV_V2X_006_OK_01
     END
     Should Be True    ${passed}
     
-TP_MEC_MEC030_SRV_V2X_006_OK_02
+TC_MEC_MEC030_SRV_V2X_007_OK_02
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -206,11 +234,11 @@ TP_MEC_MEC030_SRV_V2X_006_OK_02
     END
     Should Be True    ${passed}    
 
-TP_MEC_MEC030_SRV_V2X_006_OK_03
+TC_MEC_MEC030_SRV_V2X_007_OK_03
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -223,11 +251,11 @@ TP_MEC_MEC030_SRV_V2X_006_OK_03
     END
     Should Be True    ${passed}
 
-TP_MEC_MEC030_SRV_V2X_006_OK_04
+TC_MEC_MEC030_SRV_V2X_008_OK_04
     [Documentation] 
     ...  Check that the IUT responds with the requested list of subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -241,11 +269,11 @@ TP_MEC_MEC030_SRV_V2X_006_OK_04
     Should Be True    ${passed}
 
 
-TP_MEC_MEC030_SRV_V2X_006_BR
+TC_MEC_MEC030_SRV_V2X_008_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml        
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml        
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve subscription list information    ${SUB_TYPE_INVALID}
@@ -253,11 +281,11 @@ TP_MEC_MEC030_SRV_V2X_006_BR
 
                     
 ##POST on ${apiRoot}/${apiName}/${apiVersion}/subscription  
-TP_MEC_MEC030_SRV_V2X_007_OK_01
+TC_MEC_MEC030_SRV_V2X_009_OK_01
     [Documentation] 
     ...  Check that the IUT responds with the requested to create a subscription
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuUniSubscription.json
@@ -271,11 +299,11 @@ TP_MEC_MEC030_SRV_V2X_007_OK_01
     Should Be Equal As Strings  ${json_object['filterCriteria']}    ${response['body']['filterCriteria']}
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
 
-TP_MEC_MEC030_SRV_V2X_007_OK_02
+TC_MEC_MEC030_SRV_V2X_009_OK_02
     [Documentation] 
     ...  Check that the IUT responds with the requested to create a subscription
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml       
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml       
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuMbmsSubscription.json
@@ -290,11 +318,11 @@ TP_MEC_MEC030_SRV_V2X_007_OK_02
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
  
 
-TP_MEC_MEC030_SRV_V2X_007_OK_03
+TC_MEC_MEC030_SRV_V2X_009_OK_03
     [Documentation] 
     ...  Check that the IUT responds with the requested to create a subscription
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml        
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml        
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgPc5Subscription.json
@@ -308,11 +336,11 @@ TP_MEC_MEC030_SRV_V2X_007_OK_03
     Should Be Equal As Strings  ${json_object['filterCriteria']}    ${response['body']['filterCriteria']}
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
 
-TP_MEC_MEC030_SRV_V2X_007_OK_04
+TC_MEC_MEC030_SRV_V2X_009_OK_04
     [Documentation] 
     ...  Check that the IUT responds with the requested to create a subscription
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.8.3.4
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
         
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
@@ -328,26 +356,23 @@ TP_MEC_MEC030_SRV_V2X_007_OK_04
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
 
 
-TP_MEC_MEC030_SRV_V2X_007_BR
+TC_MEC_MEC030_SRV_V2X_009_BR
     [Documentation] 
-    ...  Check that the IUT responds with the requested to create a subscription
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.8.3.4
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml        
+    ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+    ...  ETSI GS MEC 030 V3.1.1, clause 7.10.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml        
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
-    ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuMbmsSubscription_BR.json
-    ${body}    Get File    ${path}
-    ${json_object}=	Evaluate  json.loads('''${body}''')  json
-    Send a request for creating a subscription   ${body}
+    Retrieve a subscription using wrong endpoint  ${SUB_PROV_CHG_UU_UNI_ID}
     Check HTTP Response Status Code Is    400
  
           
 ##GET on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId}
-TP_MEC_MEC030_SRV_V2X_008_OK_01
+TC_MEC_MEC030_SRV_V2X_010_OK_01
     [Documentation] 
     ...  Check that the IUT responds with the requested of subscription information when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription  ${SUB_PROV_CHG_UU_UNI_ID}
@@ -358,11 +383,11 @@ TP_MEC_MEC030_SRV_V2X_008_OK_01
     Should Not Be Empty  ${response['body']['filterCriteria']}	
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
 
-TP_MEC_MEC030_SRV_V2X_008_OK_02
+TC_MEC_MEC030_SRV_V2X_010_OK_02
     [Documentation] 
     ...  Check that the IUT responds with the requested of subscription information when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription  ${SUB_PROV_CHG_UU_MBMS_ID}
@@ -374,11 +399,11 @@ TP_MEC_MEC030_SRV_V2X_008_OK_02
     Should Not Be Empty  ${response['body']['_links']['self']['href']}
     
 
-TP_MEC_MEC030_SRV_V2X_008_OK_03
+TC_MEC_MEC030_SRV_V2X_010_OK_03
     [Documentation] 
     ...  Check that the IUT responds with the requested of subscription information when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription  ${SUB_PROV_CHG_PC5_ID}
@@ -389,11 +414,11 @@ TP_MEC_MEC030_SRV_V2X_008_OK_03
     Should Not Be Empty  ${response['body']['filterCriteria']}	
     Should Not Be Empty  ${response['body']['_links']['self']['href']}
 
-TP_MEC_MEC030_SRV_V2X_008_OK_04
+TC_MEC_MEC030_SRV_V2X_010_OK_04
     [Documentation] 
     ...  Check that the IUT responds with the requested of subscription information when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription  ${SUB_V2X_MSG_ID}
@@ -404,22 +429,22 @@ TP_MEC_MEC030_SRV_V2X_008_OK_04
     Should Not Be Empty  ${response['body']['filterCriteria']}	
     Should Not Be Empty  ${response['body']['_links']['self']['href']}
 
-TP_MEC_MEC030_SRV_V2X_008_BR
+TC_MEC_MEC030_SRV_V2X_010_BR
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription     ${SUB_WRONG_PARAM}
     Check HTTP Response Status Code Is    400  
     
 
-TP_MEC_MEC030_SRV_V2X_008_NF
+TC_MEC_MEC030_SRV_V2X_010_NF
     [Documentation] 
     ...  Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.1
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.1
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Retrieve a subscription     ${NOT_EXISTING_SUB_ID}
@@ -428,11 +453,11 @@ TP_MEC_MEC030_SRV_V2X_008_NF
     
 
 ##PUT on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId}
-TP_MEC_MEC030_SRV_V2X_009_OK_01
+TC_MEC_MEC030_SRV_V2X_011_OK_01
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuUniSubscriptionUpdate.json
@@ -446,11 +471,11 @@ TP_MEC_MEC030_SRV_V2X_009_OK_01
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
     Should Be Equal As Strings  ${json_object['filterCriteria']}  ${response['body']['filterCriteria']}
 
-TP_MEC_MEC030_SRV_V2X_009_OK_02
+TC_MEC_MEC030_SRV_V2X_011_OK_02
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuMbmsSubscriptionUpdate.json
@@ -464,11 +489,11 @@ TP_MEC_MEC030_SRV_V2X_009_OK_02
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
     Should Be Equal As Strings  ${json_object['filterCriteria']}  ${response['body']['filterCriteria']}
 
-TP_MEC_MEC030_SRV_V2X_009_OK_03
+TC_MEC_MEC030_SRV_V2X_011_OK_03
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgPc5SubscriptionUpdate.json
@@ -482,11 +507,11 @@ TP_MEC_MEC030_SRV_V2X_009_OK_03
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
     Should Be Equal As Strings  ${json_object['filterCriteria']}   ${response['body']['filterCriteria']}
  
-TP_MEC_MEC030_SRV_V2X_009_OK_04
+TC_MEC_MEC030_SRV_V2X_011_OK_04
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     V2xMsgSubscriptionUpdate.json
@@ -500,11 +525,11 @@ TP_MEC_MEC030_SRV_V2X_009_OK_04
     Should Not Be Empty  ${response['body']['_links']['self']['href']}	
     Should Be Equal As Strings  ${json_object['filterCriteria']}   ${response['body']['filterCriteria']}
  
-TP_MEC_MEC030_SRV_V2X_009_BR
+TC_MEC_MEC030_SRV_V2X_011_BR
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuUniSubscriptionUpdate_BR.json
@@ -513,11 +538,11 @@ TP_MEC_MEC030_SRV_V2X_009_BR
     Update existing subscription   ${SUB_PROV_CHG_UU_UNI_ID}  ${body}
     Check HTTP Response Status Code Is    400
 
-TP_MEC_MEC030_SRV_V2X_009_NF
+TC_MEC_MEC030_SRV_V2X_011_NF
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     ${path}    Catenate    SEPARATOR=      jsons/     ProvChgUuUniSubscriptionUpdate.json
@@ -528,52 +553,52 @@ TP_MEC_MEC030_SRV_V2X_009_NF
     Check HTTP Response Status Code Is    404
   
 ##DELETE on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId}
-TP_MEC_MEC030_SRV_V2X_010_OK_01 
+TC_MEC_MEC030_SRV_V2X_012_OK_01 
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription    ${SUB_PROV_CHG_UU_UNI_ID}
     Check HTTP Response Status Code Is    204  
 
-TP_MEC_MEC030_SRV_V2X_010_OK_02 
+TC_MEC_MEC030_SRV_V2X_012_OK_02 
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription    ${SUB_PROV_CHG_UU_MBMS_ID}
     Check HTTP Response Status Code Is    204  
     
-TP_MEC_MEC030_SRV_V2X_010_OK_03 
+TC_MEC_MEC030_SRV_V2X_012_OK_03 
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription    ${SUB_PROV_CHG_PC5_ID}
     Check HTTP Response Status Code Is    204  
     
-TP_MEC_MEC030_SRV_V2X_010_OK_04 
+TC_MEC_MEC030_SRV_V2X_012_OK_04 
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription    ${SUB_V2X_MSG_ID}
     Check HTTP Response Status Code Is    204  
     
 
-TP_MEC_MEC030_SRV_V2X_010_NF
+TC_MEC_MEC030_SRV_V2X_012_NF
     [Documentation] 
     ...  Check that the IUT responds with the requested of updating subscription when queried by a MEC Application
-    ...  ETSI GS MEC 030 V2.1.1, clause 7.9.3.2
-    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
+    ...  ETSI GS MEC 030 v3.1.1, clause 7.9.3.2
+    ...  https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Remove existing subscription       ${NOT_EXISTING_SUB_ID}
@@ -588,7 +613,7 @@ Retrieve configured provisioning information over Uu unicast using ecgi filter
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Content-Type":"*/*"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Set Headers    {"Content-Length":"0"}
+    Set Headers    {"Content-Length":"0"} 
     GET   ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info?location_info=ecgi,${value}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
@@ -711,7 +736,21 @@ Request predicted QoS
     Post    ${apiRoot}/${apiName}/${apiVersion}/provide_predicted_qos    ${body} 
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    
+
+
+Request v2x message distribution servers
+    [Arguments]    ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    Set Headers    {"Content-Length":"0"}
+    ${path}    Catenate    SEPARATOR=      jsons/     ${content}    .json
+    ${body}    Get File    ${path}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/provide_v2x_msg_distribution_server_info    ${body} 
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
 
 
 Publish V2X message
@@ -734,7 +773,7 @@ Retrieve subscription list information
     Should Be True    ${PIC_MEC_SYSTEM} == 1
     Should Be True    ${PIC_SERVICES} == 1
     Set Headers    {"Accept":"application/json"}
-    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Content-Type":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
     GET     ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type}
     ${output}=    Output    response
@@ -758,6 +797,15 @@ Retrieve a subscription
     GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}  
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}   
+
+Retrieve a subscription using wrong endpoint    
+    [Arguments]    ${subscriptionId}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subs/${subscriptionId}  
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}   
     
 Update existing subscription    
     [Arguments]    ${subscriptionId}    ${body}
diff --git a/MEC030/SRV/V2X/environment/variables.txt b/MEC030/SRV/V2X/environment/variables.txt
index 198cebbdff7d5b1fe505173b11dcded159e64c7f..c4ad9e416d570953495d4c3bb3aae6af04823394 100644
--- a/MEC030/SRV/V2X/environment/variables.txt
+++ b/MEC030/SRV/V2X/environment/variables.txt
@@ -1,13 +1,13 @@
 *** Variables ***
 # Generic variables
 ${SCHEMA}                   http
-${HOST}                     127.0.0.1
-${PORT}                     8082
+${HOST}                     mockoon
+${PORT}                     3005
 ${response}                         {}
 ${TOKEN}                            Basic YWxhZGRpbjpvcGVuc2VzYW1l
 ${apiRoot}        
 ${apiName}        vis
-${apiVersion}     v1
+${apiVersion}     v2
 
 # Specific variables
 ${LOCATION_INFO_QUERY_PARAM} 		location_info 								
diff --git a/MEC030/SRV/V2X/jsons/PredictedQoS_BR.json b/MEC030/SRV/V2X/jsons/PredictedQoS_BR.json
index 1ddbf46a8e611f12eb7effde6f1592b0a3a07996..7d0cdfec420bcb24cc151a49a8976427914183f3 100644
--- a/MEC030/SRV/V2X/jsons/PredictedQoS_BR.json
+++ b/MEC030/SRV/V2X/jsons/PredictedQoS_BR.json
@@ -1,5 +1,5 @@
 {
-	"localityGranularity": "10",
+	"localityGranularity": "11",
 	"routes": [{
 		"routeinfo": [
 		  {
diff --git a/MEC030/SRV/V2X/jsons/PredictedQoS_NF.json b/MEC030/SRV/V2X/jsons/PredictedQoS_NF.json
index 3086833d1bb6ed996a3145b0d1ae1193a4bc6fd6..9ab022a3806a4a670c06519f06e1c7b690feab63 100644
--- a/MEC030/SRV/V2X/jsons/PredictedQoS_NF.json
+++ b/MEC030/SRV/V2X/jsons/PredictedQoS_NF.json
@@ -1,5 +1,5 @@
 {
-	"locationGranularity": "10",
+	"locationGranularity": "12",
 	"routes": [{
 		"routeinfo": [
 		  {
diff --git a/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json b/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json
index 40c61b4dddddff58e2f196ff18c238c73c6b7ed0..cd92101d64a53d5aab5250b802efdf87599eedda 100644
--- a/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json
+++ b/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json
@@ -23,8 +23,8 @@
 		}
 	},
 	"_links": {
-    "self": {
-      "href": "https://127.0.0.1/vis/v1/subscription/1"
-    }
-  }
+		"self": {
+			"href": "https://127.0.0.1/vis/v1/subscription/1"
+		}
+	}
 }
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/jsons/V2XDistributionServers.json b/MEC030/SRV/V2X/jsons/V2XDistributionServers.json
new file mode 100644
index 0000000000000000000000000000000000000000..c8c496ae53714330446dbc517d901011dd752644
--- /dev/null
+++ b/MEC030/SRV/V2X/jsons/V2XDistributionServers.json
@@ -0,0 +1,53 @@
+{
+    "V2xMsgDistributionServerInfo": {
+        "locationInfo": [
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "01010101010101010101010101"
+                    },
+                    "plmn": {
+                        "mcc": "123",
+                        "mnc": "456"
+                    }
+                },
+                "geoArea": {
+                    "latitude": 37.7749,
+                    "longitude": -122.4194
+                }
+            },
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "02020202020202020202020202"
+                    },
+                    "plmn": {
+                        "mcc": "789",
+                        "mnc": "012"
+                    }
+                }
+            }
+        ],
+        "v2xMsgDistributionServer": [
+            {
+                "infoProtocol": {
+                    "msgProtocol": [
+                        0,
+                        1,
+                        2
+                    ],
+                    "protImplementation": "cpp"
+                }
+            },
+            {
+                "infoProtocol": {
+                    "msgProtocol": [
+                        3,
+                        4
+                    ],
+                    "protImplementation": "Python"
+                }
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/jsons/V2XDistributionServers_BR.json b/MEC030/SRV/V2X/jsons/V2XDistributionServers_BR.json
new file mode 100644
index 0000000000000000000000000000000000000000..1362c1b9a11646fffc9cc25b65a45e44ec5476bf
--- /dev/null
+++ b/MEC030/SRV/V2X/jsons/V2XDistributionServers_BR.json
@@ -0,0 +1,61 @@
+{
+    "V2xMsgDistributionServerInfo": {
+        "locationInfo": [
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "01010101010101010101010101"
+                    },
+                    "plmn": {
+                        "mcc": "123",
+                        "mnc": "456"
+                    }
+                },
+                "geoArea": {
+                    "latitude": 37.7749,
+                    "longitude": -122.4194
+                }
+            },
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "02020202020202020202020202"
+                    },
+                    "plmn": {
+                        "mcc": "789",
+                        "mnc": "012"
+                    }
+                }
+            }
+        ],
+        "v2xMsgDistributionServer": [
+            {
+                "infoConnection": {
+                    "ipAddress": "192.168.1.1",
+                    "port_number": 8080
+                },
+                "infoProtocol": {
+                    "msgProtocol": [
+                        0,
+                        1,
+                        2
+                    ],
+                    "protImplementation": "cpp"
+                }
+            },
+            {
+                "infoConnection": {
+                    "ipAddress": "10.0.0.1",
+                    "port_number": 8888
+                },
+                "infoProtocol": {
+                    "msgProtocol": [
+                        3,
+                        4
+                    ],
+                    "protImplementation": "Python"
+                }
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/jsons/V2XDistributionServers_NF.json b/MEC030/SRV/V2X/jsons/V2XDistributionServers_NF.json
new file mode 100644
index 0000000000000000000000000000000000000000..c61e7f7dda91604fa95d8ecb25cade1b709ddd17
--- /dev/null
+++ b/MEC030/SRV/V2X/jsons/V2XDistributionServers_NF.json
@@ -0,0 +1,42 @@
+{
+    "V2xMsgDistributionServerInfo": {
+        "locationInfo": [
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "01010101010101010101010101"
+                    },
+                    "plmn": {
+                        "mcc": "123",
+                        "mnc": "456"
+                    }
+                },
+                "geoArea": {
+                    "latitude": 37.7749,
+                    "longitude": -122.4194
+                }
+            },
+            {
+                "ecgi": {
+                    "cellId": {
+                        "cellId": "02020202020202020202020202"
+                    },
+                    "plmn": {
+                        "mcc": "789",
+                        "mnc": "012"
+                    }
+                }
+            }
+        ],
+        "v2xMsgDistributionServer": [
+            {
+                "infoProtocol": {
+                    "msgProtocol": [
+                        0
+                    ],
+                    "protImplementation": "Java"
+                }
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json b/MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json
index 638f90672157cf744477de3ea153519d2230526f..755cc2ec973ebaa4f097c637c8092fb97190c9c8 100644
--- a/MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json
+++ b/MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json
@@ -1,5 +1,5 @@
 {
-  "stdOrganization": "UNKNOWN_ORG",
+  "stdOrganization": "UNKNOWN_ORGANIZATION",
   "msgType": 2,
   "msgEncodeFormat": "base64",
   "msgContent": "V2X message content"
diff --git a/MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json b/MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json
index f6d972d890c0a61f2d2d2255d8ab383d841290b4..9b305ed47fc9c205122c00010ad4c33730b6e131 100644
--- a/MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json
+++ b/MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json
@@ -6,7 +6,7 @@
         "description": "The provisioning information per location as defined below.",
         "properties": {
           "dstLayer2Id": {
-            "description": "For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321 [i.12].\nPLMN operators coordinate to make sure Destination Layer-2 ID(s) for different V2X services are configured in a consistent manner.",
+            "description": "For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS136321 [i.12].\nPLMN operators coordinate to make sure Destination Layer-2 ID(s) for different V2X services are configured in a consistent manner.",
             "type": "string",
             "x-etsi-mec-cardinality": "1",
             "x-etsi-mec-origin-type": "String"
diff --git a/MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json b/MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json
index 262c1e29e113716356b31756c1cc4bf23c674c62..2905f27b8908b6d84be88877749d6f0f8f159f6f 100644
--- a/MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json
+++ b/MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json
@@ -1,485 +1,485 @@
 {
-        "properties": {
-          "_links": {
-            "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
-            "properties": {
-              "self": {
-                "description": "'This data type represents a type of link'",
-                "type": "object",
-                "required": [
-                  "href"
-                ],
-                "properties": {
-                  "href": {
-                    "description": "The URI referring to the subscription.",
-                    "type": "string",
-                    "format": "uri"
-                  }
+  "properties": {
+    "_links": {
+      "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
+      "properties": {
+        "self": {
+          "description": "'This data type represents a type of link'",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "The URI referring to the subscription.",
+              "type": "string",
+              "format": "uri"
+            }
+          }
+        }
+      },
+      "required": [
+        "self"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "0..1"
+    },
+    "callbackReference": {
+      "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.",
+      "format": "uri",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "URI"
+    },
+    "expiryDeadline": {
+      "properties": {
+        "nanoSeconds": {
+          "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
+          "format": "Uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        },
+        "seconds": {
+          "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
+          "format": "Uint32",
+          "type": "integer",
+          "x-etsi-mec-cardinality": "1",
+          "x-etsi-mec-origin-type": "Uint32"
+        }
+      },
+      "required": [
+        "seconds",
+        "nanoSeconds"
+      ],
+      "type": "object",
+      "x-etsi-ref": "6.5.2"
+    },
+    "filterCriteria": {
+      "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+      "properties": {
+        "locationInfo": {
+          "properties": {
+            "ecgi": {
+              "properties": {
+                "cellId": {
+                  "properties": {
+                    "cellId": {
+                      "description": "E-UTRAN Cell Identity as a bit string (size (28)).",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "required": [
+                    "cellId"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.6.2"
+                },
+                "plmn": {
+                  "properties": {
+                    "mcc": {
+                      "description": "The Mobile Country Code part of PLMN Identity.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "mnc": {
+                      "description": "The Mobile Network Code part of PLMN Identity.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "required": [
+                    "mcc",
+                    "mnc"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.5.4"
                 }
-              }
-            },
-            "required": [
-              "self"
-            ],
-            "type": "object",
-            "x-etsi-mec-cardinality": "0..1"
-          },
-          "callbackReference": {
-            "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.",
-            "format": "uri",
-            "type": "string",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "URI"
-          },
-          "expiryDeadline": {
-            "properties": {
-              "nanoSeconds": {
-                "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
-                "format": "Uint32",
-                "type": "integer",
-                "x-etsi-mec-cardinality": "1",
-                "x-etsi-mec-origin-type": "Uint32"
               },
-              "seconds": {
-                "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
-                "format": "Uint32",
-                "type": "integer",
-                "x-etsi-mec-cardinality": "1",
-                "x-etsi-mec-origin-type": "Uint32"
-              }
+              "required": [
+                "plmn",
+                "cellId"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.5"
             },
-            "required": [
-              "seconds",
-              "nanoSeconds"
-            ],
-            "type": "object",
-            "x-etsi-ref": "6.5.2"
+            "geoArea": {
+              "description": "Information of a geographical area.",
+              "properties": {
+                "latitude": {
+                  "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                  "format": "Float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                },
+                "longitude": {
+                  "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd",
+                  "format": "Float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                }
+              },
+              "required": [
+                "latitude",
+                "longitude"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..1"
+            }
           },
-          "filterCriteria": {
-            "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.",
+          "type": "object",
+          "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.",
+          "x-etsi-ref": "6.5.3"
+        },
+        "neighbourCellInfo": {
+          "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS.",
+          "items": {
             "properties": {
-              "locationInfo": {
+              "ecgi": {
                 "properties": {
-                  "ecgi": {
+                  "cellId": {
                     "properties": {
                       "cellId": {
-                        "properties": {
-                          "cellId": {
-                            "description": "E-UTRAN Cell Identity as a bit string (size (28)).",
-                            "type": "string",
-                            "x-etsi-mec-cardinality": "1",
-                            "x-etsi-mec-origin-type": "String"
-                          }
-                        },
-                        "required": [
-                          "cellId"
-                        ],
-                        "type": "object",
-                        "x-etsi-ref": "6.6.2"
-                      },
-                      "plmn": {
-                        "properties": {
-                          "mcc": {
-                            "description": "The Mobile Country Code part of PLMN Identity.",
-                            "type": "string",
-                            "x-etsi-mec-cardinality": "1",
-                            "x-etsi-mec-origin-type": "String"
-                          },
-                          "mnc": {
-                            "description": "The Mobile Network Code part of PLMN Identity.",
-                            "type": "string",
-                            "x-etsi-mec-cardinality": "1",
-                            "x-etsi-mec-origin-type": "String"
-                          }
-                        },
-                        "required": [
-                          "mcc",
-                          "mnc"
-                        ],
-                        "type": "object",
-                        "x-etsi-ref": "6.5.4"
+                        "description": "E-UTRAN Cell Identity as a bit string (size (28)).",
+                        "type": "string",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "String"
                       }
                     },
                     "required": [
-                      "plmn",
                       "cellId"
                     ],
                     "type": "object",
-                    "x-etsi-ref": "6.5.5"
+                    "x-etsi-ref": "6.6.2"
                   },
-                  "geoArea": {
-                    "description": "Information of a geographical area.",
+                  "plmn": {
                     "properties": {
-                      "latitude": {
-                        "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd",
-                        "format": "Float",
-                        "type": "number",
+                      "mcc": {
+                        "description": "The Mobile Country Code part of PLMN Identity.",
+                        "type": "string",
                         "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "Float"
+                        "x-etsi-mec-origin-type": "String"
                       },
-                      "longitude": {
-                        "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd",
-                        "format": "Float",
-                        "type": "number",
+                      "mnc": {
+                        "description": "The Mobile Network Code part of PLMN Identity.",
+                        "type": "string",
                         "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "Float"
+                        "x-etsi-mec-origin-type": "String"
                       }
                     },
                     "required": [
-                      "latitude",
-                      "longitude"
+                      "mcc",
+                      "mnc"
                     ],
                     "type": "object",
-                    "x-etsi-mec-cardinality": "0..1"
+                    "x-etsi-ref": "6.5.4"
                   }
                 },
+                "required": [
+                  "plmn",
+                  "cellId"
+                ],
                 "type": "object",
-                "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.",
-                "x-etsi-ref": "6.5.3"
+                "x-etsi-ref": "6.5.5"
               },
-              "neighbourCellInfo": {
-                "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS.",
-                "items": {
-                  "properties": {
-                    "ecgi": {
-                      "properties": {
-                        "cellId": {
-                          "properties": {
-                            "cellId": {
-                              "description": "E-UTRAN Cell Identity as a bit string (size (28)).",
-                              "type": "string",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "String"
-                            }
-                          },
-                          "required": [
-                            "cellId"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.2"
-                        },
-                        "plmn": {
-                          "properties": {
-                            "mcc": {
-                              "description": "The Mobile Country Code part of PLMN Identity.",
-                              "type": "string",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "String"
-                            },
-                            "mnc": {
-                              "description": "The Mobile Network Code part of PLMN Identity.",
-                              "type": "string",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "String"
-                            }
-                          },
-                          "required": [
-                            "mcc",
-                            "mnc"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.5.4"
-                        }
-                      },
-                      "required": [
-                        "plmn",
-                        "cellId"
-                      ],
-                      "type": "object",
-                      "x-etsi-ref": "6.5.5"
-                    },
-                    "fddInfo": {
-                      "properties": {
-                        "dlEarfcn": {
-                          "properties": {
-                            "earfcn": {
-                              "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Integer"
-                            }
-                          },
-                          "required": [
-                            "earfcn"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.3"
-                        },
-                        "dlTransmissionBandwidth": {
-                          "properties": {
-                            "transmissionBandwidth": {
-                              "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
-                              "enum": [
-                                1,
-                                2,
-                                3,
-                                4,
-                                5,
-                                6
-                              ],
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Enum"
-                            }
-                          },
-                          "required": [
-                            "transmissionBandwidth"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.4"
-                        },
-                        "ulEarfcn": {
-                          "properties": {
-                            "earfcn": {
-                              "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Integer"
-                            }
-                          },
-                          "required": [
-                            "earfcn"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.3"
-                        },
-                        "ulTransmissionBandwidth": {
-                          "properties": {
-                            "transmissionBandwidth": {
-                              "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
-                              "enum": [
-                                1,
-                                2,
-                                3,
-                                4,
-                                5,
-                                6
-                              ],
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Enum"
-                            }
-                          },
-                          "required": [
-                            "transmissionBandwidth"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.4"
-                        }
-                      },
-                      "required": [
-                        "ulEarfcn",
-                        "dlEarfcn",
-                        "ulTransmissionBandwidth",
-                        "dlTransmissionBandwidth"
-                      ],
-                      "type": "object",
-                      "x-etsi-ref": "6.5.6"
-                    },
-                    "mbmsServiceAreaIdentity": {
-                      "description": "Supported MBMS Service Area Identities in the cell.",
-                      "items": {
-                        "type": "string"
-                      },
-                      "minItems": 1,
-                      "type": "array",
-                      "x-etsi-mec-cardinality": "1..N",
-                      "x-etsi-mec-origin-type": "String"
+              "fddInfo": {
+                "properties": {
+                  "dlEarfcn": {
+                    "properties": {
+                      "earfcn": {
+                        "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Integer"
+                      }
                     },
-                    "pci": {
-                      "description": "Physical Cell Identifier.",
-                      "type": "integer",
-                      "x-etsi-mec-cardinality": "1",
-                      "x-etsi-mec-origin-type": "Integer"
+                    "required": [
+                      "earfcn"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.6.3"
+                  },
+                  "dlTransmissionBandwidth": {
+                    "properties": {
+                      "transmissionBandwidth": {
+                        "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
+                        "enum": [
+                          1,
+                          2,
+                          3,
+                          4,
+                          5,
+                          6
+                        ],
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Enum"
+                      }
                     },
-                    "plmn": {
-                      "properties": {
-                        "mcc": {
-                          "description": "The Mobile Country Code part of PLMN Identity.",
-                          "type": "string",
-                          "x-etsi-mec-cardinality": "1",
-                          "x-etsi-mec-origin-type": "String"
-                        },
-                        "mnc": {
-                          "description": "The Mobile Network Code part of PLMN Identity.",
-                          "type": "string",
-                          "x-etsi-mec-cardinality": "1",
-                          "x-etsi-mec-origin-type": "String"
-                        }
-                      },
-                      "required": [
-                        "mcc",
-                        "mnc"
-                      ],
-                      "type": "object",
-                      "x-etsi-ref": "6.5.4"
+                    "required": [
+                      "transmissionBandwidth"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.6.4"
+                  },
+                  "ulEarfcn": {
+                    "properties": {
+                      "earfcn": {
+                        "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Integer"
+                      }
                     },
-                    "tddInfo": {
-                      "properties": {
-                        "earfcn": {
-                          "properties": {
-                            "earfcn": {
-                              "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Integer"
-                            }
-                          },
-                          "required": [
-                            "earfcn"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.3"
-                        },
-                        "subframeAssignment": {
-                          "description": "Uplink-downlink subframe configuration information.",
-                          "type": "string",
-                          "x-etsi-mec-cardinality": "1",
-                          "x-etsi-mec-origin-type": "String"
-                        },
-                        "transmissionBandwidth": {
-                          "properties": {
-                            "transmissionBandwidth": {
-                              "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
-                              "enum": [
-                                1,
-                                2,
-                                3,
-                                4,
-                                5,
-                                6
-                              ],
-                              "type": "integer",
-                              "x-etsi-mec-cardinality": "1",
-                              "x-etsi-mec-origin-type": "Enum"
-                            }
-                          },
-                          "required": [
-                            "transmissionBandwidth"
-                          ],
-                          "type": "object",
-                          "x-etsi-ref": "6.6.4"
-                        }
-                      },
-                      "required": [
-                        "earfcn",
-                        "transmissionBandwidth",
-                        "subframeAssignment"
-                      ],
-                      "type": "object",
-                      "x-etsi-ref": "6.5.7"
-                    }
+                    "required": [
+                      "earfcn"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.6.3"
                   },
-                  "required": [
-                    "plmn",
-                    "ecgi",
-                    "pci",
-                    "fddInfo",
-                    "tddInfo",
-                    "mbmsServiceAreaIdentity"
-                  ],
-                  "type": "object",
-                  "x-etsi-ref": "6.5.11"
+                  "ulTransmissionBandwidth": {
+                    "properties": {
+                      "transmissionBandwidth": {
+                        "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
+                        "enum": [
+                          1,
+                          2,
+                          3,
+                          4,
+                          5,
+                          6
+                        ],
+                        "type": "integer",
+                        "x-etsi-mec-cardinality": "1",
+                        "x-etsi-mec-origin-type": "Enum"
+                      }
+                    },
+                    "required": [
+                      "transmissionBandwidth"
+                    ],
+                    "type": "object",
+                    "x-etsi-ref": "6.6.4"
+                  }
+                },
+                "required": [
+                  "ulEarfcn",
+                  "dlEarfcn",
+                  "ulTransmissionBandwidth",
+                  "dlTransmissionBandwidth"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.5.6"
+              },
+              "mbmsServiceAreaIdentity": {
+                "description": "Supported MBMS Service Area Identities in the cell.",
+                "items": {
+                  "type": "string"
                 },
-                "minItems": 0,
+                "minItems": 1,
                 "type": "array",
-                "x-etsi-mec-cardinality": "0..N",
-                "x-etsi-mec-origin-type": "UuMbmsNeighbourCellInfo"
+                "x-etsi-mec-cardinality": "1..N",
+                "x-etsi-mec-origin-type": "String"
               },
-              "v2xServerUsd": {
+              "pci": {
+                "description": "Physical Cell Identifier.",
+                "type": "integer",
+                "x-etsi-mec-cardinality": "1",
+                "x-etsi-mec-origin-type": "Integer"
+              },
+              "plmn": {
                 "properties": {
-                  "sdpInfo": {
-                    "description": "SDP with IP multicast address and port number used for V2X communication via MBMS.",
+                  "mcc": {
+                    "description": "The Mobile Country Code part of PLMN Identity.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "String"
+                  },
+                  "mnc": {
+                    "description": "The Mobile Network Code part of PLMN Identity.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
+                    "x-etsi-mec-origin-type": "String"
+                  }
+                },
+                "required": [
+                  "mcc",
+                  "mnc"
+                ],
+                "type": "object",
+                "x-etsi-ref": "6.5.4"
+              },
+              "tddInfo": {
+                "properties": {
+                  "earfcn": {
                     "properties": {
-                      "ipMulticastAddress": {
-                        "description": "",
-                        "type": "string",
+                      "earfcn": {
+                        "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)",
+                        "type": "integer",
                         "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
-                      },
-                      "portNumber": {
-                        "description": "",
-                        "type": "string",
-                        "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
+                        "x-etsi-mec-origin-type": "Integer"
                       }
                     },
                     "required": [
-                      "ipMulticastAddress",
-                      "portNumber"
+                      "earfcn"
                     ],
                     "type": "object",
-                    "x-etsi-mec-cardinality": "1"
+                    "x-etsi-ref": "6.6.3"
                   },
-                  "serviceAreaIdentifier": {
-                    "description": "A list of service area identifier for the applicable MBMS broadcast area.",
-                    "items": {
-                      "type": "string"
-                    },
-                    "minItems": 1,
-                    "type": "array",
-                    "x-etsi-mec-cardinality": "1..N",
+                  "subframeAssignment": {
+                    "description": "Uplink-downlink subframe configuration information.",
+                    "type": "string",
+                    "x-etsi-mec-cardinality": "1",
                     "x-etsi-mec-origin-type": "String"
                   },
-                  "tmgi": {
-                    "description": "Temporary Mobile Group Identity (TMGI), which is used within MBMS to uniquely identify Multicast and Broadcast bearer services.",
+                  "transmissionBandwidth": {
                     "properties": {
-                      "mbmsServiceId": {
-                        "description": "MBMS Service ID consisting of three octets.",
-                        "type": "string",
-                        "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
-                      },
-                      "mcc": {
-                        "description": "The Mobile Country Code part of PLMN Identity.",
-                        "type": "string",
-                        "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
-                      },
-                      "mnc": {
-                        "description": "The Mobile Network Code part of PLMN Identity.",
-                        "type": "string",
+                      "transmissionBandwidth": {
+                        "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)",
+                        "enum": [
+                          1,
+                          2,
+                          3,
+                          4,
+                          5,
+                          6
+                        ],
+                        "type": "integer",
                         "x-etsi-mec-cardinality": "1",
-                        "x-etsi-mec-origin-type": "String"
+                        "x-etsi-mec-origin-type": "Enum"
                       }
                     },
                     "required": [
-                      "mbmsServiceId",
-                      "mcc",
-                      "mnc"
+                      "transmissionBandwidth"
                     ],
                     "type": "object",
-                    "x-etsi-mec-cardinality": ""
+                    "x-etsi-ref": "6.6.4"
                   }
                 },
                 "required": [
-                  "tmgi",
-                  "serviceAreaIdentifier",
-                  "sdpInfo"
+                  "earfcn",
+                  "transmissionBandwidth",
+                  "subframeAssignment"
                 ],
                 "type": "object",
-                "x-etsi-ref": "6.5.10"
+                "x-etsi-ref": "6.5.7"
               }
             },
             "required": [
-              "locationInfo",
-              "v2xServerUsd"
+              "plmn",
+              "ecgi",
+              "pci",
+              "fddInfo",
+              "tddInfo",
+              "mbmsServiceAreaIdentity"
             ],
             "type": "object",
-            "x-etsi-mec-cardinality": "1"
+            "x-etsi-ref": "6.5.11"
           },
-          "subscriptionType": {
-            "description": "Shall be set to \"ProvChgUuMbmsSubscription\".",
-            "type": "string",
-            "x-etsi-mec-cardinality": "1",
-            "x-etsi-mec-origin-type": "String"
-          }
+          "minItems": 0,
+          "type": "array",
+          "x-etsi-mec-cardinality": "0..N",
+          "x-etsi-mec-origin-type": "UuMbmsNeighbourCellInfo"
         },
-        "required": [
-          "subscriptionType",
-          "callbackReference",
-          "filterCriteria"
-        ],
-        "type": "object",
-        "x-etsi-ref": "6.3.3"
-      }
\ No newline at end of file
+        "v2xServerUsd": {
+          "properties": {
+            "sdpInfo": {
+              "description": "SDP with IP multicast address and port number used for V2X communication via MBMS.",
+              "properties": {
+                "ipMulticastAddress": {
+                  "description": "",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "portNumber": {
+                  "description": "",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "ipMulticastAddress",
+                "portNumber"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "1"
+            },
+            "serviceAreaIdentifier": {
+              "description": "A list of service area identifier for the applicable MBMS broadcast area.",
+              "items": {
+                "type": "string"
+              },
+              "minItems": 1,
+              "type": "array",
+              "x-etsi-mec-cardinality": "1..N",
+              "x-etsi-mec-origin-type": "String"
+            },
+            "tmgi": {
+              "description": "Temporary Mobile Group Identity (TMGI), which is used within MBMS to uniquely identify Multicast and Broadcast bearer services.",
+              "properties": {
+                "mbmsServiceId": {
+                  "description": "MBMS Service ID consisting of three octets.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "mcc": {
+                  "description": "The Mobile Country Code part of PLMN Identity.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "mnc": {
+                  "description": "The Mobile Network Code part of PLMN Identity.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "mbmsServiceId",
+                "mcc",
+                "mnc"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": ""
+            }
+          },
+          "required": [
+            "tmgi",
+            "serviceAreaIdentifier",
+            "sdpInfo"
+          ],
+          "type": "object",
+          "x-etsi-ref": "6.5.10"
+        }
+      },
+      "required": [
+        "locationInfo",
+        "v2xServerUsd"
+      ],
+      "type": "object",
+      "x-etsi-mec-cardinality": "1"
+    },
+    "subscriptionType": {
+      "description": "Shall be set to \"ProvChgUuMbmsSubscription\".",
+      "type": "string",
+      "x-etsi-mec-cardinality": "1",
+      "x-etsi-mec-origin-type": "String"
+    }
+  },
+  "required": [
+    "subscriptionType",
+    "callbackReference",
+    "filterCriteria"
+  ],
+  "type": "object",
+  "x-etsi-ref": "6.3.3"
+}
\ No newline at end of file
diff --git a/MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json b/MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json
index c2892e10c7ab9eb64ae52c9d93d26e525a137ab7..38b44481914cb7b99978a0da80383867985aa9cb 100644
--- a/MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json
+++ b/MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json
@@ -20,7 +20,7 @@
         "subscriptions": {
           "type": "array",
           "items": {
-            "description": "The service consumer’s subscriptions.",
+            "description": "The service consumers subscriptions.",
             "properties": {
               "href": {
                 "description": "The URI referring to the subscription.",
diff --git a/MEC030/SRV/V2X/schemas/V2XDistributionServers.schema.json b/MEC030/SRV/V2X/schemas/V2XDistributionServers.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..06233dd4c89719252929ef74ada3a78840377485
--- /dev/null
+++ b/MEC030/SRV/V2X/schemas/V2XDistributionServers.schema.json
@@ -0,0 +1,172 @@
+{
+    "properties": {
+      "locationInfo": {
+        "description": "Location information to identify a particular geographical area of interest to the service consumer for receiving V2X messages.",
+        "items": {
+          "properties": {
+            "ecgi": {
+              "properties": {
+                "cellId": {
+                  "properties": {
+                    "cellId": {
+                      "description": "E-UTRAN Cell Identity as a bit string (size (28)).",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "required": [
+                    "cellId"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.6.2"
+                },
+                "plmn": {
+                  "properties": {
+                    "mcc": {
+                      "description": "The Mobile Country Code part of PLMN Identity.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    },
+                    "mnc": {
+                      "description": "The Mobile Network Code part of PLMN Identity.",
+                      "type": "string",
+                      "x-etsi-mec-cardinality": "1",
+                      "x-etsi-mec-origin-type": "String"
+                    }
+                  },
+                  "required": [
+                    "mcc",
+                    "mnc"
+                  ],
+                  "type": "object",
+                  "x-etsi-ref": "6.5.4"
+                }
+              },
+              "required": [
+                "plmn",
+                "cellId"
+              ],
+              "type": "object",
+              "x-etsi-ref": "6.5.5"
+            },
+            "geoArea": {
+              "description": "Information of a geographical area.",
+              "properties": {
+                "latitude": {
+                  "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                },
+                "longitude": {
+                  "description": "Longitude (DATUM = WGS84) -180 to 180 in decimal degree format DDD.ddd",
+                  "format": "float",
+                  "type": "number",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "Float"
+                }
+              },
+              "required": [
+                "latitude",
+                "longitude"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            }
+          },
+          "type": "object",
+          "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.",
+          "x-etsi-ref": "6.5.3"
+        },
+        "minItems": 0,
+        "type": "array",
+        "x-etsi-mec-cardinality": "0..N",
+        "x-etsi-mec-origin-type": "LocationInfo"
+      },
+      "v2xMsgDistributionServer": {
+        "description": "Describes the information of the V2X Message Distribution Servers supported by the service consumer for direct communication.",
+        "items": {
+          "properties": {
+            "infoConnection": {
+              "description": "Connection information of the V2X Message Distribution Server the service consumer can use for direct connection. Shall only be included in the response.",
+              "properties": {
+                "ipAddress": {
+                  "description": "IP address of the V2X Message Distribution Server.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                },
+                "port_number": {
+                  "description": "Port number of the V2X Message Distribution Server.",
+                  "x-etsi-mec-cardinality'": "1",
+                  "x-etsi-mec-origin-type'": "Integer (0..65535)",
+                  "type": "integer"
+                }
+              },
+              "required": [
+                "ipAddress",
+                "port_number"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "0..1",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            },
+            "infoProtocol": {
+              "description": "Specifics of the application layer protocol of V2X Message Distribution Server.",
+              "properties": {
+                "msgProtocol": {
+                  "description": "Numerical value corresponding to the application layer protocol supported by the service consumer. For the msgProtocol, the following values are currently defined (see note): 0 = MQTT v3.1.0 1 = MQTT v3.1.1 2 = MQTT v5 3 = MQTT-SN 4 = AMQP 1.0",
+                  "items": {
+                    "enum": [
+                      0,
+                      1,
+                      2,
+                      3,
+                      4
+                    ],
+                    "type": "integer"
+                  },
+                  "minItems": 1,
+                  "type": "array",
+                  "x-etsi-mec-cardinality": "1..N",
+                  "x-etsi-mec-origin-type": "Enum"
+                },
+                "protImplementation": {
+                  "description": "Implementation specifics of application layer protocol, e.g. programming language.",
+                  "type": "string",
+                  "x-etsi-mec-cardinality": "1",
+                  "x-etsi-mec-origin-type": "String"
+                }
+              },
+              "required": [
+                "msgProtocol",
+                "protImplementation"
+              ],
+              "type": "object",
+              "x-etsi-mec-cardinality": "1",
+              "x-etsi-mec-origin-type": "Structure (inlined)"
+            }
+          },
+          "required": [
+            "infoProtocol"
+          ],
+          "type": "object",
+          "x-etsi-notes": "NOTE:\tOther application layer protocols (and versions thereof) may be added as needed.",
+          "x-etsi-ref": "6.5.16"
+        },
+        "minItems": 1,
+        "type": "array",
+        "x-etsi-mec-cardinality": "1..N",
+        "x-etsi-mec-origin-type": "V2xMsgDistributionServer"
+      }
+    },
+    "required": [
+      "v2xMsgDistributionServer"
+    ],
+    "type": "object",
+    "x-etsi-ref": "6.2.5"
+  }
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot b/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot
new file mode 100644
index 0000000000000000000000000000000000000000..ba938d8dd0c1c022fdd7417382631990850299c3
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot
@@ -0,0 +1,307 @@
+''[Documentation]   robot --outputdir ../../../outputs ./RegisteredDevices.robot
+...    Test Suite to validate the Registered IOT Device (IOTDEV) operations.
+
+*** Settings ***
+Resource    environment/variables.txt
+Resource    ../../../../pics.txt
+Resource    ../../../../GenericKeywords.robot
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem    
+
+
+Test Setup       Test Setup   ${DEVICE_ID_PLACEHOLDER}   DeviceInfo      ${NO_ACTION}
+Test Teardown    Test TearDown    ${DEVICE_ID_PLACEHOLDER}   DeviceInfo      ${NO_ACTION}
+
+
+*** Test Cases ***
+TC_MEC_MEC033_IOTS_IOTDEV_001_OK_01
+    [Documentation]
+    ...  Check that the IUT responds with the list of registered IoT devices 
+    ...  when queried by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    
+    [Setup]   Test Setup    ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Retrieve all registered IOT Device information
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[enabled]    ${False}
+    END
+    [TearDown]  Test TearDown    ${DEVICE_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+TC_MEC_MEC033_IOTS_IOTDEV_001_OK_02
+    [Documentation]
+    ...  "Check that the IUT responds with the list of registered IoT devices when queried using a filter by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup    ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Retrieve all registered IOT Device information with filter or query param   ${FILTER_ON_ENABLE}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfoList
+
+   FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[enabled]    ${False}
+   END
+   [TearDown]  Test TearDown    ${DEVICE_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+TC_MEC_MEC033_IOTS_IOTDEV_001_OK_03
+    [Documentation]
+    ...  "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer filtering one field
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Retrieve all registered IOT Device information with filter or query param   ${DEVICE_ID_FIELDS}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfoList
+    [TearDown]  Test TearDown    ${DEVICE_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+TC_MEC_MEC033_IOTS_IOTDEV_001_OK_04
+    [Documentation]
+    ...  "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer filtering one field
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Retrieve all registered IOT Device information with filter or query param   ${FIELDS_AND_FILTER}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[enabled]    ${False}
+    END
+    [TearDown]  Test TearDown    ${DEVICE_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+TC_MEC_MEC033_IOTS_IOTDEV_002_OK
+    [Documentation]
+    ...  Check that the IUT registers the information of an IoT device when requested by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.4
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${DEVICE_ID}   ${None}       ${REMOVE_ACTION}
+      
+    Register IOT Device information     DeviceInfo
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is  DeviceInfo
+
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    ${IMSI}   Get value entry from JSON file    DeviceInfo  imsi
+    ${SUPI}   Get value entry from JSON file    DeviceInfo  supi
+    
+    Should Be Equal As Strings    ${response['body']['deviceId']}   ${DEVICE_ID_VALUE}
+    Should Be Equal As Strings    ${response['body']['imsi']}       ${IMSI}
+    Should Be Equal As Strings    ${response['body']['supi']}       ${SUPI}
+    Should Be Equal As Strings    ${response['body']['enabled']}    ${False}
+    [TearDown]  Test TearDown    ${DEVICE_ID_VALUE}   ${None}       ${REMOVE_ACTION}
+
+
+       
+TC_MEC_MEC033_IOTS_IOTDEV_002_BR
+    [Documentation]
+    ...  Check that the IUT returns an error when Service Consumer request to register an IoT device with incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.3.3.4
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    ## No setup needed
+    Register IOT Device information     DeviceInfoBR
+    Check HTTP Response Status Code Is    400
+    ## No Teardown needed: the IUT has not stored information because of BR error.                
+
+TC_MEC_MEC033_IOTS_IOTDEV_003_OK
+    [Documentation]
+    ...  Check that the IUT returns the IoT device information when requested by Service Consumer specifying the device identifier
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Retrieve specific registered IOT Device information  ${DEVICE_ID_VALUE}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfo
+    Should Be Equal As Strings    ${response['body']['deviceId']}  ${DEVICE_ID_VALUE}
+    [TearDown]   Test TearDown   ${DEVICE_ID_VALUE}    ${None}      ${REMOVE_ACTION}
+    
+
+TC_MEC_MEC033_IOTS_IOTDEV_003_NF
+    [Documentation]
+    ...  Check that the IUT returns error when Service Consumer request to retrieve a not registered IoT device
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${NOT_EXISTING_DEVICE_ID}    ${None}      ${REMOVE_ACTION}
+    Retrieve specific registered IOT Device information  ${NOT_EXISTING_DEVICE_ID}
+    Check HTTP Response Status Code Is    404
+    ## No Teardown needed: the IUT has not stored information because of NF error.  
+
+
+TC_MEC_MEC033_IOTS_IOTDEV_004_OK
+    [Documentation]
+    ...  Check that the IUT returns an error when Service Consumer request to register an IoT device with incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.2
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    ${TRAFFIC_RULE_DES}   Get value entry from JSON file    DeviceInfoUpdate  TrafficRuleDescriptor
+
+    Update IOT Device information     ${DEVICE_ID_VALUE}   DeviceInfoUpdate
+
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  DeviceInfo
+    Should Be Equal As Strings    ${response['body']['TrafficRuleDescriptor']['trafficRuleId']}    ${TRAFFIC_RULE_DES['trafficRuleId']}
+    Should Be Equal As Strings    ${response['body']['TrafficRuleDescriptor']['filterType']}    ${TRAFFIC_RULE_DES['filterType']}
+    Should Be Equal As Strings    ${response['body']['TrafficRuleDescriptor']['action']}    ${TRAFFIC_RULE_DES['action']}
+    Should Be Equal As Strings    ${response['body']['TrafficRuleDescriptor']['trafficFilter']}    ${TRAFFIC_RULE_DES['trafficFilter']}
+    Should Be Equal As Strings    ${response['body']['TrafficRuleDescriptor']['enabled']}    ${True}
+    [TearDown]   Test TearDown   ${DEVICE_ID_VALUE}    DeviceInfo      ${REMOVE_ACTION}
+    
+
+TC_MEC_MEC033_IOTS_IOTDEV_004_NF
+    [Documentation]
+    ...  Check that the IUT returns an error when a Service Consumer requests to update a not registered IoT device
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.2
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${NOT_EXISTING_DEVICE_ID}    ${None}      ${REMOVE_ACTION}   
+    Update IOT Device information     ${NOT_EXISTING_DEVICE_ID}   DeviceInfoUpdate
+    Check HTTP Response Status Code Is    404
+    ##No teardown
+
+TC_MEC_MEC033_IOTS_IOTDEV_004_BR
+    [Documentation]
+    ...  Check that the IUT returns an error when a Service Consumer requests to update an existing IoT device with incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.2
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${NOT_EXISTING_DEVICE_ID}    ${None}      ${REMOVE_ACTION} 
+    Update IOT Device information     ${NOT_EXISTING_DEVICE_ID}   DeviceInfoUpdateBR
+    Check HTTP Response Status Code Is    400
+    ## No Teardown needed: the IUT has not stored information because of NF error. 
+
+TC_MEC_MEC033_IOTS_IOTDEV_005_OK
+    [Documentation]
+    ...  Check that the IUT deregisters an IoT device information when requested by a Service Consumer specifying the IoT registered device identifier
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.5
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${None}    DeviceInfo      ${REGISTER_ACTION}
+    ${DEVICE_ID_VALUE}   Get value entry from JSON file    DeviceInfo  deviceId
+    Deregister IOT Device information   ${DEVICE_ID_VALUE}
+    Check HTTP Response Status Code Is    204
+    ## No Teardown needed 
+
+
+TC_MEC_MEC033_IOTS_IOTDEV_005_NF
+    [Documentation]
+    ...  "Check that the IUT returns an error when a Service Consumer requests to deregisters an IoT device using incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.4.3.5
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]   Test Setup   ${NOT_EXISTING_DEVICE_ID}    ${None}      ${REMOVE_ACTION}
+    Deregister IOT Device information   ${NOT_EXISTING_DEVICE_ID}
+    Check HTTP Response Status Code Is    404
+    ##No tearDown needed
+                
+############################################################################
+
+      
+*** Keywords ***
+Test Setup 
+    [Arguments]     ${deviceId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/registered_devices   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_devices/${deviceId}
+   END
+    
+Test Teardown  
+    [Arguments]     ${deviceId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/registered_devices   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_devices/${deviceId}
+   END
+      
+
+Retrieve all registered IOT Device information
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/registered_devices
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Retrieve all registered IOT Device information with filter or query param
+    [Arguments]     ${filter_and_query_param}  
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/registered_devices?${filter_and_query_param}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Retrieve specific registered IOT Device information  
+    [Arguments]     ${deviceId}  
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/registered_devices/${deviceId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Register IOT Device information
+    [Arguments]     ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST   ${apiRoot}/${apiName}/${apiVersion}/registered_devices   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}    
+
+Update IOT Device information
+    [Arguments]     ${deviceId}    ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    PUT   ${apiRoot}/${apiName}/${apiVersion}/registered_devices/${deviceId}   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}   
+    
+
+Deregister IOT Device information  
+    [Arguments]     ${deviceId}  
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_devices/${deviceId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+#####
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/environment/variables.txt b/MEC033/MEX/IOTS/IOTDEV/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ad96cdf8f02061534454c5624ebdbb2440eeacb4
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/environment/variables.txt
@@ -0,0 +1,21 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                 http
+${HOST}                   127.0.0.1
+${PORT}                   8084
+${response}                         {}
+${TOKEN}                  asic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}                amsi
+${apiVersion}             v1
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+
+${FILTER_ON_ENABLE}     (eq,enabled,false) 
+${DEVICE_ID_FIELDS}     fields=deviceId
+${DEVICE_ID} 			deviceId
+${FIELDS_AND_FILTER}        fields=deviceId&filter=(eq,enabled,false)
+${DEVICE_ID_PLACEHOLDER}    PLACEHOLDER_DEVICEID
+${NOT_EXISTING_DEVICE_ID}   notExistingDeviceId
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfo.json b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..b49b9ffcbed1e8a6fe02a85fa8fe82356491966c
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfo.json
@@ -0,0 +1,6 @@
+{
+  "deviceAuthenticationInfo": "Some custom info",
+  "deviceId": "deviceId",
+  "imsi": "310170845466094",
+  "supi": "310170845466094"
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoBR.json b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..fbba9ffcbd338429f68f0def6c8552cd6cae0822
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoBR.json
@@ -0,0 +1,7 @@
+{
+  "deviceAuthenticationInfo": "Some custom info",
+  "deviceId": "deviceId",
+  "enabled":"false",
+  "imsi": "310170845466094",
+  "supi": "310170845466094"
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdate.json b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..385caf36b6348f0e2f7073bb133127c1b0eb3e33
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdate.json
@@ -0,0 +1,15 @@
+{
+    "deviceAuthenticationInfo": "Some custom info",
+    "deviceId": "deviceId",
+    "imsi": "310170845466094",
+    "supi": "310170845466094",
+    "requestedIotPlatformId": "iotPlatform",
+    "TrafficRuleDescriptor": {
+        "trafficRuleId": "trafficRule123",
+        "filterType": "FLOW",
+        "action": "FORWARD_AS_IS",
+        "trafficFilter": {
+            "qCI": 5
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdateBR.json b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdateBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..aba5992659422bf6a4d2e60b2b14fc551c27600a
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/jsons/DeviceInfoUpdateBR.json
@@ -0,0 +1,16 @@
+{
+    "deviceAuthenticationInfo": "Some custom info",
+    "deviceId": "deviceId",
+    "imsi": "310170845466094",
+    "supi": "310170845466094",
+    "enabled":true,
+    "requestedIotPlatformId": "iotPlatform",
+    "TrafficRuleDescriptor": {
+        "trafficRuleId": "trafficRule123",
+        "filterType": "FLOW",
+        "action": "FORWARD_AS_IS",
+        "trafficFilter": {
+            "qCI": 5
+        }
+    }
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfo.schema.json b/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfo.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..337449155ad9e16adaa83ac16bf76e68cc7eb500
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfo.schema.json
@@ -0,0 +1,427 @@
+{
+    "type": "object",
+    "properties": {
+        "deviceAuthenticationInfo": {
+            "description": "Information needed for secondary authentication of the IoT device to the data network - see ETSI TS 129 561 [i.4] and ETSI TS 129 061 [i.5] for 5G and LTE procedures, respectively. This attribute is implementation dependent and should be logically linked to the identifiers of the IoT device listed hereafter.",
+            "type": "string"
+        },
+        "deviceMetadata": {
+            "description": "Additional information about the IoT device. This attribute is implementation dependent and may be expressed as an array of keyvalue pairs. ",
+            "type": "array",
+            "items": {
+                "description": "Key-value pairs for device metadata",
+                "type": "object",
+                "properties": {
+                    "key": {
+                        "type": "string"
+                    },
+                    "value": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "gpsi": {
+            "description": "GPSI of the IoT device if 5G-enabled (see note 1).",
+            "type": "string"
+        },
+        "pei": {
+            "description": "PEI of the IoT device if 5G-enabled (see note 1).",
+            "type": "string"
+        },
+        "supi": {
+            "description": "SUPI of the IoT device if 5G-enabled (see note 1).",
+            "type": "string"
+        },
+        "msisdn": {
+            "description": "MSISDN of the IoT device if LTE-enabled (see note 1).",
+            "type": "string"
+        },
+        "imei": {
+            "description": "IMEI of the IoT device if LTE-enabled (see note 1).",
+            "type": "string"
+        },
+        "imsi": {
+            "description": "IMSI of the IoT device if LTE-enabled (see note 1).",
+            "type": "string"
+        },
+        "iccid": {
+            "description": "ICCID of the IoT device (see note 1).",
+            "type": "string"
+        },
+        "deviceId": {
+            "description": "Human-readable identifier of the IoT device.",
+            "type": "string"
+        },
+        "requestedMecTrafficRule": {
+            "description": "MEC traffic rules the IoT device is requested to be associated to (see note 2). The data type definition is as per ETSI GS MEC 010-2 [i.6].",
+            "type": "array",
+            "items": {
+                "title": "TrafficRuleDescriptor",
+                "type": "object",
+                "properties": {
+                    "trafficRuleId": {
+                        "description": "Identifies the traffic rule.",
+                        "type": "string"
+                    },
+                    "filterType": {
+                        "type": "string",
+                        "description": "Definition of filter type: per FLOW or PACKET\n\nIf it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and downstream (e.g. EPC->UE) packets are handled by the same context.\n",
+                        "enum": [
+                            "per FLOW",
+                            "per PACKET"
+                        ]
+                    },
+                    "priority": {
+                        "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1.",
+                        "type": "integer"
+                    },
+                    "trafficFilter": {
+                        "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host.",
+                        "type": "array",
+                        "items": {
+                            "title": "TrafficFilter",
+                            "type": "object",
+                            "properties": {
+                                "srcAddress": {
+                                    "description": "An IP address or a range of IP addresses.\nFor IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.\nFor IPv6, the IP address could be an IP prefix, or a range of IP prefixes.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "dstAddress": {
+                                    "description": "An IP address or a range of IP addresses.\nFor IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.\nFor IPv6, the IP address could be an IP prefix, or a range of IP prefixes.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "srcPort": {
+                                    "description": "A port or a range of ports.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "dstPort": {
+                                    "description": "A port or a range of ports.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "protocol": {
+                                    "description": "Specify the protocol of the traffic filter.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "tag": {
+                                    "description": "Used for tag based traffic rule.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "uri": {
+                                    "description": "An URI label, in application layer, i.e. in HTTP message, is used to filter the traffic.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "packetLabel": {
+                                    "description": "A customized packet label in network layer, as defined by the owner of the MEC platform, is used to filter the traffic.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "srcTunnelAddress": {
+                                    "description": "Used for GTP tunnel based traffic rule.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "tgtTunnelAddress": {
+                                    "description": "Used for GTP tunnel based traffic rule.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "srcTunnelPort": {
+                                    "description": "Used for GTP tunnel based traffic rule.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "dstTunnelPort": {
+                                    "description": "Used for GTP tunnel based traffic rule.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "qCI": {
+                                    "description": "Used to match all packets that have the same QCI.",
+                                    "type": "integer"
+                                },
+                                "dSCP": {
+                                    "description": "Used to match all IPv4 packets that have the same DSCP.",
+                                    "type": "integer"
+                                },
+                                "tC": {
+                                    "description": "Used to match all IPv6 packets that have the same TC.",
+                                    "type": "integer"
+                                }
+                            }
+                        }
+                    },
+                    "action": {
+                        "type": "string",
+                        "description": "Identifies the action of the MEC host data plane, when a packet matches the trafficFilter, the example actions include:\nDROP,\nFORWARD_DECAPSULATED,\nFORWARD_ENCAPSULATED,\nPASSTHROUGH,\nDUPLICATE_DECAPSULATED,\nDUPLICATE_ENCAPSULATED ",
+                        "enum": [
+                            "SEE_DESCRIPTION"
+                        ]
+                    },
+                    "dstInterface": {
+                        "description'": "Describes the destination interface information. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. If the action is DROP, no value shall be provided.",
+                        "title": "InterfaceDescriptor",
+                        "type": "object",
+                        "properties": {
+                            "interfaceType": {
+                                "type": "string",
+                                "description": "Type of interface: TUNNEL, MAC, IP, etc.",
+                                "enum": [
+                                    "TUNNEL",
+                                    "MAC",
+                                    "IP"
+                                ]
+                            },
+                            "tunnelInfo": {
+                                "description'": "Included only if the destination address type is tunnel.",
+                                "title": "TunnelInfo",
+                                "type": "object",
+                                "properties": {
+                                    "tunnelType": {
+                                        "type": "string",
+                                        "description": "Type of tunnel: GTP-U, GRE, etc.",
+                                        "enum": [
+                                            "GTP-U",
+                                            "GRE"
+                                        ]
+                                    },
+                                    "tunnelDstAddress": {
+                                        "description": "Destination address of the tunnel.",
+                                        "type": "string"
+                                    },
+                                    "tunnelSrcAddress": {
+                                        "description": "Source address of the tunnel.",
+                                        "type": "string"
+                                    },
+                                    "tunnelSpecificData": {
+                                        "description": "Parameters specific to the tunnel.",
+                                        "type": "string"
+                                    }
+                                },
+                                "required": [
+                                    "tunnelType",
+                                    "tunnelDstAddress",
+                                    "tunnelSrcAddress"
+                                ]
+                            },
+                            "srcMACAddress": {
+                                "description": "If the interface type is MAC, the source address identifies the MAC address of the interface.",
+                                "type": "string"
+                            },
+                            "dstMACAddress": {
+                                "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface.",
+                                "type": "string"
+                            },
+                            "dstIPAddress": {
+                                "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface.",
+                                "type": "string"
+                            }
+                        },
+                        "required": [
+                            "interfaceType"
+                        ]
+                    }
+                },
+                "required": [
+                    "trafficRuleId",
+                    "filterType",
+                    "priority",
+                    "trafficFilter",
+                    "action"
+                ],
+                "description": "NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest\n        priority.\nNOTE 2: Some applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the\n        client (e.g. UE) side and the second on the core network (e.g. EPC) side. \n"
+            }
+        },
+        "requestedIotPlatformId": {
+            "description": "IoT platform to which the IoT device is requested to be associated to (see note 2).",
+            "type": "string"
+        },
+        "requestedUserTransportId": {
+            "description": "User transport to which the IoT device is requested to be associated to (see note 2).",
+            "type": "string"
+        },
+        "deviceSpecificMessageFormats": {
+            "description": "Format of the messages to be published by the MEC IoTS on the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+            "type": "object",
+            "properties": {
+                "eventMsgFormat": {
+                    "description'": "Event message format configuration.",
+                    "title": "EventMsg",
+                    "type": "object",
+                    "properties": {
+                        "eventTopic": {
+                            "description": "Topic where the message containing application-specific information should be published. ",
+                            "type": "string"
+                        },
+                        "selectedSerializer": {
+                            "description'": "Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2].",
+                            "type": "string",
+                            "description": "The enumeration SerializerType represents types of serializers.",
+                            "enum": [
+                                "JSON",
+                                "XML",
+                                "PROTOBUF3"
+                            ]
+                        },
+                        "includeDeviceAddr": {
+                            "description": "Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeDeviceMetadata": {
+                            "description": "Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includePei": {
+                            "description": "Indication whether to include the PEI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeSupi": {
+                            "description": "Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeImei": {
+                            "description": "Indication whether to include the IMEI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeImsi": {
+                            "description": "Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeIccid": {
+                            "description": "Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeDeviceId": {
+                            "description": "Indication whether to include the human-readable identified of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        }
+                    },
+                    "required": [
+                        "eventTopic",
+                        "selectedSerializer"
+                    ]
+                },
+                "uplinkMsgFormat": {
+                    "description'": "Uplink message format configuration.",
+                    "title": "UplinkMsg",
+                    "type": "object",
+                    "properties": {
+                        "uplinkTopic": {
+                            "description": "Topic where the message containing the data generated by the IoT device(s) should be published, in order to be consumed by the end IoT application(s).",
+                            "type": "string"
+                        },
+                        "selectedSerializer": {
+                            "description'": "Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2].",
+                            "type": "string",
+                            "description": "The enumeration SerializerType represents types of serializers.",
+                            "enum": [
+                                "JSON",
+                                "XML",
+                                "PROTOBUF3"
+                            ]
+                        },
+                        "includeDevicePort": {
+                            "description": "Indication whether to include the UDP port of the remote IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeDeviceAddr": {
+                            "description": "Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeDeviceMetadata": {
+                            "description": "Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includePei": {
+                            "description": "Indication whether to include the PEI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeSupi": {
+                            "description": "Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeImei": {
+                            "description": "Indication whether to include the IMEI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeImsi": {
+                            "description": "Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeIccid": {
+                            "description": "Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        },
+                        "includeDeviceId": {
+                            "description": "Indication whether to include the human-readable identified of the IoT device (TRUE) or not (FALSE).",
+                            "type": "boolean"
+                        }
+                    },
+                    "required": [
+                        "uplinkTopic",
+                        "selectedSerializer"
+                    ]
+                }
+            }
+        },
+        "downlinkInfo": {
+            "description": "Downlink communication configuration of the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+            "type": "object",
+            "properties": {
+                "downlinkTopic": {
+                    "description": "Topic associated to the IoT device. This topic should be used by an end IoT application to send downlink data to the IoT device.",
+                    "type": "string"
+                },
+                "devicePort": {
+                    "description": "UDP port to be used by the MEC IoTS for the outgoing downlink packets towards the IoT device. In case a default value is used, this attribute is optional.",
+                    "type": "integer"
+                }
+            }
+        },
+        "clientCertificate": {
+            "description": "Client-side SSL/TLS certificate to be used by the MEC IoTS to interact with the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+            "type": "string"
+        },
+        "enabled": {
+            "description": "Indication whether the IoT device has a valid associated traffic rule (TRUE) or not (FALSE). See note 3.",
+            "type": "boolean"
+        }
+    },
+    "required": [
+        "deviceAuthenticationInfo",
+        "deviceId",
+        "enabled"
+    ],
+    "description": "NOTE 1: At least one attribute among gpsi, pei, supi, msisdn, imei, imsi, and iccid should be provided. Sufficient security\n        measures shall be put in place when any attribute among PEI, SUPI, IMEI, and IMSI is disclosed over the API.\nNOTE 2: Until a valid traffic rule is not provided, the device will not be able to use the IoTS. A valid traffic rule is provided\n        by one of the following options:\n        • the requestedMecTrafficRule attribute;\n        • the requestedIotPlatformId attribute when the IoT platform offers only one user transport;\n        • the combination of requestedIotPlatformId and requestedUserTransportId.\nNOTE 3: Enabled is a pseudo-attribute which needs to be maintained by the IoTS based on the presence or not of a valid\n        traffic rule associated to the device. It cannot be set directly by the service consumer. \n"
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfoList.schema.json b/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfoList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..4ee52dcf27dc09ce3964b8f34b5eb0d51bef3e9b
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTDEV/schemas/DeviceInfoList.schema.json
@@ -0,0 +1,430 @@
+{
+    "type": "array",
+    "items": {
+        "type": "object",
+        "properties": {
+            "deviceAuthenticationInfo": {
+                "description": "Information needed for secondary authentication of the IoT device to the data network - see ETSI TS 129 561 [i.4] and ETSI TS 129 061 [i.5] for 5G and LTE procedures, respectively. This attribute is implementation dependent and should be logically linked to the identifiers of the IoT device listed hereafter.",
+                "type": "string"
+            },
+            "deviceMetadata": {
+                "description": "Additional information about the IoT device. This attribute is implementation dependent and may be expressed as an array of keyvalue pairs. ",
+                "type": "array",
+                "items": {
+                    "description": "Key-value pairs for device metadata",
+                    "type": "object",
+                    "properties": {
+                        "key": {
+                            "type": "string"
+                        },
+                        "value": {
+                            "type": "string"
+                        }
+                    }
+                }
+            },
+            "gpsi": {
+                "description": "GPSI of the IoT device if 5G-enabled (see note 1).",
+                "type": "string"
+            },
+            "pei": {
+                "description": "PEI of the IoT device if 5G-enabled (see note 1).",
+                "type": "string"
+            },
+            "supi": {
+                "description": "SUPI of the IoT device if 5G-enabled (see note 1).",
+                "type": "string"
+            },
+            "msisdn": {
+                "description": "MSISDN of the IoT device if LTE-enabled (see note 1).",
+                "type": "string"
+            },
+            "imei": {
+                "description": "IMEI of the IoT device if LTE-enabled (see note 1).",
+                "type": "string"
+            },
+            "imsi": {
+                "description": "IMSI of the IoT device if LTE-enabled (see note 1).",
+                "type": "string"
+            },
+            "iccid": {
+                "description": "ICCID of the IoT device (see note 1).",
+                "type": "string"
+            },
+            "deviceId": {
+                "description": "Human-readable identifier of the IoT device.",
+                "type": "string"
+            },
+            "requestedMecTrafficRule": {
+                "description": "MEC traffic rules the IoT device is requested to be associated to (see note 2). The data type definition is as per ETSI GS MEC 010-2 [i.6].",
+                "type": "array",
+                "items": {
+                    "title": "TrafficRuleDescriptor",
+                    "type": "object",
+                    "properties": {
+                        "trafficRuleId": {
+                            "description": "Identifies the traffic rule.",
+                            "type": "string"
+                        },
+                        "filterType": {
+                            "type": "string",
+                            "description": "Definition of filter type: per FLOW or PACKET\n\nIf it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and downstream (e.g. EPC->UE) packets are handled by the same context.\n",
+                            "enum": [
+                                "per FLOW",
+                                "per PACKET"
+                            ]
+                        },
+                        "priority": {
+                            "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1.",
+                            "type": "integer"
+                        },
+                        "trafficFilter": {
+                            "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host.",
+                            "type": "array",
+                            "items": {
+                                "title": "TrafficFilter",
+                                "type": "object",
+                                "properties": {
+                                    "srcAddress": {
+                                        "description": "An IP address or a range of IP addresses.\nFor IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.\nFor IPv6, the IP address could be an IP prefix, or a range of IP prefixes.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "dstAddress": {
+                                        "description": "An IP address or a range of IP addresses.\nFor IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.\nFor IPv6, the IP address could be an IP prefix, or a range of IP prefixes.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "srcPort": {
+                                        "description": "A port or a range of ports.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "dstPort": {
+                                        "description": "A port or a range of ports.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "protocol": {
+                                        "description": "Specify the protocol of the traffic filter.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "tag": {
+                                        "description": "Used for tag based traffic rule.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "uri": {
+                                        "description": "An URI label, in application layer, i.e. in HTTP message, is used to filter the traffic.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "packetLabel": {
+                                        "description": "A customized packet label in network layer, as defined by the owner of the MEC platform, is used to filter the traffic.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "srcTunnelAddress": {
+                                        "description": "Used for GTP tunnel based traffic rule.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "tgtTunnelAddress": {
+                                        "description": "Used for GTP tunnel based traffic rule.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "srcTunnelPort": {
+                                        "description": "Used for GTP tunnel based traffic rule.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "dstTunnelPort": {
+                                        "description": "Used for GTP tunnel based traffic rule.",
+                                        "type": "array",
+                                        "items": {
+                                            "type": "string"
+                                        }
+                                    },
+                                    "qCI": {
+                                        "description": "Used to match all packets that have the same QCI.",
+                                        "type": "integer"
+                                    },
+                                    "dSCP": {
+                                        "description": "Used to match all IPv4 packets that have the same DSCP.",
+                                        "type": "integer"
+                                    },
+                                    "tC": {
+                                        "description": "Used to match all IPv6 packets that have the same TC.",
+                                        "type": "integer"
+                                    }
+                                }
+                            }
+                        },
+                        "action": {
+                            "type": "string",
+                            "description": "Identifies the action of the MEC host data plane, when a packet matches the trafficFilter, the example actions include:\nDROP,\nFORWARD_DECAPSULATED,\nFORWARD_ENCAPSULATED,\nPASSTHROUGH,\nDUPLICATE_DECAPSULATED,\nDUPLICATE_ENCAPSULATED ",
+                            "enum": [
+                                "SEE_DESCRIPTION"
+                            ]
+                        },
+                        "dstInterface": {
+                            "description'": "Describes the destination interface information. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. If the action is DROP, no value shall be provided.",
+                            "title": "InterfaceDescriptor",
+                            "type": "object",
+                            "properties": {
+                                "interfaceType": {
+                                    "type": "string",
+                                    "description": "Type of interface: TUNNEL, MAC, IP, etc.",
+                                    "enum": [
+                                        "TUNNEL",
+                                        "MAC",
+                                        "IP"
+                                    ]
+                                },
+                                "tunnelInfo": {
+                                    "description'": "Included only if the destination address type is tunnel.",
+                                    "title": "TunnelInfo",
+                                    "type": "object",
+                                    "properties": {
+                                        "tunnelType": {
+                                            "type": "string",
+                                            "description": "Type of tunnel: GTP-U, GRE, etc.",
+                                            "enum": [
+                                                "GTP-U",
+                                                "GRE"
+                                            ]
+                                        },
+                                        "tunnelDstAddress": {
+                                            "description": "Destination address of the tunnel.",
+                                            "type": "string"
+                                        },
+                                        "tunnelSrcAddress": {
+                                            "description": "Source address of the tunnel.",
+                                            "type": "string"
+                                        },
+                                        "tunnelSpecificData": {
+                                            "description": "Parameters specific to the tunnel.",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "required": [
+                                        "tunnelType",
+                                        "tunnelDstAddress",
+                                        "tunnelSrcAddress"
+                                    ]
+                                },
+                                "srcMACAddress": {
+                                    "description": "If the interface type is MAC, the source address identifies the MAC address of the interface.",
+                                    "type": "string"
+                                },
+                                "dstMACAddress": {
+                                    "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface.",
+                                    "type": "string"
+                                },
+                                "dstIPAddress": {
+                                    "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface.",
+                                    "type": "string"
+                                }
+                            },
+                            "required": [
+                                "interfaceType"
+                            ]
+                        }
+                    },
+                    "required": [
+                        "trafficRuleId",
+                        "filterType",
+                        "priority",
+                        "trafficFilter",
+                        "action"
+                    ],
+                    "description": "NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest\n        priority.\nNOTE 2: Some applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the\n        client (e.g. UE) side and the second on the core network (e.g. EPC) side. \n"
+                }
+            },
+            "requestedIotPlatformId": {
+                "description": "IoT platform to which the IoT device is requested to be associated to (see note 2).",
+                "type": "string"
+            },
+            "requestedUserTransportId": {
+                "description": "User transport to which the IoT device is requested to be associated to (see note 2).",
+                "type": "string"
+            },
+            "deviceSpecificMessageFormats": {
+                "description": "Format of the messages to be published by the MEC IoTS on the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+                "type": "object",
+                "properties": {
+                    "eventMsgFormat": {
+                        "description'": "Event message format configuration.",
+                        "title": "EventMsg",
+                        "type": "object",
+                        "properties": {
+                            "eventTopic": {
+                                "description": "Topic where the message containing application-specific information should be published. ",
+                                "type": "string"
+                            },
+                            "selectedSerializer": {
+                                "description'": "Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2].",
+                                "type": "string",
+                                "description": "The enumeration SerializerType represents types of serializers.",
+                                "enum": [
+                                    "JSON",
+                                    "XML",
+                                    "PROTOBUF3"
+                                ]
+                            },
+                            "includeDeviceAddr": {
+                                "description": "Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeDeviceMetadata": {
+                                "description": "Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includePei": {
+                                "description": "Indication whether to include the PEI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeSupi": {
+                                "description": "Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeImei": {
+                                "description": "Indication whether to include the IMEI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeImsi": {
+                                "description": "Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeIccid": {
+                                "description": "Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeDeviceId": {
+                                "description": "Indication whether to include the human-readable identified of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            }
+                        },
+                        "required": [
+                            "eventTopic",
+                            "selectedSerializer"
+                        ]
+                    },
+                    "uplinkMsgFormat": {
+                        "description'": "Uplink message format configuration.",
+                        "title": "UplinkMsg",
+                        "type": "object",
+                        "properties": {
+                            "uplinkTopic": {
+                                "description": "Topic where the message containing the data generated by the IoT device(s) should be published, in order to be consumed by the end IoT application(s).",
+                                "type": "string"
+                            },
+                            "selectedSerializer": {
+                                "description'": "Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2].",
+                                "type": "string",
+                                "description": "The enumeration SerializerType represents types of serializers.",
+                                "enum": [
+                                    "JSON",
+                                    "XML",
+                                    "PROTOBUF3"
+                                ]
+                            },
+                            "includeDevicePort": {
+                                "description": "Indication whether to include the UDP port of the remote IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeDeviceAddr": {
+                                "description": "Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeDeviceMetadata": {
+                                "description": "Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includePei": {
+                                "description": "Indication whether to include the PEI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeSupi": {
+                                "description": "Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeImei": {
+                                "description": "Indication whether to include the IMEI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeImsi": {
+                                "description": "Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeIccid": {
+                                "description": "Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            },
+                            "includeDeviceId": {
+                                "description": "Indication whether to include the human-readable identified of the IoT device (TRUE) or not (FALSE).",
+                                "type": "boolean"
+                            }
+                        },
+                        "required": [
+                            "uplinkTopic",
+                            "selectedSerializer"
+                        ]
+                    }
+                }
+            },
+            "downlinkInfo": {
+                "description": "Downlink communication configuration of the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+                "type": "object",
+                "properties": {
+                    "downlinkTopic": {
+                        "description": "Topic associated to the IoT device. This topic should be used by an end IoT application to send downlink data to the IoT device.",
+                        "type": "string"
+                    },
+                    "devicePort": {
+                        "description": "UDP port to be used by the MEC IoTS for the outgoing downlink packets towards the IoT device. In case a default value is used, this attribute is optional.",
+                        "type": "integer"
+                    }
+                }
+            },
+            "clientCertificate": {
+                "description": "Client-side SSL/TLS certificate to be used by the MEC IoTS to interact with the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device.",
+                "type": "string"
+            },
+            "enabled": {
+                "description": "Indication whether the IoT device has a valid associated traffic rule (TRUE) or not (FALSE). See note 3.",
+                "type": "boolean"
+            }
+        },
+        "required": [
+            "deviceAuthenticationInfo",
+            "deviceId",
+            "enabled"
+        ],
+        "description": "NOTE 1: At least one attribute among gpsi, pei, supi, msisdn, imei, imsi, and iccid should be provided. Sufficient security\n        measures shall be put in place when any attribute among PEI, SUPI, IMEI, and IMSI is disclosed over the API.\nNOTE 2: Until a valid traffic rule is not provided, the device will not be able to use the IoTS. A valid traffic rule is provided\n        by one of the following options:\n        • the requestedMecTrafficRule attribute;\n        • the requestedIotPlatformId attribute when the IoT platform offers only one user transport;\n        • the combination of requestedIotPlatformId and requestedUserTransportId.\nNOTE 3: Enabled is a pseudo-attribute which needs to be maintained by the IoTS based on the presence or not of a valid\n        traffic rule associated to the device. It cannot be set directly by the service consumer. \n"
+    }
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot b/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot
new file mode 100644
index 0000000000000000000000000000000000000000..664a174b8b8368a887f6e7473d0fb149fd5da915
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot
@@ -0,0 +1,241 @@
+Y''[Documentation]   robot --outputdir ../../../outputs ./RegisteredIoTPlatform.robot
+...    Test Suite to validate the Registered IOT Platform (IOTPLAT) operations.
+
+*** Settings ***
+Resource    environment/variables.txt
+Resource    ../../../../pics.txt
+Resource    ../../../../GenericKeywords.robot
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem    
+
+Test Setup       Test Setup   ${PLATFORM_ID_PLACEHOLDER}   IoTPlatformInfo      ${NO_ACTION}
+Test Teardown    Test TearDown    ${PLATFORM_ID_PLACEHOLDER}   IoTPlatformInfo      ${NO_ACTION}
+
+
+*** Test Cases ***
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_001_OK
+    [Documentation]
+    ...  Check that the IUT responds with the list of registered IoT platforms
+    ...  when queried by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${None}   IoTPlatformInfo      ${REGISTER_ACTION}
+    ${IOT_PLATFORM_ID_VALUE}   Get value entry from JSON file    IoTPlatformInfo  iotPlatformId
+
+    Retrieve all registered IOT Platform information
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  IotPlatformInfoList
+    [Teardown]    Test TearDown    ${IOT_PLATFORM_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_002_OK
+    [Documentation]
+    ...  Check that the IUT registers the information of a new IoT platform
+	...  when requested by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.4
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    
+    [Setup]      Test Setup   ${IOT_PLATFORM_ID}   ${None}      ${REMOVE_ACTION}    
+    ${IOT_PLATFORM_ID_VALUE}   Get value entry from JSON file    IoTPlatformInfo  iotPlatformId
+    ${USER_TRANSPORT_INFO_VALUE}   Get value entry from JSON file    IoTPlatformInfo  userTransportInfo
+
+    Register IOT Platform information     IotPlatformInfo
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is   IotPlatformInfo
+    Check HTTP Response Header Contains    Location
+    
+    Should Be Equal As Strings    ${response['body']['iotPlatformId']}   ${IOT_PLATFORM_ID}
+    Should Be Equal As Strings    ${response['body']['userTransportInfo']}       ${USER_TRANSPORT_INFO_VALUE}
+
+    [Teardown]    Test TearDown    ${IOT_PLATFORM_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+    
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_002_BR
+    [Documentation]
+    ...  Check that the IUT returns an error
+	...  when Service Consumer request to register an IoT device with incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.4
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    Register IOT Platform information    IotPlatformInfoBR
+    Check HTTP Response Status Code Is    400
+
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_003_OK
+    [Documentation]
+    ...  Check that the IUT returns the IoT platform information
+    ...  when requested by Service Consumer specifying the IoT platform identifier
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${None}   IoTPlatformInfo      ${REGISTER_ACTION}
+    ${IOT_PLATFORM_ID_VALUE}   Get value entry from JSON file    IoTPlatformInfo  iotPlatformId
+    ${USER_TRANSPORT_INFO_VALUE}   Get value entry from JSON file    IoTPlatformInfo  userTransportInfo
+    
+    Retrieve specific registered IOT Platform information    ${IOT_PLATFORM_ID_VALUE}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  IotPlatformInfo
+    Should Be Equal As Strings    ${response['body']['iotPlatformId']}   ${IOT_PLATFORM_ID_VALUE}
+    Should Be Equal As Strings    ${response['body']['userTransportInfo']}       ${USER_TRANSPORT_INFO_VALUE}
+
+    [Teardown]    Test TearDown    ${IOT_PLATFORM_ID}   ${None}      ${REMOVE_ACTION}
+    
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_003_NF
+    [Documentation]
+    ...  Check that the IUT returns the IoT platform information
+    ...  when requested by Service Consumer specifying the IoT platform identifier
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.1
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${NOT_EXISTING_IOT_PLATFORM_ID}   ${None}      ${NOT_EXISTING_IOT_PLATFORM_ID}
+    Retrieve specific registered IOT Platform information    ${NOT_EXISTING_IOT_PLATFORM_ID}
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_004_OK
+    [Documentation]
+    ...  Check that the IUT updates the information about a registered IoT platform
+	...  when requested by a Service Consumer
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.2
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${None}   IoTPlatformInfo      ${REGISTER_ACTION}
+    ${IOT_PLATFORM_ID_VALUE}   Get value entry from JSON file    IotPlatformInfoUpdate  iotPlatformId
+    ${USER_TRANSPORT_INFO_VALUE}   Get value entry from JSON file    IotPlatformInfoUpdate  userTransportInfo
+    
+    Update registered IOT Platform information   ${IOT_PLATFORM_ID_VALUE}  IotPlatformInfoUpdate
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   IotPlatformInfo
+    Should Be Equal As Strings    ${response['body']['iotPlatformId']}   ${IOT_PLATFORM_ID_VALUE}
+    Should Be Equal As Strings    ${response['body']['userTransportInfo']}       ${USER_TRANSPORT_INFO_VALUE}
+    
+    [Teardown]    Test TearDown    ${IOT_PLATFORM_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_004_NF
+    [Documentation]
+    ...  Check that the IUT returns an error
+	...  when a Service Consumer requests to update a not registered IoT platform
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.2
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${NOT_EXISTING_IOT_PLATFORM_ID}   ${None}      ${NOT_EXISTING_IOT_PLATFORM_ID}
+    Update registered IOT Platform information   ${NOT_EXISTING_IOT_PLATFORM_ID}  IotPlatformInfoUpdate
+    Check HTTP Response Status Code Is    404
+
+
+TP_MEC_MEC033_MEX_IOTS_IOTPLAT_005_OK
+    [Documentation]
+    ...  Check that the IUT deregisters an IoT platform information
+	...  when requested by a Service Consumer specifying the registered IoT platform identifier
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.5
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${None}   IoTPlatformInfo      ${REGISTER_ACTION}
+    ${IOT_PLATFORM_ID_VALUE}   Get value entry from JSON file    IoTPlatformInfo  iotPlatformId    
+    Deregister IOT Platform information   ${IOT_PLATFORM_ID}
+    Check HTTP Response Status Code Is    204
+    [Teardown]    Test TearDown    ${IOT_PLATFORM_ID_VALUE}   ${None}      ${REMOVE_ACTION}
+
+
+TC_MEC_MEC033_MEX_IOTS_IOTPLAT_005_NF
+    [Documentation]
+    ...  Check that the IUT returns an error
+	...  when a Service Consumer request to deregister an IoT platform using incorrect parameters
+    ...  ETSI GS MEC 033 V3.1.1, clause 7.5.3.5
+    ...  https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
+    [Setup]      Test Setup   ${NOT_EXISTING_IOT_PLATFORM_ID}   ${None}      ${NOT_EXISTING_IOT_PLATFORM_ID}
+    Deregister IOT Platform information   ${NOT_EXISTING_IOT_PLATFORM_ID}
+    Check HTTP Response Status Code Is    404
+    
+                    
+############################################################################
+      
+*** Keywords ***
+Test Setup 
+    [Arguments]     ${iotPlatformId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms/${iotPlatformId}
+   END
+    
+Test Teardown  
+    [Arguments]     ${iotPlatformId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms/${iotPlatformId}
+   END
+      
+
+Retrieve all registered IOT Platform information
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Retrieve specific registered IOT Platform information
+    [Arguments]     ${registeredPlatformId}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms/${registeredPlatformId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+
+Update registered IOT Platform information
+    [Arguments]     ${registeredPlatformId}    ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    PUT   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms/${registeredPlatformId}     ${content}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+    
+Register IOT Platform information
+    [Arguments]     ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}   
+
+
+ Deregister IOT Platform information
+    [Arguments]     ${registeredPlatformId}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    DELETE   ${apiRoot}/${apiName}/${apiVersion}/registered_iot_platforms/${registeredPlatformId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}    
diff --git a/MEC033/MEX/IOTS/IOTPLAT/environment/variables.txt b/MEC033/MEX/IOTS/IOTPLAT/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2f4e182420d5db616283b1c383c5653d5e450e9e
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/environment/variables.txt
@@ -0,0 +1,18 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                 http
+${HOST}                   127.0.0.1
+${PORT}                   8084
+${response}                         {}
+${TOKEN}                  asic YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}                amsi
+${apiVersion}             v1
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+
+${PLATFORM_ID_PLACEHOLDER}        PLATFORM_ID_PLACEHOLDER
+${IOT_PLATFORM_ID}                iotPlatformId
+${NOT_EXISTING_IOT_PLATFORM_ID}   notExistingIotPlatformId
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfo.json b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b1298ef81892e68ac9f8600978c1bd2dfe0c339
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfo.json
@@ -0,0 +1,46 @@
+{
+    "iotPlatformId": "iotPlatformId",
+    "userTransportInfo": [
+        {
+            "id": "IoTPlatformId",
+            "name": "nameUserTransportInfo",
+            "type": "REST_HTTP",
+            "protocol": "HTTP",
+            "version": "1.00",
+            "endpoint": {
+                "alternative": "amet commodo ad qui cupidatat",
+                "fqdn": [
+                    "fqdn"
+                ],
+                "addresses": [
+                    {
+                        "host": "somehost.com",
+                        "port": 1234
+                    }
+                ]
+            },
+            "security": {
+                "oAuth2Info": {
+                    "grantTypes": [
+                        "OAUTH2_AUTHORIZATION_CODE",
+                        "OAUTH2_RESOURCE_OWNER",
+                        "OAUTH2_RESOURCE_OWNER"
+                    ],
+                    "tokenEndpoint": "https://IqNooo.tosnwuA0fdU9jlKNmu3uyYD"
+                }
+            },
+            "implSpecificInfo": {
+                "downlinkTopics": [
+                    "downlinkTopic01"
+                ],
+                "uplinkTopics": [
+                    "uplinkTopic01"
+                ],
+                "eventTopics": [
+                    "eventTopics"
+                ]
+            },
+            "description": "desc"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoBR.json b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..960a3dcd03b1622555573ef0b5ab78b448581c84
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoBR.json
@@ -0,0 +1,4 @@
+{
+    "iotPlatformId": "IoTPlatformId",
+    "enabled":true
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoUpdate.json b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..c08b9fb478461642870e486de01134c258c90cf4
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/jsons/IoTPlatformInfoUpdate.json
@@ -0,0 +1,44 @@
+{
+    "iotPlatformId": "newIoTPlatformId",
+    "userTransportInfo": [
+        {
+            "id": "IoTPlatformId",
+            "name": "nameUserTransportInfo",
+            "type": "REST_HTTP",
+            "protocol": "HTTP",
+            "version": "1.00",
+            "endpoint": {
+                "alternative": "alternative",
+                "fqdn": [
+                    "fqdn"
+                ],
+                "addresses": [
+                    {
+                        "host": "somehost.com",
+                        "port": 1234
+                    }
+                ]
+            },
+            "security": {
+                "oAuth2Info": {
+                    "grantTypes": [
+                        "OAUTH2_AUTHORIZATION_CODE"
+                    ],
+                    "tokenEndpoint": "https://IqNooo.tosnwuA0fdU9jlKNmu3uyYD"
+                }
+            },
+            "implSpecificInfo": {
+                "downlinkTopics": [
+                    "downlinkTopic01"
+                ],
+                "uplinkTopics": [
+                    "uplinkTopic01"
+                ],
+                "eventTopics": [
+                    "eventTopics"
+                ]
+            },
+            "description": "desc"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfo.schema.json b/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfo.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..93828b01f02d3f56ffddd0dde6fcb7becf20c318
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfo.schema.json
@@ -0,0 +1,328 @@
+{
+        "title": "IotPlatformInfo",
+        "type": "object",
+        "properties": {
+            "iotPlatformId": {
+                "description": "Identifier of the IoT platform.",
+                "type": "string"
+            },
+            "userTransportInfo": {
+                "description": "Information about the user transport(s)  provided by the IoT platform.",
+                "type": "array",
+                "minItems": 1,
+                "items": {
+                    "title": "MBTransportInfo",
+                    "type": "object",
+                    "properties": {
+                        "id": {
+                            "description": "The identifier of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The name of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "description": {
+                            "description": "Human-readable description of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "type": {
+                            "description'": "Type of the transport. The attribute shall be set to \"MB_TOPIC_BASED.\"",
+                            "type": "string",
+                            "enum": [
+                                "REST_HTTP",
+                                "MB_TOPIC_BASED",
+                                "MB_ROUTING",
+                                "MB_PUBSUB",
+                                "RPC",
+                                "RPC_STREAMING",
+                                "WEBSOCKET"
+                            ],
+                            "description": "Enumeration representing types of transports."
+                        },
+                        "protocol": {
+                            "description": "The name of the protocol used. Being the transport of MB_TOPIC_BASED type, this attribute should be typically set to \"MQTT\" or \"AMQP.\"",
+                            "type": "string"
+                        },
+                        "version": {
+                            "description": "The version of the protocol used as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "endpoint": {
+                            "description'": "Information about the endpoint to access the transport as per ETSI GS MEC 011 [i.2].",
+                            "title": "EndPointInfo",
+                            "type": "object",
+                            "properties": {
+                                "uris": {
+                                    "description": "Entry point information of the service as string, formatted according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST APIs. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "fqdn": {
+                                    "description": "Fully Qualified Domain Name of the service. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "addresses": {
+                                    "type": "array",
+                                    "items": {
+                                        "description": "Entry point information of the service as one or more pairs of IP address and port. See note.",
+                                        "type": "object",
+                                        "properties": {
+                                            "host": {
+                                                "description": "Host portion of the address.",
+                                                "type": "string"
+                                            },
+                                            "port": {
+                                                "description": "Port portion of the address.",
+                                                "type": "integer"
+                                            }
+                                        },
+                                        "required": [
+                                            "host",
+                                            "port"
+                                        ]
+                                    }
+                                },
+                                "alternative": {
+                                    "description": "Entry point information of the service in a format defined by an implementation, or in an external specification. See note.",
+                                    "type": "string"
+                                }
+                            },
+                            "description": "NOTE: Exactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present. \n"
+                        },
+                        "security": {
+                            "description": "Information about the security used by the transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "object",
+                            "properties": {
+                                "oAuth2Info": {
+                                    "description": "Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport.",
+                                    "type": "object",
+                                    "properties": {
+                                        "grantTypes": {
+                                            "type": "array",
+                                            "description": "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\n- OAUTH2_AUTHORIZATION_CODE: Authorization code grant type\n- OAUTH2_IMPLICIT_GRANT: Implicit grant type\n- OAUTH2_RESOURCE_OWNER: Resource owner password credentials grant type\n- OAUTH2_CLIENT_CREDENTIALS: Client credentials grant type\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document.\n",
+                                            "items": {
+                                                "type": "string",
+                                                "enum": [
+                                                    "OAUTH2_AUTHORIZATION_CODE",
+                                                    "OAUTH2_IMPLICIT_GRANT",
+                                                    "OAUTH2_RESOURCE_OWNER",
+                                                    "OAUTH2_CLIENT_CREDENTIALS"
+                                                ]
+                                            }
+                                        },
+                                        "tokenEndpoint": {
+                                            "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.",
+                                            "type": "string",
+                                            "format": "uri"
+                                        }
+                                    },
+                                    "required": [
+                                        "grantTypes"
+                                    ]
+                                },
+                                "extensions": {
+                                    "description": "Extensions for alternative transport mechanisms. These extensions depend on the actual transport and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).\n",
+                                    "type": "string"
+                                }
+                            }
+                        },
+                        "implSpecificInfo": {
+                            "description": "Additional implementation specific details of the transport.",
+                            "type": "object",
+                            "properties": {
+                                "eventTopics": {
+                                    "description": "Topics used to publish events related to the established session between the IoT device(s) and the end IoT application(s) on the user transport.",
+                                    "type": "array",
+                                    "minItems": 0,
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "uplinkTopics": {
+                                    "description": "Topics used to publish data generated by the IoT device(s) on the user transport, in order to be consumed by the end IoT application(s).",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "downlinkTopics": {
+                                    "description": "Topics used to publish data generated by the IoT applications(s) on the user transport, in order to be consumed by the end IoT device(s).",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "required": [
+                        "id",
+                        "name",
+                        "type",
+                        "protocol",
+                        "version",
+                        "endpoint",
+                        "security",
+                        "implSpecificInfo"
+                    ]
+                }
+            },
+            "customServicesTransportInfo": {
+                "description": "Transport enabling access to vendor-specific services provided by the IoT platform. The data type definition is as per ETSI GS MEC 011 [i.2].",
+                "type": "array",
+                "minItems": 0,
+                "items": {
+                    "title": "TransportInfo",
+                    "type": "object",
+                    "properties": {
+                        "id": {
+                            "description": "The identifier of this transport.",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The name of this transport.",
+                            "type": "string"
+                        },
+                        "description": {
+                            "description": "Human-readable description of this transport.",
+                            "type": "string"
+                        },
+                        "type": {
+                            "description'": "Type of the transport.",
+                            "type": "string",
+                            "enum": [
+                                "REST_HTTP",
+                                "MB_TOPIC_BASED",
+                                "MB_ROUTING",
+                                "MB_PUBSUB",
+                                "RPC",
+                                "RPC_STREAMING",
+                                "WEBSOCKET"
+                            ],
+                            "description": "Enumeration representing types of transports."
+                        },
+                        "protocol": {
+                            "description": "The name of the protocol used. Shall be set to \"HTTP\" for a REST API.",
+                            "type": "string"
+                        },
+                        "version": {
+                            "description": "The version of the protocol used.",
+                            "type": "string"
+                        },
+                        "endpoint": {
+                            "description'": "Information about the endpoint to access the transport.",
+                            "title": "EndPointInfo",
+                            "type": "object",
+                            "properties": {
+                                "uris": {
+                                    "description": "Entry point information of the service as string, formatted according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST APIs. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "fqdn": {
+                                    "description": "Fully Qualified Domain Name of the service. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "addresses": {
+                                    "type": "array",
+                                    "items": {
+                                        "description": "Entry point information of the service as one or more pairs of IP address and port. See note.",
+                                        "type": "object",
+                                        "properties": {
+                                            "host": {
+                                                "description": "Host portion of the address.",
+                                                "type": "string"
+                                            },
+                                            "port": {
+                                                "description": "Port portion of the address.",
+                                                "type": "integer"
+                                            }
+                                        },
+                                        "required": [
+                                            "host",
+                                            "port"
+                                        ]
+                                    }
+                                },
+                                "alternative": {
+                                    "description": "Entry point information of the service in a format defined by an implementation, or in an external specification. See note.",
+                                    "type": "string"
+                                }
+                            },
+                            "description": "NOTE: Exactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present. \n"
+                        },
+                        "security": {
+                            "description'": "Information about the security used by the transport.",
+                            "type": "object",
+                            "properties": {
+                                "oAuth2Info": {
+                                    "description": "Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport.",
+                                    "type": "object",
+                                    "properties": {
+                                        "grantTypes": {
+                                            "type": "array",
+                                            "description": "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\n- OAUTH2_AUTHORIZATION_CODE: Authorization code grant type\n- OAUTH2_IMPLICIT_GRANT: Implicit grant type\n- OAUTH2_RESOURCE_OWNER: Resource owner password credentials grant type\n- OAUTH2_CLIENT_CREDENTIALS: Client credentials grant type\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document.\n",
+                                            "items": {
+                                                "type": "string",
+                                                "enum": [
+                                                    "OAUTH2_AUTHORIZATION_CODE",
+                                                    "OAUTH2_IMPLICIT_GRANT",
+                                                    "OAUTH2_RESOURCE_OWNER",
+                                                    "OAUTH2_CLIENT_CREDENTIALS"
+                                                ]
+                                            }
+                                        },
+                                        "tokenEndpoint": {
+                                            "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.",
+                                            "type": "string",
+                                            "format": "uri"
+                                        }
+                                    },
+                                    "required": [
+                                        "grantTypes"
+                                    ]
+                                },
+                                "extensions": {
+                                    "description": "Extensions for alternative transport mechanisms. These extensions depend on the actual transport and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).\n",
+                                    "type": "string"
+                                }
+                            }
+                        },
+                        "implSpecificInfo": {
+                            "description": "Additional implementation specific details of the transport.",
+                            "type": "string"
+                        }
+                    },
+                    "required": [
+                        "id",
+                        "name",
+                        "type",
+                        "protocol",
+                        "version",
+                        "endpoint",
+                        "security"
+                    ]
+                }
+            },
+            "enabled": {
+                "description": "Indication whether the IoT platform is capable of providing user transports and vendor-specific services (TRUE) or not (FALSE).",
+                "type": "boolean"
+            }
+        },
+        "required": [
+            "iotPlatformId",
+            "userTransportInfo",
+            "enabled"
+        ]
+    }
\ No newline at end of file
diff --git a/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfoList.schema.json b/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfoList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..f92e6bb654cb97e5343e849e160939d9f9c89933
--- /dev/null
+++ b/MEC033/MEX/IOTS/IOTPLAT/schemas/IotPlatformInfoList.schema.json
@@ -0,0 +1,331 @@
+{
+    "type": "array",
+    "items": {
+        "title": "IotPlatformInfo",
+        "type": "object",
+        "properties": {
+            "iotPlatformId": {
+                "description": "Identifier of the IoT platform.",
+                "type": "string"
+            },
+            "userTransportInfo": {
+                "description": "Information about the user transport(s)  provided by the IoT platform.",
+                "type": "array",
+                "minItems": 1,
+                "items": {
+                    "title": "MBTransportInfo",
+                    "type": "object",
+                    "properties": {
+                        "id": {
+                            "description": "The identifier of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The name of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "description": {
+                            "description": "Human-readable description of this transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "type": {
+                            "description'": "Type of the transport. The attribute shall be set to \"MB_TOPIC_BASED.\"",
+                            "type": "string",
+                            "enum": [
+                                "REST_HTTP",
+                                "MB_TOPIC_BASED",
+                                "MB_ROUTING",
+                                "MB_PUBSUB",
+                                "RPC",
+                                "RPC_STREAMING",
+                                "WEBSOCKET"
+                            ],
+                            "description": "Enumeration representing types of transports."
+                        },
+                        "protocol": {
+                            "description": "The name of the protocol used. Being the transport of MB_TOPIC_BASED type, this attribute should be typically set to \"MQTT\" or \"AMQP.\"",
+                            "type": "string"
+                        },
+                        "version": {
+                            "description": "The version of the protocol used as per ETSI GS MEC 011 [i.2].",
+                            "type": "string"
+                        },
+                        "endpoint": {
+                            "description'": "Information about the endpoint to access the transport as per ETSI GS MEC 011 [i.2].",
+                            "title": "EndPointInfo",
+                            "type": "object",
+                            "properties": {
+                                "uris": {
+                                    "description": "Entry point information of the service as string, formatted according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST APIs. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "fqdn": {
+                                    "description": "Fully Qualified Domain Name of the service. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "addresses": {
+                                    "type": "array",
+                                    "items": {
+                                        "description": "Entry point information of the service as one or more pairs of IP address and port. See note.",
+                                        "type": "object",
+                                        "properties": {
+                                            "host": {
+                                                "description": "Host portion of the address.",
+                                                "type": "string"
+                                            },
+                                            "port": {
+                                                "description": "Port portion of the address.",
+                                                "type": "integer"
+                                            }
+                                        },
+                                        "required": [
+                                            "host",
+                                            "port"
+                                        ]
+                                    }
+                                },
+                                "alternative": {
+                                    "description": "Entry point information of the service in a format defined by an implementation, or in an external specification. See note.",
+                                    "type": "string"
+                                }
+                            },
+                            "description": "NOTE: Exactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present. \n"
+                        },
+                        "security": {
+                            "description": "Information about the security used by the transport as per ETSI GS MEC 011 [i.2].",
+                            "type": "object",
+                            "properties": {
+                                "oAuth2Info": {
+                                    "description": "Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport.",
+                                    "type": "object",
+                                    "properties": {
+                                        "grantTypes": {
+                                            "type": "array",
+                                            "description": "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\n- OAUTH2_AUTHORIZATION_CODE: Authorization code grant type\n- OAUTH2_IMPLICIT_GRANT: Implicit grant type\n- OAUTH2_RESOURCE_OWNER: Resource owner password credentials grant type\n- OAUTH2_CLIENT_CREDENTIALS: Client credentials grant type\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document.\n",
+                                            "items": {
+                                                "type": "string",
+                                                "enum": [
+                                                    "OAUTH2_AUTHORIZATION_CODE",
+                                                    "OAUTH2_IMPLICIT_GRANT",
+                                                    "OAUTH2_RESOURCE_OWNER",
+                                                    "OAUTH2_CLIENT_CREDENTIALS"
+                                                ]
+                                            }
+                                        },
+                                        "tokenEndpoint": {
+                                            "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.",
+                                            "type": "string",
+                                            "format": "uri"
+                                        }
+                                    },
+                                    "required": [
+                                        "grantTypes"
+                                    ]
+                                },
+                                "extensions": {
+                                    "description": "Extensions for alternative transport mechanisms. These extensions depend on the actual transport and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).\n",
+                                    "type": "string"
+                                }
+                            }
+                        },
+                        "implSpecificInfo": {
+                            "description": "Additional implementation specific details of the transport.",
+                            "type": "object",
+                            "properties": {
+                                "eventTopics": {
+                                    "description": "Topics used to publish events related to the established session between the IoT device(s) and the end IoT application(s) on the user transport.",
+                                    "type": "array",
+                                    "minItems": 0,
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "uplinkTopics": {
+                                    "description": "Topics used to publish data generated by the IoT device(s) on the user transport, in order to be consumed by the end IoT application(s).",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "downlinkTopics": {
+                                    "description": "Topics used to publish data generated by the IoT applications(s) on the user transport, in order to be consumed by the end IoT device(s).",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "required": [
+                        "id",
+                        "name",
+                        "type",
+                        "protocol",
+                        "version",
+                        "endpoint",
+                        "security",
+                        "implSpecificInfo"
+                    ]
+                }
+            },
+            "customServicesTransportInfo": {
+                "description": "Transport enabling access to vendor-specific services provided by the IoT platform. The data type definition is as per ETSI GS MEC 011 [i.2].",
+                "type": "array",
+                "minItems": 0,
+                "items": {
+                    "title": "TransportInfo",
+                    "type": "object",
+                    "properties": {
+                        "id": {
+                            "description": "The identifier of this transport.",
+                            "type": "string"
+                        },
+                        "name": {
+                            "description": "The name of this transport.",
+                            "type": "string"
+                        },
+                        "description": {
+                            "description": "Human-readable description of this transport.",
+                            "type": "string"
+                        },
+                        "type": {
+                            "description'": "Type of the transport.",
+                            "type": "string",
+                            "enum": [
+                                "REST_HTTP",
+                                "MB_TOPIC_BASED",
+                                "MB_ROUTING",
+                                "MB_PUBSUB",
+                                "RPC",
+                                "RPC_STREAMING",
+                                "WEBSOCKET"
+                            ],
+                            "description": "Enumeration representing types of transports."
+                        },
+                        "protocol": {
+                            "description": "The name of the protocol used. Shall be set to \"HTTP\" for a REST API.",
+                            "type": "string"
+                        },
+                        "version": {
+                            "description": "The version of the protocol used.",
+                            "type": "string"
+                        },
+                        "endpoint": {
+                            "description'": "Information about the endpoint to access the transport.",
+                            "title": "EndPointInfo",
+                            "type": "object",
+                            "properties": {
+                                "uris": {
+                                    "description": "Entry point information of the service as string, formatted according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST APIs. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "fqdn": {
+                                    "description": "Fully Qualified Domain Name of the service. See note.",
+                                    "type": "array",
+                                    "items": {
+                                        "type": "string"
+                                    }
+                                },
+                                "addresses": {
+                                    "type": "array",
+                                    "items": {
+                                        "description": "Entry point information of the service as one or more pairs of IP address and port. See note.",
+                                        "type": "object",
+                                        "properties": {
+                                            "host": {
+                                                "description": "Host portion of the address.",
+                                                "type": "string"
+                                            },
+                                            "port": {
+                                                "description": "Port portion of the address.",
+                                                "type": "integer"
+                                            }
+                                        },
+                                        "required": [
+                                            "host",
+                                            "port"
+                                        ]
+                                    }
+                                },
+                                "alternative": {
+                                    "description": "Entry point information of the service in a format defined by an implementation, or in an external specification. See note.",
+                                    "type": "string"
+                                }
+                            },
+                            "description": "NOTE: Exactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\" shall be present. \n"
+                        },
+                        "security": {
+                            "description'": "Information about the security used by the transport.",
+                            "type": "object",
+                            "properties": {
+                                "oAuth2Info": {
+                                    "description": "Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport.",
+                                    "type": "object",
+                                    "properties": {
+                                        "grantTypes": {
+                                            "type": "array",
+                                            "description": "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\n- OAUTH2_AUTHORIZATION_CODE: Authorization code grant type\n- OAUTH2_IMPLICIT_GRANT: Implicit grant type\n- OAUTH2_RESOURCE_OWNER: Resource owner password credentials grant type\n- OAUTH2_CLIENT_CREDENTIALS: Client credentials grant type\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document.\n",
+                                            "items": {
+                                                "type": "string",
+                                                "enum": [
+                                                    "OAUTH2_AUTHORIZATION_CODE",
+                                                    "OAUTH2_IMPLICIT_GRANT",
+                                                    "OAUTH2_RESOURCE_OWNER",
+                                                    "OAUTH2_CLIENT_CREDENTIALS"
+                                                ]
+                                            }
+                                        },
+                                        "tokenEndpoint": {
+                                            "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.",
+                                            "type": "string",
+                                            "format": "uri"
+                                        }
+                                    },
+                                    "required": [
+                                        "grantTypes"
+                                    ]
+                                },
+                                "extensions": {
+                                    "description": "Extensions for alternative transport mechanisms. These extensions depend on the actual transport and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLS-based authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).\n",
+                                    "type": "string"
+                                }
+                            }
+                        },
+                        "implSpecificInfo": {
+                            "description": "Additional implementation specific details of the transport.",
+                            "type": "string"
+                        }
+                    },
+                    "required": [
+                        "id",
+                        "name",
+                        "type",
+                        "protocol",
+                        "version",
+                        "endpoint",
+                        "security"
+                    ]
+                }
+            },
+            "enabled": {
+                "description": "Indication whether the IoT platform is capable of providing user transports and vendor-specific services (TRUE) or not (FALSE).",
+                "type": "boolean"
+            }
+        },
+        "required": [
+            "iotPlatformId",
+            "userTransportInfo",
+            "enabled"
+        ]
+    }
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/FederationEnablement.robot b/MEC040/SRV/MEF/FederationEnablement.robot
new file mode 100644
index 0000000000000000000000000000000000000000..f89104b7f20cb4e6de871829b92fea6aefc07567
--- /dev/null
+++ b/MEC040/SRV/MEF/FederationEnablement.robot
@@ -0,0 +1,573 @@
+Y''[Documentation]   robot --outputdir ../../../outputs ./FederationEnablement.robot
+...    Test Suite to validate the Federation Enablement API (FED) operations.
+*** Settings ***
+Resource    environment/variables.txt
+Resource    ../../../pics.txt
+Resource    ../../../GenericKeywords.robot
+Library     REST    ${SCHEMA}://${HOST}:${PORT}    ssl_verify=false
+Library     OperatingSystem    
+Library     String
+
+
+
+Test Setup       Test Setup   ${SYSTEM_ID_PLACEHOLDER}   SystemInfo      ${NO_ACTION}
+Test Teardown    Test TearDown    ${SYSTEM_ID_PLACEHOLDER}   SystemInfo      ${NO_ACTION}
+
+
+*** Test Cases ***
+TC_MEC_MEC040_SRV_MEF_001_OK
+    [Documentation]
+    ...  Check that the IUT responds with a list of all available systemInfo 
+    ...  when requested by a MEC Orchestrator - No query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Retrieve all system info resources
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+
+TC_MEC_MEC040_SRV_MEF_001_OK_02
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - SystemId query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Retrieve all system info resources with query params   ${SYSTEM_ID_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[systemId]      ${SYSTEM_ID_1}
+    END
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+TC_MEC_MEC040_SRV_MEF_001_OK_03
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo 
+    ...  when requested by a MEC Orchestrator - Multiple SystemId query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    
+    Retrieve all system info resources with query params   ${MULTIPLE_SYSTEM_ID_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    
+    FOR  ${element}  IN  @{response['body']}
+      IF    '''${element}[systemId]''' == '''${SYSTEM_ID_1}'''
+        ${found_first_system_id}    Set Variable   ${TRUE}
+      END
+      IF    '''${element}[systemId]''' == '''${SYSTEM_ID_2}'''
+        ${found_second_system_id}    Set Variable   ${TRUE}
+      END
+    END
+    Should Be True  ${found_first_system_id}
+    Should Be True  ${found_second_system_id}
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+   
+TC_MEC_MEC040_SRV_MEF_001_OK_04
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Empty SystemId query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    
+    Retrieve all system info resources
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+TC_MEC_MEC040_SRV_MEF_001_OK_05
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - SystemName query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    ${SYSTEM_NAME_VALUE}   Get value entry from JSON file    SystemInfo  systemName
+
+    Retrieve all system info resources with query params   ${SYSTEM_NAME_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[systemName]      ${SYSTEM_NAME_VALUE}
+    END
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+TC_MEC_MEC040_SRV_MEF_001_OK_06
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Multiple SystemName query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    ${SYSTEM_NAME_VALUE}   Get value entry from JSON file    SystemInfo  systemName
+    ${SYSTEM_NAME_VALUE_2}   Get value entry from JSON file    SystemInfo2  systemName
+    Retrieve all system info resources with query params     ${MUTIPLE_SYSTEM_NAME_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    FOR  ${element}  IN  @{response['body']}
+      IF    '''${element}[systemName]''' == '''${SYSTEM_NAME_VALUE}'''
+        ${found_sys_name_one}    Set Variable   ${TRUE}
+      END
+      IF    '''${element}[systemName]''' == '''${SYSTEM_NAME_VALUE_2}'''
+        ${found_sys_name_two}    Set Variable   ${TRUE}
+      END
+    END
+    Should Be True  ${found_sys_name_one}
+    Should Be True  ${found_sys_name_two}
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+
+TC_MEC_MEC040_SRV_MEF_001_OK_07
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Empty SystemName query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    
+    Retrieve all system info resources with query params     ${EMPTY_SYSTEM_NAME_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+TC_MEC_MEC040_SRV_MEF_001_OK_08
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - systemProvider query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    ${SYS_PROVIDER_VALUE}   Get value entry from JSON file    SystemInfo  systemProvider
+
+    Retrieve all system info resources with query params     ${SYSTEM_PROVIDER_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[systemProvider]      ${SYS_PROVIDER_VALUE}
+    END
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+  
+
+TC_MEC_MEC040_SRV_MEF_001_OK_09
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Multiple systemProvider query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Retrieve all system info resources with query params   ${MUTIPLE_SYS_PROVIDER_QUERY_PAR}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    ${SYS_PROVIDER_VALUE}   Get value entry from JSON file    SystemInfo  systemProvider
+    ${SYS_PROVIDER_VALUE_2}   Get value entry from JSON file    SystemInfo2  systemProvider
+       
+    FOR  ${element}  IN  @{response['body']}
+      IF    '''${element}[systemProvider]''' == '''${SYS_PROVIDER_VALUE}'''
+        ${sys_provider_found}    Set Variable   ${TRUE}
+      END
+      IF    '''${element}[systemProvider]''' == '''${SYS_PROVIDER_VALUE_2}'''
+        ${sys_provider2_found}    Set Variable   ${TRUE}
+      END
+    END
+    Should Be True  ${sys_provider_found}
+    Should Be True  ${sys_provider2_found} 
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+  
+
+
+TC_MEC_MEC040_SRV_MEF_001_OK_10
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Empty systemProvider query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Retrieve all system info resources with query params   ${EMPTY_SYSTEM_PROVIDER_QUERY_PARAM}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    FOR  ${element}  IN  @{response['body']}
+      Should Be Equal As Strings    ${element}[systemProvider]      ${EMPTY}
+    END
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+  
+    
+TC_MEC_MEC040_SRV_MEF_001_OK_11
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo
+    ...  when requested by a MEC Orchestrator - Multiple query parameters
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    ${SYS_NAME_VALUE}   Get value entry from JSON file    SystemInfo  systemName
+    ${SYS_ID}   Get value entry from JSON file    SystemInfo  systemName
+    
+    Retrieve all system info resources with query params   ${FILTER_ON_SYSTEM_ID_AND_NAME}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfoList
+    ${counterSystemId}    Set Variable    ${0}
+    ${counterSystemName}  Set Variable    ${0}
+    FOR  ${element}  IN  @{response['body']}
+      IF    '''${element}[systemId]''' == '''${SYS_ID}'''
+        ${counterSystemId}=  set variable  ${counterSystemId+1}
+      END
+      IF    '''${element}[systemName]''' == '''${SYS_NAME_VALUE}'''
+         ${counterSystemName}=  set variable  ${counterSystemName+1}
+      END
+      ${counterSystemName}=  set variable  ${counterSystemName+1}
+    END
+    Should Be True    '${counterSystemName}'>'0'
+    Should Be True    '${counterSystemId}'>'0'
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+  
+                                    
+TC_MEC_MEC040_SRV_MEF_001_NF_01
+    [Documentation]
+    ...  Check that the IUT responds with an error 
+    ...  when selection is not applicable - SystemId
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Remove specific system info resource    ${NOT_EXT_SYSTEM_ID_QUERY_PARAM}   
+    Retrieve all system info resources with query params   ${NOT_EXT_SYSTEM_ID_QUERY_PARAM}
+    Check HTTP Response Status Code Is    404
+
+TC_MEC_MEC040_SRV_MEF_001_NF_02
+    [Documentation]
+    ...  Check that the IUT responds with an error
+    ...  when selection is not applicable - SystemName
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    ##Test setup not applicable because systemInfo cannot be deleted by systemName
+    Retrieve all system info resources with query params   ${NOT_EXT_SYSTEM_NAME_QUERY_PARAM}
+    Check HTTP Response Status Code Is    404
+
+
+TC_MEC_MEC040_SRV_MEF_001_NF_03
+    [Documentation]
+    ...  Check that the IUT responds with an error
+    ...  when selection is not applicable - SystemProvider
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    ##Test setup not applicable because systemInfo cannot be deleted by systemProvider
+    Retrieve all system info resources with query params   ${NOT_EXT_SYS_PROVIDER_QUERY_PARAM}
+    Check HTTP Response Status Code Is    404
+
+##TODO double check
+TC_MEC_MEC040_SRV_MEF_001_BR
+    [Documentation]
+    ...  Check that the IUT responds with an error when request is malformed
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+   Retrieve all system info resources wrong URL
+   #Check HTTP Response Status Code Is    400
+    
+TC_MEC_MEC040_SRV_MEF_002_OK
+    [Documentation]
+    ...  Check that the IUT creates a new systemInfo when requested by a MEC Orchestrator
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    ##No test setup needed because the systemId is generated by IUT
+    Register System Info    SystemInfo
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is  SystemInfo  
+    ${SYS_NAME_VALUE}   Get value entry from JSON file    SystemInfo  systemName
+    ${SYS_NAME_PROVIDER}   Get value entry from JSON file    SystemInfo  systemProvider
+
+    Should Be Equal As Strings    ${response['body']['systemName']}       ${SYS_NAME_VALUE}
+    Should Be Equal As Strings    ${response['body']['systemProvider']}       ${SYS_NAME_PROVIDER}
+
+    [Teardown]  Remove specific system info resource    ${response['body']['systemId']}  
+   
+    
+
+TC_MEC_MEC040_SRV_MEF_002_BR_01
+    [Documentation]
+    ...  Check that the IUT responds with an error on creating an existing systemInfo
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    Register System Info    SystemInfoBR
+    Check HTTP Response Status Code Is    400
+
+
+##TODO double check
+TC_MEC_MEC040_SRV_MEF_002_BR_02
+    [Documentation]
+    ...  Check that the IUT responds with an error on providing inconsistent data
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    Register System Info    SystemInfoBR
+    Check HTTP Response Status Code Is    400    
+    
+TC_MEC_MEC040_SRV_MEF_003_OK
+    [Documentation]
+    ...  Check that the IUT responds with a selection of all available systemInfo 
+    ...  when requested by a MEC Orchestrator
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Retrieve specific system info resource   ${SYSTEM_ID_1} 
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is  SystemInfo
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+    
+TC_MEC_MEC040_SRV_MEF_003_NF
+    [Documentation]
+    ...  Check that the IUT responds with an error
+    ...  when it receives a request for returning a systemInfo  referred with a wrong systemId
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]  Remove specific system info resource   ${NOT_EXISTING_SYSTEM_ID} 
+    Retrieve specific system info resource    ${NOT_EXISTING_SYSTEM_ID} 
+    Check HTTP Response Status Code Is    404
+
+##TODO double check    
+TC_MEC_MEC040_SRV_MEF_003_BR
+    [Documentation]
+    ...  Check that the IUT responds with an error
+    ...  when it receives a request for returning a systemInfo  referred with a wrong systemId
+    ...  ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    Retrieve specific system info resource    ${NOT_EXISTING_SYSTEM_ID} 
+    #Check HTTP Response Status Code Is    400
+    
+TC_MEC_MEC040_SRV_MEF_004_OK_01
+    [Documentation]
+    ...  Check that the IUT updates the systemInfo when requested by a MEC Orchestrator
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    ${SYS_PROVIDER}   Get value entry from JSON file    SystemInfoUpdate  endpoint
+    Update specific system info resource  ${SYSTEM_ID_1}    SystemInfoUpdate 
+    Check HTTP Response Status Code Is    200
+    Should Be Equal As Strings    ${response['body']['systemProvider']}        ${SYS_PROVIDER}
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+TC_MEC_MEC040_SRV_MEF_004_OK_02
+    [Documentation]
+    ...  Check that the IUT updates the systemInfo when requested by a MEC Orchestrator
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Update specific system info resource  ${SYSTEM_ID_1}    SystemInfoUpdate2
+    ${SYS_NAME}   Get value entry from JSON file    SystemInfoUpdate2  systemName
+    Check HTTP Response Status Code Is    200
+    Should Be Equal As Strings    ${response['body']['systemName']}        ${SYS_NAME}
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+  
+TC_MEC_MEC040_SRV_MEF_004_OK_03
+    [Documentation]
+    ...  Check that the IUT updates the systemInfo when requested by a MEC Orchestrator
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Update specific system info resource  ${SYSTEM_ID_1}   SystemInfoUpdate3
+    Check HTTP Response Status Code Is    200
+    ${SYS_NAME}   Get value entry from JSON file    SystemInfoUpdate3  systemName
+    ${SYS_PROVIDER}   Get value entry from JSON file    SystemInfoUpdate3  endpoint
+        
+    Should Be Equal As Strings    ${response['body']['systemName']}        ${SYS_NAME}
+    Should Be Equal As Strings    ${response['body']['systemProvider']}    ${SYS_PROVIDER}
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+
+
+TC_MEC_MEC040_SRV_MEF_004_NF
+    [Documentation]
+    ...  Check that the IUT responds with an error when requested to update an unknown systemInfo
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]  Remove specific system info resource   ${NOT_EXISTING_SYSTEM_ID} 
+    Update specific system info resource  ${NOT_EXISTING_SYSTEM_ID}    SystemInfoUpdate3
+    Check HTTP Response Status Code Is    404
+
+##TODO double check corresponding TP
+TC_MEC_MEC040_SRV_MEF_004_BR_01
+    [Documentation]
+    ...  Check that the IUT responds with an error when requested to update with an inconsistant URI
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    Update specific system info resource  ${NOT_EXISTING_SYSTEM_ID}    SystemInfoUpdate3
+    Check HTTP Response Status Code Is    400
+
+TC_MEC_MEC040_SRV_MEF_004_BR_02
+    [Documentation]
+    ...  Check that the IUT responds with an error when requested to update with no data provided
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Update specific system info resource  ${EXPECTED_SYSTEM_ID}    SystemInfoUpdateBR
+    Check HTTP Response Status Code Is    400            
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+    
+
+TC_MEC_MEC040_SRV_MEF_005_OK
+    [Documentation]
+    ...  Check that the IUT responds with an error when requested to delete an unknown systemInfo
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.5, clause 5.2.2.1.3
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]   Register mutiple system Info and get system Ids   SystemInfo    SystemInfo2    SystemInfo3
+    Remove specific system info resource  ${SYSTEM_ID_1}  
+    Check HTTP Response Status Code Is    204  
+    [Teardown]  Remove mutiple system Info    ${SYSTEM_ID_1}    ${SYSTEM_ID_2}    ${SYSTEM_ID_3}
+    
+TC_MEC_MEC040_SRV_MEF_005_NF
+    [Documentation]
+    ...  Check that the IUT responds with an error when requested to delete an unknown systemInfo
+    ...  ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.5, clause 5.2.2.1.3
+    ...  https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf
+    [Setup]      Remove specific system info resource  ${NOT_EXISTING_SYSTEM_ID}
+    Remove specific system info resource  ${NOT_EXISTING_SYSTEM_ID}  
+    Check HTTP Response Status Code Is    404
+
+
+############################################################################
+*** Keywords ***
+Test Setup 
+    [Arguments]    ${systemId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info   ${body}
+       ${output}=    Output    response
+       Set Suite Variable    ${setup_response}    ${output}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info/${systemId}
+   END
+    
+Test Teardown  
+    [Arguments]     ${systemId}    ${content}   ${action}
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+     
+    IF    '''${action}''' == '''${REGISTER_ACTION}'''
+       ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+       ${body}=    Get File    ${file}
+       POST   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info   ${body}
+    END
+    
+    IF    '''${action}''' == '''${REMOVE_ACTION}'''
+        DELETE   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info/${systemId}
+   END
+
+
+Retrieve all system info resources
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Retrieve all system info resources with query params
+    [Arguments]     ${query_params}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info?${query_params}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Retrieve specific system info resource
+    [Arguments]     ${SYSTEM_INFO_ID}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info/${SYSTEM_INFO_ID}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+        
+Register System Info
+    [Arguments]     ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    POST   ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}  
+
+Register mutiple system Info and get system Ids
+    [Arguments]     ${content_01}     ${content_02}    ${content_03}
+    Register System Info    ${content_01}
+    Set Suite Variable      ${SYSTEM_ID_1}    ${response}[body][systemId]
+    Register System Info    ${content_02}
+    Set Suite Variable      ${SYSTEM_ID_2}    ${response}[body][systemId]
+    Register System Info    ${content_03}
+    Set Suite Variable      ${SYSTEM_ID_3}    ${response}[body][systemId]
+
+
+Remove mutiple system Info
+    [Arguments]     ${sys_id_1}   ${sys_id_2}    ${sys_id_3}    
+    Remove specific system info resource   ${sys_id_1} 
+    Remove specific system info resource   ${sys_id_2} 
+    Remove specific system info resource   ${sys_id_3} 
+    
+Register System Info and get system Id
+    [Arguments]     ${content}
+    Register System Info    ${content}
+    Set Suite Variable    ${SYSTEM_ID}    ${response}[body][systemId]
+    
+
+Update specific system info resource
+    [Arguments]     ${systemId}     ${content}
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    ${file}=    Catenate    SEPARATOR=    jsons/    ${content}    .json
+    ${body}=    Get File    ${file}
+    PATCH  ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info/${systemId}   ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+Remove specific system info resource 
+    [Arguments]     ${systemId} 
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"application/json"}
+    DELETE  ${apiRoot}/${apiName}/${apiVersion}/fed_resources/system_info/${systemId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+        
+Retrieve all system info resources wrong URL
+    Should Be True    ${PIC_MEC_PLAT} == 1
+    Should Be True    ${PIC_SERVICES} == 1
+    Set Headers    {"Accept":"application/json"}
+    Set Headers    {"Content-Type":"*/*"}
+    Set Headers    {"Authorization":"${TOKEN}"}
+    GET   ${apiRoot}/${apiName}/v10/fed_resources/system_info
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/environment/variables.txt b/MEC040/SRV/MEF/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8ac81d51a9ec07c2783ac53729289c441cebac8e
--- /dev/null
+++ b/MEC040/SRV/MEF/environment/variables.txt
@@ -0,0 +1,46 @@
+*** Variables ***
+# Generic variables
+${SCHEMA}                               http
+${HOST}                                 127.0.0.1
+${PORT}                                 8084
+${response}                             {}
+${TOKEN}                                YWxhZGRpbjpvcGVuc2VzYW1l
+${apiRoot}        
+${apiName}                              fed-enablement
+${apiVersion}                           v1
+
+${REGISTER_ACTION}        REGISTER
+${REMOVE_ACTION}          REMOVE 
+${NO_ACTION}              NO_ACTION
+
+
+${SYSTEM_ID_PLACEHOLDER}        		SYSTEM_ID_PLACEHOLDER
+
+${EXPECTED_SYSTEM_ID}                   SYSTEM_ID
+${NOT_EXISTING_SYSTEM_ID}               NOT_EXISTING_SYS_ID
+${EXPECTED_SYSTEM_ID2}                  SYSTEM_ID2
+${SYSTEM_ID_QUERY_PARAM}                systemId=${EXPECTED_SYSTEM_ID} 
+${NOT_EXT_SYSTEM_ID_QUERY_PARAM}        systemId=${NOT_EXISTING_SYSTEM_ID} 
+${MULTIPLE_SYSTEM_ID_QUERY_PARAM}       systemId=${EXPECTED_SYSTEM_ID},${EXPECTED_SYSTEM_ID2}
+${EMPTY_SYSTEM_ID_QUERY_PARAM}          systemId=
+
+${EXPECTED_SYSTEM_NAME}                 SYSTEM_NAME
+${EXPECTED_SYSTEM_NAME2}                SYSTEM_NAME2
+${NOT_EXISTING_SYS_NAME}                NOT_EXISTING_SYS_NAME
+${SYSTEM_NAME_QUERY_PARAM}              systemName=${EXPECTED_SYSTEM_NAME}
+${NOT_EXT_SYSTEM_NAME_QUERY_PARAM}      systemName=${NOT_EXISTING_SYS_NAME}
+${MUTIPLE_SYSTEM_NAME_QUERY_PARAM}      systemName=${EXPECTED_SYSTEM_NAME},${EXPECTED_SYSTEM_NAME2}    
+${EMPTY_SYSTEM_NAME_QUERY_PARAM}        systemName=
+
+${EXPECTED_SYSTEM_PROVIDER}             SYSTEM_PROVIDER
+${EXPECTED_SYSTEM_PROVIDER2}            SYSTEM_PROVIDER2
+${NOT_EXT_SYS_PROVIDER}                 NOT_EXISTING_SYS_PROVIDER
+${SYSTEM_PROVIDER_QUERY_PARAM}          systemProvider=${EXPECTED_SYSTEM_PROVIDER}
+${NOT_EXT_SYS_PROVIDER_QUERY_PARAM}     systemProvider=${NOT_EXT_SYS_PROVIDER}
+${MUTIPLE_SYS_PROVIDER_QUERY_PAR}       systemProvider=${EXPECTED_SYSTEM_PROVIDER},${EXPECTED_SYSTEM_PROVIDER2}    
+${EMPTY_SYSTEM_PROVIDER_QUERY_PARAM}        systemProvider=
+
+
+${FILTER_ON_SYSTEM_ID_AND_NAME}       systemId=${EXPECTED_SYSTEM_ID},systemName=${EXPECTED_SYSTEM_NAME}
+${EXPECTED_NEW_SYSTEM_PROVIDER}       SYSTEM_NEW_ENDPOINT_1
+${EXPECTED_NEW_SYSTEM_NAME}           SYSTEM_NEW_NAME_1
diff --git a/MEC040/SRV/MEF/jsons/SystemInfo.json b/MEC040/SRV/MEF/jsons/SystemInfo.json
new file mode 100644
index 0000000000000000000000000000000000000000..c56ee19f43ff9aae95d909bad05400b47c20f649
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfo.json
@@ -0,0 +1,4 @@
+{
+  "systemName": "systemName",
+  "systemProvider": "systemProvider"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfo2.json b/MEC040/SRV/MEF/jsons/SystemInfo2.json
new file mode 100644
index 0000000000000000000000000000000000000000..f4adc3035df0a1ddd21f38fa583b38437f86481e
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfo2.json
@@ -0,0 +1,4 @@
+{
+  "systemName": "systemName2",
+  "systemProvider": "systemProvider2"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfo3.json b/MEC040/SRV/MEF/jsons/SystemInfo3.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ab6257f61c3ab9c089b8f4adce9d90797cb6c31
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfo3.json
@@ -0,0 +1,4 @@
+{
+  "systemName": "systemName3",
+  "systemProvider": "systemProvider3"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoBR.json b/MEC040/SRV/MEF/jsons/SystemInfoBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..fff9ecc25cf72427189ed88e2f15b764bbe4c5ce
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoBR.json
@@ -0,0 +1,5 @@
+{
+  "systemId":"SYSTEM_ID",
+  "systemName": "systemNamea",
+  "systemProvider": "systemProvider"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoEmptySystemProvider.json b/MEC040/SRV/MEF/jsons/SystemInfoEmptySystemProvider.json
new file mode 100644
index 0000000000000000000000000000000000000000..258706acd04fe6d694a6f175859156640e047362
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoEmptySystemProvider.json
@@ -0,0 +1,4 @@
+{
+  "systemName": "systemName",
+  "systemProvider": ""
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoUpdate.json b/MEC040/SRV/MEF/jsons/SystemInfoUpdate.json
new file mode 100644
index 0000000000000000000000000000000000000000..20ba86630047947e008113a2a1f720ee21072daf
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoUpdate.json
@@ -0,0 +1,3 @@
+{
+  "endpoint": "SYSTEM_NEW_ENDPOINT_1"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoUpdate2.json b/MEC040/SRV/MEF/jsons/SystemInfoUpdate2.json
new file mode 100644
index 0000000000000000000000000000000000000000..5ce2c24c562cc7b71dbf6988dc89a9ff34f36fbc
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoUpdate2.json
@@ -0,0 +1,3 @@
+{
+  "systemName": "SYSTEM_NEW_NAME_1"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoUpdate3.json b/MEC040/SRV/MEF/jsons/SystemInfoUpdate3.json
new file mode 100644
index 0000000000000000000000000000000000000000..d9866933db557716f12c135ce08b689d805569e2
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoUpdate3.json
@@ -0,0 +1,4 @@
+{
+  "endpoint": "SYSTEM_NEW_ENDPOINT_1",
+  "systemName": "SYSTEM_NEW_NAME_1"
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/jsons/SystemInfoUpdateBR.json b/MEC040/SRV/MEF/jsons/SystemInfoUpdateBR.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a73a41bfdf76d6f793007240d80983a52f15f97
--- /dev/null
+++ b/MEC040/SRV/MEF/jsons/SystemInfoUpdateBR.json
@@ -0,0 +1,2 @@
+{
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/schemas/SystemInfo.schema.json b/MEC040/SRV/MEF/schemas/SystemInfo.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..7ded9c969484c2e9636687164cfc26936f110a5c
--- /dev/null
+++ b/MEC040/SRV/MEF/schemas/SystemInfo.schema.json
@@ -0,0 +1,24 @@
+{
+  "title": "SystemInfo",
+  "type": "object",
+  "description": "This type represents an information provided by the MEC orchestrator as a part of the \"Registration of MEC system to the federation\"",
+  "properties": {
+    "systemId": {
+      "description": "Identifier of the MEC system. For the uniqueness of the identifier across the federated MEC systems, UUID format [i.9] is recommended. Shall be absent in POST request, and present otherwise.",
+      "type": "string"
+    },
+    "systemName": {
+      "description": "The name of the MEC system. This is how the MEC system identifies other MEC systems",
+      "type": "string"
+    },
+    "systemProvider": {
+      "description": "Provider of the MEC system.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "systemId",
+    "systemName",
+    "systemProvider"
+  ]
+}
\ No newline at end of file
diff --git a/MEC040/SRV/MEF/schemas/SystemInfoList.schema.json b/MEC040/SRV/MEF/schemas/SystemInfoList.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..e237cec392a58fcaafd0ed15f80cc6399a0c4f61
--- /dev/null
+++ b/MEC040/SRV/MEF/schemas/SystemInfoList.schema.json
@@ -0,0 +1,27 @@
+{
+  "type": "array",
+  "items": {
+    "title": "SystemInfo",
+    "type": "object",
+    "description": "This type represents an information provided by the MEC orchestrator as a part of the \"Registration of MEC system to the federation\"",
+    "properties": {
+      "systemId": {
+        "description": "Identifier of the MEC system. For the uniqueness of the identifier across the federated MEC systems, UUID format [i.9] is recommended. Shall be absent in POST request, and present otherwise.",
+        "type": "string"
+      },
+      "systemName": {
+        "description": "The name of the MEC system. This is how the MEC system identifies other MEC systems",
+        "type": "string"
+      },
+      "systemProvider": {
+        "description": "Provider of the MEC system.",
+        "type": "string"
+      }
+    },
+    "required": [
+      "systemId",
+      "systemName",
+      "systemProvider"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/MEX/ANY/ANY.robot b/MEX/ANY/ANY.robot
index e0381ad1e96a1384a5ed0dfce80620b95bd84798..8d743cd1f1a8d5d4b83f5fca5889bf974d5fa1bd 100644
--- a/MEX/ANY/ANY.robot
+++ b/MEX/ANY/ANY.robot
@@ -17,9 +17,10 @@ Request access to all resources using no token
     ...    receives a request without token
     ...    ETSI GS MEC 009 1.1.1, clause 6.16.1
     [Tags]    GENERIC_TESTS    INCLUDE_UNDEFINED_SCHEMAS
-    : FOR    ${INDEX}    IN RANGE    0    3
-    \    @{list}    Split String    ${data[${INDEX}]}    separator=|    max_split=-1
-    \    Perform a generic request using no token    @{list}
+    FOR    ${INDEX}    IN RANGE    0    3
+        @{list}    Split String    ${data[${INDEX}]}    separator=|    max_split=-1
+        Perform a generic request using no token    @{list}
+    END
     
 Request access to all resources using invalid token
     [Documentation]    TP_MEC_MEX_ANY_001_WT
@@ -27,11 +28,13 @@ Request access to all resources using invalid token
     ...    receives a request with an invalid token
     ...    ETSI GS MEC 009 1.1.1, clause 6.16.1
     [Tags]    GENERIC_TESTS    INCLUDE_UNDEFINED_SCHEMAS
-    : FOR    ${INDEX}    IN RANGE    0    3
-    \    @{list}    Split String    ${data[${INDEX}]}    separator=|    max_split=-1
-    \    Perform a generic request using invalid token    @{list}
-    
+    FOR    ${INDEX}    IN RANGE    0    3
+       @{list}    Split String    ${data[${INDEX}]}    separator=|    max_split=-1
+       Perform a generic request using invalid token    @{list}
+    END
+
 
+    
 *** Keywords ***
 Perform a generic request using no token
     [Arguments]   @{params}
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..905e81319878a4899dccd757b0b115b7e100d94b
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,21 @@
+##Docker file containing the environment for running robot3.1 based on python3.9
+## As example, MEC016 test suite are used
+##How to run this container.
+
+## Build the image using this docker file, make sure the server side is up and running and eventually run the tests.
+
+FROM python:3.10-slim
+
+RUN addgroup robot && adduser -D -G robot -h /home/robot robot
+WORKDIR /home/robot
+
+# Install system packages
+RUN apt-get update && apt-get install -y \
+    build-essential \
+    libssl-dev \
+    libffi-dev
+
+COPY requirements.txt .
+RUN pip install -r requirements.txt
+
+COPY libraries libraries
diff --git a/docker/Readme.md b/docker/Readme.md
new file mode 100755
index 0000000000000000000000000000000000000000..8b01320d9efbc90be5efe7198a18c293e6ac8a6a
--- /dev/null
+++ b/docker/Readme.md
@@ -0,0 +1,47 @@
+# Guide to Run Robot Tests in a Docker Container
+
+This guide provides instructions on how to build a Docker image and run Robot Framework tests in a Docker container.
+
+## Prerequisites
+
+- Docker must be installed and running on your system.
+
+## Steps
+
+### 1. Build the Docker Image
+
+To build the Docker image, navigate to the root directory of your project and run the following script:
+
+```sh
+$ ./docker/build_img.sh
+```
+
+### 2. Run the Test
+
+To execute a Robot Framework test, use the following script and specify the path to the test file relative to the root directory:
+
+```sh
+$ ./docker/run_test.sh <robot_test_file_from_root>
+```
+
+### Example
+
+Here is an example of how to run a specific test file:
+
+```sh
+$ ./docker/run_test.sh MEC029/SRV/FAIS/PlatFixedAcessInfo.robot
+```
+
+## Notes
+
+- Ensure that the specified test file path is correct and accessible from the root directory.
+
+## Troubleshooting
+
+- If you encounter any issues with Docker, ensure that your Docker service is running and that you have the necessary permissions to execute Docker commands.
+- Verify that the test file exists and that the path is correct.
+
+## Additional Resources
+
+- [Docker Documentation](https://docs.docker.com/)
+- [Robot Framework Documentation](https://robotframework.org/)
\ No newline at end of file
diff --git a/docker/build_img.sh b/docker/build_img.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a44aad6d0b56b86b18358d67f8377bdf348dfff1
--- /dev/null
+++ b/docker/build_img.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+script_dir_path=$(dirname "$(realpath "$0")")
+dockerfile_path="${script_dir_path}/Dockerfile"
+docker build -f "${dockerfile_path}" "${script_dir_path}/.." -t ttf-robot-img:latest
+
diff --git a/docker/run_tests.sh b/docker/run_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f4b7a5b9802c39be0054df2570986f03d7d01007
--- /dev/null
+++ b/docker/run_tests.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Function to display usage message
+usage() {
+    echo "Usage: $0 testname"
+    exit 1
+}
+
+if [ "$#" -ne 1 ]; then
+    usage
+fi
+
+testname=$1
+
+if [ -f "$testname" ]; then
+    full_dir_path=$(dirname "$(realpath "$testname")")
+    echo "Running the test: $(realpath "$testname")"
+else
+    echo "The file '$testname' does not exist."
+    exit 1
+fi
+
+script_dir_path=$(dirname "$(realpath "$0")")
+root_path="${script_dir_path}/../"
+
+docker run --rm -it --name etsi-ttf-robot \
+  -v "${root_path}":/home/robot \
+  --workdir "/home/robot/" \
+  -e TEST_FILE="${testname}" \
+  ttf-robot-img:latest \
+  python -m robot -X "${TEST_FILE}"
diff --git a/examples/notification_server/Dockerfile b/examples/notification_server/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..68f76091e5fd69ea2e4877fd863f2d2b26f7149b
--- /dev/null
+++ b/examples/notification_server/Dockerfile
@@ -0,0 +1,30 @@
+##Docker file containing the environment for running robot3.1 based on python3.9
+## As example, MEC016 test suite are used
+##How to run this container.
+
+## Build the image using this docker file, make sure the server side is up and running and eventually run the tests.
+
+FROM python:3.10-slim
+
+RUN addgroup robot && adduser -D -G robot -h /home/robot robot
+WORKDIR /home/robot
+
+# Install system packages
+RUN apt-get update && apt-get install -y \
+    git \
+    wget \
+    build-essential \
+    python3-dev \
+    libssl-dev \
+    libffi-dev \
+    python3-pip
+
+
+
+COPY requirements.txt .
+RUN pip install -r requirements.txt
+
+COPY tests tests
+COPY libraries libraries
+COPY run_tests.sh .
+ENTRYPOINT ./run_tests.sh
diff --git a/examples/notification_server/RNIS/.keepme b/examples/notification_server/RNIS/.keepme
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/.dockerignore b/examples/notification_server/RNIS/dummy_mec012_server/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..cdd823e64e7e91ae85da84f22410ecb7eb370ae2
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/.dockerignore
@@ -0,0 +1,72 @@
+.travis.yaml
+.swagger-codegen-ignore
+README.md
+tox.ini
+git_push.sh
+test-requirements.txt
+setup.py
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+venv/
+.python-version
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+#Ipython Notebook
+.ipynb_checkpoints
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/.gitignore b/examples/notification_server/RNIS/dummy_mec012_server/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a655050c2631466828b5b8bfc59ae27f9ac02dc5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/.gitignore
@@ -0,0 +1,64 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+venv/
+.python-version
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+#Ipython Notebook
+.ipynb_checkpoints
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen-ignore b/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen-ignore
new file mode 100644
index 0000000000000000000000000000000000000000..c5fa491b4c557bf997d5dd21797de782545dc9e5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen-ignore
@@ -0,0 +1,23 @@
+# Swagger Codegen Ignore
+# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen/VERSION b/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..1617617651b9d9b08e0adc47f3e1393f8a9876f1
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/.swagger-codegen/VERSION
@@ -0,0 +1 @@
+3.0.46
\ No newline at end of file
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/.travis.yml b/examples/notification_server/RNIS/dummy_mec012_server/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..dd6c4450aa902ae68479c3d76d45145e18d6052e
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/.travis.yml
@@ -0,0 +1,13 @@
+# ref: https://docs.travis-ci.com/user/languages/python
+language: python
+python:
+  - "3.2"
+  - "3.3"
+  - "3.4"
+  - "3.5"
+  #- "3.5-dev" # 3.5 development branch
+  #- "nightly" # points to the latest development branch e.g. 3.6-dev
+# command to install dependencies
+install: "pip install -r requirements.txt"
+# command to run tests
+script: nosetests
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/Dockerfile b/examples/notification_server/RNIS/dummy_mec012_server/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..f9243a5ad0d025c5481e5a81bac213f716242100
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/Dockerfile
@@ -0,0 +1,16 @@
+FROM python:3.6-alpine
+
+RUN mkdir -p /usr/src/app
+WORKDIR /usr/src/app
+
+COPY requirements.txt /usr/src/app/
+
+RUN pip3 install --no-cache-dir -r requirements.txt
+
+COPY . /usr/src/app
+
+EXPOSE 8080
+
+ENTRYPOINT ["python3"]
+
+CMD ["-m", "swagger_server"]
\ No newline at end of file
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/README.md b/examples/notification_server/RNIS/dummy_mec012_server/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f9ca4565e01dfc5295cd8edd9223538ff4349e04
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/README.md
@@ -0,0 +1,49 @@
+# Swagger generated server
+
+## Overview
+This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the
+[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub.  This
+is an example of building a swagger-enabled Flask server.
+
+This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask.
+
+## Requirements
+Python 3.5.2+
+
+## Usage
+To run the server, please execute the following from the root directory:
+
+```
+pip3 install -r requirements.txt
+python3 -m swagger_server
+```
+
+and open your browser to here:
+
+```
+http://localhost:8080/rni/v2/ui/
+```
+
+Your Swagger definition lives here:
+
+```
+http://localhost:8080/rni/v2/swagger.json
+```
+
+To launch the integration tests, use tox:
+```
+sudo pip install tox
+tox
+```
+
+## Running with Docker
+
+To run the server on a Docker container, please execute the following from the root directory:
+
+```bash
+# building the image
+docker build -t swagger_server .
+
+# starting up a container
+docker run -p 8080:8080 swagger_server
+```
\ No newline at end of file
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/git_push.sh b/examples/notification_server/RNIS/dummy_mec012_server/git_push.sh
new file mode 100644
index 0000000000000000000000000000000000000000..160f6f213999c7ae67839fbd6fc2ba0b72675832
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/git_push.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+    git_user_id="GIT_USER_ID"
+    echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+    git_repo_id="GIT_REPO_ID"
+    echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+    release_note="Minor update"
+    echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=`git remote`
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+    if [ "$GIT_TOKEN" = "" ]; then
+        echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+        git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
+    else
+        git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
+    fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
+
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/requirements.txt b/examples/notification_server/RNIS/dummy_mec012_server/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..62c7fffac8b5bc20011c481e6ae3601eca6d4a08
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/requirements.txt
@@ -0,0 +1,5 @@
+connexion >= 2.6.0
+connexion[swagger-ui] >= 2.6.0
+python_dateutil == 2.6.0
+setuptools >= 21.0.0
+swagger-ui-bundle >= 0.0.2
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/setup.py b/examples/notification_server/RNIS/dummy_mec012_server/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..b7b29a1f014dc5d8edea8fda1c9432f2bf8719d0
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/setup.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+import sys
+from setuptools import setup, find_packages
+
+NAME = "swagger_server"
+VERSION = "1.0.0"
+# To install the library, run the following
+#
+# python setup.py install
+#
+# prerequisite: setuptools
+# http://pypi.python.org/pypi/setuptools
+
+REQUIRES = [
+    "connexion",
+    "swagger-ui-bundle>=0.0.2"
+]
+
+setup(
+    name=NAME,
+    version=VERSION,
+    description="ETSI GS MEC 012 - Radio Network Information API",
+    author_email="",
+    url="",
+    keywords=["Swagger", "ETSI GS MEC 012 - Radio Network Information API"],
+    install_requires=REQUIRES,
+    packages=find_packages(),
+    package_data={'': ['swagger/swagger.yaml']},
+    include_package_data=True,
+    entry_points={
+        'console_scripts': ['swagger_server=swagger_server.__main__:main']},
+    long_description="""\
+    The ETSI MEC ISG MEC012 Radio Network Information API described using OpenAPI.
+    """
+)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/sub_payload.json b/examples/notification_server/RNIS/dummy_mec012_server/sub_payload.json
new file mode 100644
index 0000000000000000000000000000000000000000..e2531e5cf3964f89d12215b05126698fead9d633
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/sub_payload.json
@@ -0,0 +1,13 @@
+{
+	"subscriptionType": "CellChangeSubscription",
+	"callbackReference": "https://10.30.8.200:8080/notificationEndpoint",
+	"filterCriteriaAssocHo": {
+		"ecgi": [{
+			"plmn": {
+				"mnc": "01",
+				"mcc": "001"
+			},
+			"cellId": "ACBDEFA"
+		}]
+	}
+}
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/__init__.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/__main__.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/__main__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3108da939e184545686e156d46378e8385034db
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/__main__.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+
+import connexion
+
+from swagger_server import encoder
+
+
+def main():
+    app = connexion.App(__name__, specification_dir='./swagger/')
+    app.app.json_encoder = encoder.JSONEncoder
+    app.add_api('swagger.yaml', arguments={'title': 'ETSI GS MEC 012 - Radio Network Information API'}, pythonic_params=True)
+    app.run(port=8080)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/__init__.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/async_task.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/async_task.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4a3065be616e3f21ee3291d9344a3bcf4c978e0
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/async_task.py
@@ -0,0 +1,46 @@
+import sys
+import time
+import atexit
+from flask import current_app
+from threading import Thread
+import logging
+import random
+import logging
+
+logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
+
+## Each second an output_msg is shown and eventually the method with name callback_name belonging to this_object is called.
+def simulate_processing(min_time_sec, max_time_sec, output_msg, this_object, callback_name, pars):
+    iterations = random.randint(min_time_sec, max_time_sec)
+    logging.info("The process will take around " + str(iterations) + " seconds")
+    for i in range(0, iterations):
+        time.sleep(1)
+
+    logging.info(output_msg + " completed!")
+    class_method = getattr(this_object.__class__, callback_name)
+    class_method(this_object, pars)
+
+
+def start_sim_process(min_time_sec, max_time_sec, output_msg, this_object, callback_name, pars):
+    if min_time_sec > max_time_sec:
+        logging.warn(
+            "Min time cannot be greater than max time. Setting min to 10 seconds and max to 20 seconds, respectively.")
+        min_time_sec = 10
+        max_time_sec = 20
+    logging.info("Starting the process simulator...")
+    thr = Thread(target=simulate_processing,
+                 args=[min_time_sec, max_time_sec, output_msg, this_object, callback_name, pars])
+    thr.start()
+
+
+##What does this function do ? It triggers the callback after a given timeout
+def trigger_callback_after_timeout(timeout, this_object, callback_name, pars):
+    logging.info("Waiting " + str(timeout) + " seconds before triggering the process")
+    time.sleep(timeout)
+    class_method = getattr(this_object.__class__, callback_name)
+    class_method(this_object, pars)
+
+
+def start_workflow(waiting_time, this_object, callback_name, pars):
+    thr = Thread(target=trigger_callback_after_timeout, args=[waiting_time, this_object, callback_name, pars])
+    thr.start()
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/authorization_controller.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/authorization_controller.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f7b0bb3e281b3fb9efb588dfc8ba4c8cc3a59ed
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/authorization_controller.py
@@ -0,0 +1,6 @@
+from typing import List
+"""
+controller generated to handled auth operation described at:
+https://connexion.readthedocs.io/en/latest/security.html
+"""
+
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/dummy_service.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/dummy_service.py
new file mode 100644
index 0000000000000000000000000000000000000000..39cd5fff87f3f947772ccebafbeaa2cce6882051
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/dummy_service.py
@@ -0,0 +1,22 @@
+import logging
+logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
+import requests
+
+import swagger_server.controllers.async_task as at
+
+class DummyService:
+    def async_task(self, pars):
+        notification_url = pars[0]
+        data = {}
+        data["_links"]={}
+        data["_links"]["self"]="XX"
+        data["expiryDeadline"]={}
+        data["expiryDeadline"]["seconds"]=1234
+        data["expiryDeadline"]["nanoseconds"]=1234
+        logging.info(notification_url)
+        logging.info(data)
+        response = requests.post(notification_url, json=data)
+        status_code = response.status_code
+
+    def invoke_sth(self,notification_url):
+        at.start_workflow(5, self, "async_task", [notification_url])
\ No newline at end of file
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/rni_controller.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/rni_controller.py
new file mode 100644
index 0000000000000000000000000000000000000000..41db3fc4db82bdc6c43f7cb0394ca78505f19f79
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/controllers/rni_controller.py
@@ -0,0 +1,261 @@
+import connexion
+import six
+
+import swagger_server.controllers.dummy_service as ds
+
+from swagger_server.models.inline_subscription import InlineSubscription  # noqa: E501
+from swagger_server.models.l2_meas import L2Meas  # noqa: E501
+from swagger_server.models.plmn_info import PlmnInfo  # noqa: E501
+from swagger_server.models.problem_details import ProblemDetails  # noqa: E501
+from swagger_server.models.rab_info import RabInfo  # noqa: E501
+from swagger_server.models.s1_bearer_info import S1BearerInfo  # noqa: E501
+from swagger_server.models.subscription_link_list import SubscriptionLinkList  # noqa: E501
+from swagger_server import util
+import logging
+from flask import Response
+import json
+from swagger_server.controllers.dummy_service import DummyService
+
+logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
+
+def layer2_meas_info_get(app_ins_id=None, cell_id=None, ue_ipv4_address=None, ue_ipv6_address=None, nated_ip_address=None, gtp_teid=None, dl_gbr_prb_usage_cell=None, ul_gbr_prb_usage_cell=None, dl_nongbr_prb_usage_cell=None, ul_nongbr_prb_usage_cell=None, dl_total_prb_usage_cell=None, ul_total_prb_usage_cell=None, received_dedicated_preambles_cell=None, received_randomly_selected_preambles_low_range_cell=None, received_randomly_selected_preambles_high_range_cell=None, number_of_active_ue_dl_gbr_cell=None, number_of_active_ue_ul_gbr_cell=None, number_of_active_ue_dl_nongbr_cell=None, number_of_active_ue_ul_nongbr_cell=None, dl_gbr_pdr_cell=None, ul_gbr_pdr_cell=None, dl_nongbr_pdr_cell=None, ul_nongbr_pdr_cell=None, dl_gbr_delay_ue=None, ul_gbr_delay_ue=None, dl_nongbr_delay_ue=None, ul_nongbr_delay_ue=None, dl_gbr_pdr_ue=None, ul_gbr_pdr_ue=None, dl_nongbr_pdr_ue=None, ul_nongbr_pdr_ue=None, dl_gbr_throughput_ue=None, ul_gbr_throughput_ue=None, dl_nongbr_throughput_ue=None, ul_nongbr_throughput_ue=None, dl_gbr_data_volume_ue=None, ul_gbr_data_volume_ue=None, dl_nongbr_data_volume_ue=None, ul_nongbr_data_volume_ue=None):  # noqa: E501
+    """Retrieve information on layer 2 measurements
+
+    Queries information about the layer 2 measurements. # noqa: E501
+
+    :param app_ins_id: Application instance identifier
+    :type app_ins_id: str
+    :param cell_id: Comma separated list of E-UTRAN Cell Identities
+    :type cell_id: List[str]
+    :param ue_ipv4_address: Comma separated list of IE IPv4 addresses as defined for the type for AssociateId
+    :type ue_ipv4_address: List[str]
+    :param ue_ipv6_address: Comma separated list of IE IPv6 addresses as defined for the type for AssociateId
+    :type ue_ipv6_address: List[str]
+    :param nated_ip_address: Comma separated list of IE NATed IP addresses as defined for the type for AssociateId
+    :type nated_ip_address: List[str]
+    :param gtp_teid: Comma separated list of GTP TEID addresses as defined for the type for AssociateId
+    :type gtp_teid: List[str]
+    :param dl_gbr_prb_usage_cell: PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314
+    :type dl_gbr_prb_usage_cell: int
+    :param ul_gbr_prb_usage_cell: PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314
+    :type ul_gbr_prb_usage_cell: int
+    :param dl_nongbr_prb_usage_cell: PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314
+    :type dl_nongbr_prb_usage_cell: int
+    :param ul_nongbr_prb_usage_cell: PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314
+    :type ul_nongbr_prb_usage_cell: int
+    :param dl_total_prb_usage_cell: PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314
+    :type dl_total_prb_usage_cell: int
+    :param ul_total_prb_usage_cell: PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314
+    :type ul_total_prb_usage_cell: int
+    :param received_dedicated_preambles_cell: Received dedicated preambles in percentage as defined in ETSI TS 136 314
+    :type received_dedicated_preambles_cell: int
+    :param received_randomly_selected_preambles_low_range_cell: Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314
+    :type received_randomly_selected_preambles_low_range_cell: int
+    :param received_randomly_selected_preambles_high_range_cell: Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314
+    :type received_randomly_selected_preambles_high_range_cell: int
+    :param number_of_active_ue_dl_gbr_cell: Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314
+    :type number_of_active_ue_dl_gbr_cell: int
+    :param number_of_active_ue_ul_gbr_cell: Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314
+    :type number_of_active_ue_ul_gbr_cell: int
+    :param number_of_active_ue_dl_nongbr_cell: Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314
+    :type number_of_active_ue_dl_nongbr_cell: int
+    :param number_of_active_ue_ul_nongbr_cell: Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314
+    :type number_of_active_ue_ul_nongbr_cell: int
+    :param dl_gbr_pdr_cell: Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314
+    :type dl_gbr_pdr_cell: int
+    :param ul_gbr_pdr_cell: Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314
+    :type ul_gbr_pdr_cell: int
+    :param dl_nongbr_pdr_cell: Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314
+    :type dl_nongbr_pdr_cell: int
+    :param ul_nongbr_pdr_cell: Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314
+    :type ul_nongbr_pdr_cell: int
+    :param dl_gbr_delay_ue: Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_gbr_delay_ue: int
+    :param ul_gbr_delay_ue: Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_gbr_delay_ue: int
+    :param dl_nongbr_delay_ue: Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_nongbr_delay_ue: int
+    :param ul_nongbr_delay_ue: Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_nongbr_delay_ue: int
+    :param dl_gbr_pdr_ue: Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314
+    :type dl_gbr_pdr_ue: int
+    :param ul_gbr_pdr_ue: Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314
+    :type ul_gbr_pdr_ue: int
+    :param dl_nongbr_pdr_ue: Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314
+    :type dl_nongbr_pdr_ue: int
+    :param ul_nongbr_pdr_ue: Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314
+    :type ul_nongbr_pdr_ue: int
+    :param dl_gbr_throughput_ue: Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_gbr_throughput_ue: int
+    :param ul_gbr_throughput_ue: Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_gbr_throughput_ue: int
+    :param dl_nongbr_throughput_ue: Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_nongbr_throughput_ue: int
+    :param ul_nongbr_throughput_ue: Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_nongbr_throughput_ue: int
+    :param dl_gbr_data_volume_ue: Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_gbr_data_volume_ue: int
+    :param ul_gbr_data_volume_ue: Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_gbr_data_volume_ue: int
+    :param dl_nongbr_data_volume_ue: Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type dl_nongbr_data_volume_ue: int
+    :param ul_nongbr_data_volume_ue: Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314
+    :type ul_nongbr_data_volume_ue: int
+
+    :rtype: L2Meas
+    """
+    return 'do some magic!'
+
+
+def plmn_info_get(app_ins_id):  # noqa: E501
+    """Retrieve information on the underlying Mobile Network that the MEC application is associated to
+
+    Queries information about the Mobile Network # noqa: E501
+
+    :param app_ins_id: Comma separated list of Application instance identifiers
+    :type app_ins_id: List[str]
+
+    :rtype: List[PlmnInfo]
+    """
+    return 'do some magic!'
+
+
+def rab_info_get(app_ins_id=None, cell_id=None, ue_ipv4_address=None, ue_ipv6_address=None, nated_ip_address=None, gtp_teid=None, erab_id=None, qci=None, erab_mbr_dl=None, erab_mbr_ul=None, erab_gbr_dl=None, erab_gbr_ul=None):  # noqa: E501
+    """Retrieve information on Radio Access Bearers
+
+    Queries information about the Radio Access Bearers # noqa: E501
+
+    :param app_ins_id: Application instance identifier
+    :type app_ins_id: str
+    :param cell_id: Comma separated list of E-UTRAN Cell Identities
+    :type cell_id: List[str]
+    :param ue_ipv4_address: Comma separated list of IE IPv4 addresses as defined for the type for AssociateId
+    :type ue_ipv4_address: List[str]
+    :param ue_ipv6_address: Comma separated list of IE IPv6 addresses as defined for the type for AssociateId
+    :type ue_ipv6_address: List[str]
+    :param nated_ip_address: Comma separated list of IE NATed IP addresses as defined for the type for AssociateId
+    :type nated_ip_address: List[str]
+    :param gtp_teid: Comma separated list of GTP TEID addresses as defined for the type for AssociateId
+    :type gtp_teid: List[str]
+    :param erab_id: E-RAB identifier
+    :type erab_id: int
+    :param qci: QoS Class Identifier as defined in ETSI TS 123 401
+    :type qci: int
+    :param erab_mbr_dl: Maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401
+    :type erab_mbr_dl: int
+    :param erab_mbr_ul: Maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+    :type erab_mbr_ul: int
+    :param erab_gbr_dl: Guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401
+    :type erab_gbr_dl: int
+    :param erab_gbr_ul: Guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+    :type erab_gbr_ul: int
+
+    :rtype: RabInfo
+    """
+    return 'do some magic!'
+
+
+def s1_bearer_info_get(temp_ue_id=None, ue_ipv4_address=None, ue_ipv6_address=None, nated_ip_address=None, gtp_teid=None, cell_id=None, erab_id=None):  # noqa: E501
+    """Retrieve S1-U bearer information related to specific UE(s)
+
+    Queries information about the S1 bearer(s) # noqa: E501
+
+    :param temp_ue_id: Comma separated list of temporary identifiers allocated for the specific UE as defined in   ETSI TS 136 413
+    :type temp_ue_id: List[str]
+    :param ue_ipv4_address: Comma separated list of IE IPv4 addresses as defined for the type for AssociateId
+    :type ue_ipv4_address: List[str]
+    :param ue_ipv6_address: Comma separated list of IE IPv6 addresses as defined for the type for AssociateId
+    :type ue_ipv6_address: List[str]
+    :param nated_ip_address: Comma separated list of IE NATed IP addresses as defined for the type for AssociateId
+    :type nated_ip_address: List[str]
+    :param gtp_teid: Comma separated list of GTP TEID addresses as defined for the type for AssociateId
+    :type gtp_teid: List[str]
+    :param cell_id: Comma separated list of E-UTRAN Cell Identities
+    :type cell_id: List[str]
+    :param erab_id: Comma separated list of E-RAB identifiers
+    :type erab_id: List[int]
+
+    :rtype: S1BearerInfo
+    """
+    return 'do some magic!'
+
+
+def subscription_link_list_subscriptions_get(subscription_type=None):  # noqa: E501
+    """Retrieve information on subscriptions for notifications
+
+    Queries information on subscriptions for notifications # noqa: E501
+
+    :param subscription_type: Filter on a specific subscription type. Permitted values: cell_change, rab_est, rab_mod, rab_rel, meas_rep_ue, nr_meas_rep_ue, timing_advance_ue, ca_reconf, s1_bearer.
+    :type subscription_type: str
+
+    :rtype: SubscriptionLinkList
+    """
+    return 'do some magic!'
+
+
+def subscriptions_delete(subscription_id):  # noqa: E501
+    """Cancel an existing subscription
+
+    Cancels an existing subscription, identified by its self-referring URI returned on creation (initial POST) # noqa: E501
+
+    :param subscription_id: Subscription Id, specifically the \&quot;Self-referring URI\&quot; returned in the subscription request
+    :type subscription_id: str
+
+    :rtype: None
+    """
+    return 'do some magic!'
+
+
+def subscriptions_get(subscription_id):  # noqa: E501
+    """Retrieve information on current specific subscription
+
+    Queries information about an existing subscription, identified by its self-referring URI returned on creation (initial POST) # noqa: E501
+
+    :param subscription_id: Subscription Id, specifically the \&quot;Self-referring URI\&quot; returned in the subscription request
+    :type subscription_id: str
+
+    :rtype: InlineSubscription
+    """
+    return 'do some magic!'
+
+
+
+def subscriptions_post(body):  # noqa: E501
+    
+    """Create a new subscription
+
+    Creates a new subscription to Radio Network Information notifications # noqa: E501
+
+    :param body: Subscription to be created
+    :type body: dict | bytes
+
+    :rtype: InlineSubscription
+    """
+
+    logging.info(body)
+    if connexion.request.is_json:
+        body = InlineSubscription.from_dict(connexion.request.get_json())  # noqa: E501
+    resp = Response(response=json.dumps(body), status=201)
+    dummy_service = DummyService()
+    
+    notification_url = connexion.request.get_json()["callbackReference"]
+    #dummy_service.async_task(notification_url)
+    dummy_service.invoke_sth(notification_url)
+    return resp
+
+
+def subscriptions_put(body, subscription_id):  # noqa: E501
+    """Modify an existing subscription
+
+    Updates an existing subscription, identified by its self-referring URI returned on creation (initial POST) # noqa: E501
+
+    :param body: Subscription to be modified
+    :type body: dict | bytes
+    :param subscription_id: Subscription Id, specifically the \&quot;Self-referring URI\&quot; returned in the subscription request
+    :type subscription_id: str
+
+    :rtype: InlineSubscription
+    """
+    if connexion.request.is_json:
+        body = InlineSubscription.from_dict(connexion.request.get_json())  # noqa: E501
+    return 'do some magic!'
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/encoder.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/encoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..61ba4721961a65d38af5d5ce2948b0abe9c7aa58
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/encoder.py
@@ -0,0 +1,20 @@
+from connexion.apps.flask_app import FlaskJSONEncoder
+import six
+
+from swagger_server.models.base_model_ import Model
+
+
+class JSONEncoder(FlaskJSONEncoder):
+    include_nulls = False
+
+    def default(self, o):
+        if isinstance(o, Model):
+            dikt = {}
+            for attr, _ in six.iteritems(o.swagger_types):
+                value = getattr(o, attr)
+                if value is None and not self.include_nulls:
+                    continue
+                attr = o.attribute_map[attr]
+                dikt[attr] = value
+            return dikt
+        return FlaskJSONEncoder.default(self, o)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/__init__.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d7b4cb1352f48bde5a1648a9c2918e94e6b7bcc
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/__init__.py
@@ -0,0 +1,95 @@
+# coding: utf-8
+
+# flake8: noqa
+from __future__ import absolute_import
+# import models into model package
+from swagger_server.models.associate_id import AssociateId
+from swagger_server.models.ca_reconf_notification import CaReconfNotification
+from swagger_server.models.ca_reconf_notification_carrier_aggregation_meas_info import CaReconfNotificationCarrierAggregationMeasInfo
+from swagger_server.models.ca_reconf_notification_secondary_cell_add import CaReconfNotificationSecondaryCellAdd
+from swagger_server.models.ca_reconf_subscription import CaReconfSubscription
+from swagger_server.models.ca_reconf_subscription_filter_criteria_assoc import CaReconfSubscriptionFilterCriteriaAssoc
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks
+from swagger_server.models.cell_change_notification import CellChangeNotification
+from swagger_server.models.cell_change_notification_temp_ue_id import CellChangeNotificationTempUeId
+from swagger_server.models.cell_change_subscription import CellChangeSubscription
+from swagger_server.models.cell_change_subscription_filter_criteria_assoc_ho import CellChangeSubscriptionFilterCriteriaAssocHo
+from swagger_server.models.cell_id import CellId
+from swagger_server.models.ecgi import Ecgi
+from swagger_server.models.enum import Enum
+from swagger_server.models.expiry_notification import ExpiryNotification
+from swagger_server.models.expiry_notification_links import ExpiryNotificationLinks
+from swagger_server.models.inline_notification import InlineNotification
+from swagger_server.models.inline_subscription import InlineSubscription
+from swagger_server.models.l2_meas import L2Meas
+from swagger_server.models.l2_meas_cell_info import L2MeasCellInfo
+from swagger_server.models.l2_meas_cell_ue_info import L2MeasCellUEInfo
+from swagger_server.models.link_type import LinkType
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr
+from swagger_server.models.meas_rep_ue_notification import MeasRepUeNotification
+from swagger_server.models.meas_rep_ue_notification_carrier_aggregation_meas_info import MeasRepUeNotificationCarrierAggregationMeasInfo
+from swagger_server.models.meas_rep_ue_notification_eutran_neighbour_cell_meas_info import MeasRepUeNotificationEutranNeighbourCellMeasInfo
+from swagger_server.models.meas_rep_ue_notification_new_radio_meas_info import MeasRepUeNotificationNewRadioMeasInfo
+from swagger_server.models.meas_rep_ue_notification_new_radio_meas_nei_info import MeasRepUeNotificationNewRadioMeasNeiInfo
+from swagger_server.models.meas_rep_ue_notification_nr_bncs import MeasRepUeNotificationNrBNCs
+from swagger_server.models.meas_rep_ue_notification_nr_bncs_nr_bn_cell_info import MeasRepUeNotificationNrBNCsNrBNCellInfo
+from swagger_server.models.meas_rep_ue_notification_nr_n_cell_info import MeasRepUeNotificationNrNCellInfo
+from swagger_server.models.meas_rep_ue_notification_nr_scs import MeasRepUeNotificationNrSCs
+from swagger_server.models.meas_rep_ue_notification_nr_scs_nr_s_cell_info import MeasRepUeNotificationNrSCsNrSCellInfo
+from swagger_server.models.meas_rep_ue_subscription import MeasRepUeSubscription
+from swagger_server.models.meas_rep_ue_subscription_filter_criteria_assoc_tri import MeasRepUeSubscriptionFilterCriteriaAssocTri
+from swagger_server.models.meas_ta_notification import MeasTaNotification
+from swagger_server.models.meas_ta_subscription import MeasTaSubscription
+from swagger_server.models.n_rcgi import NRcgi
+from swagger_server.models.nr_cell_id import NrCellId
+from swagger_server.models.nr_meas_rep_ue_notification import NrMeasRepUeNotification
+from swagger_server.models.nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info import NrMeasRepUeNotificationEutraNeighCellMeasInfo
+from swagger_server.models.nr_meas_rep_ue_notification_n_cell import NrMeasRepUeNotificationNCell
+from swagger_server.models.nr_meas_rep_ue_notification_nr_neigh_cell_meas_info import NrMeasRepUeNotificationNrNeighCellMeasInfo
+from swagger_server.models.nr_meas_rep_ue_notification_s_cell import NrMeasRepUeNotificationSCell
+from swagger_server.models.nr_meas_rep_ue_notification_serv_cell_meas_info import NrMeasRepUeNotificationServCellMeasInfo
+from swagger_server.models.nr_meas_rep_ue_subscription import NrMeasRepUeSubscription
+from swagger_server.models.nr_meas_rep_ue_subscription_filter_criteria_nr_mrs import NrMeasRepUeSubscriptionFilterCriteriaNrMrs
+from swagger_server.models.plmn import Plmn
+from swagger_server.models.plmn_info import PlmnInfo
+from swagger_server.models.problem_details import ProblemDetails
+from swagger_server.models.rab_est_notification import RabEstNotification
+from swagger_server.models.rab_est_notification_erab_qos_parameters import RabEstNotificationErabQosParameters
+from swagger_server.models.rab_est_notification_erab_qos_parameters_qos_information import RabEstNotificationErabQosParametersQosInformation
+from swagger_server.models.rab_est_notification_temp_ue_id import RabEstNotificationTempUeId
+from swagger_server.models.rab_est_subscription import RabEstSubscription
+from swagger_server.models.rab_est_subscription_filter_criteria_qci import RabEstSubscriptionFilterCriteriaQci
+from swagger_server.models.rab_info import RabInfo
+from swagger_server.models.rab_info_cell_user_info import RabInfoCellUserInfo
+from swagger_server.models.rab_info_erab_info import RabInfoErabInfo
+from swagger_server.models.rab_info_ue_info import RabInfoUeInfo
+from swagger_server.models.rab_mod_notification import RabModNotification
+from swagger_server.models.rab_mod_notification_erab_qos_parameters import RabModNotificationErabQosParameters
+from swagger_server.models.rab_mod_notification_erab_qos_parameters_qos_information import RabModNotificationErabQosParametersQosInformation
+from swagger_server.models.rab_mod_subscription import RabModSubscription
+from swagger_server.models.rab_mod_subscription_filter_criteria_qci import RabModSubscriptionFilterCriteriaQci
+from swagger_server.models.rab_rel_notification import RabRelNotification
+from swagger_server.models.rab_rel_notification_erab_release_info import RabRelNotificationErabReleaseInfo
+from swagger_server.models.rab_rel_subscription import RabRelSubscription
+from swagger_server.models.results_per_csi_rs_index import ResultsPerCsiRsIndex
+from swagger_server.models.results_per_csi_rs_index_list import ResultsPerCsiRsIndexList
+from swagger_server.models.results_per_csi_rs_index_list_results_per_csi_rs_index import ResultsPerCsiRsIndexListResultsPerCsiRsIndex
+from swagger_server.models.results_per_ssb_index import ResultsPerSsbIndex
+from swagger_server.models.results_per_ssb_index_list import ResultsPerSsbIndexList
+from swagger_server.models.results_per_ssb_index_list_results_per_ssb_index import ResultsPerSsbIndexListResultsPerSsbIndex
+from swagger_server.models.rs_index_results import RsIndexResults
+from swagger_server.models.s1_bearer_info import S1BearerInfo
+from swagger_server.models.s1_bearer_info_enb_info import S1BearerInfoEnbInfo
+from swagger_server.models.s1_bearer_info_s1_bearer_info_detailed import S1BearerInfoS1BearerInfoDetailed
+from swagger_server.models.s1_bearer_info_s1_ue_info import S1BearerInfoS1UeInfo
+from swagger_server.models.s1_bearer_info_sgw_info import S1BearerInfoSGwInfo
+from swagger_server.models.s1_bearer_notification import S1BearerNotification
+from swagger_server.models.s1_bearer_notification_s1_ue_info import S1BearerNotificationS1UeInfo
+from swagger_server.models.s1_bearer_subscription import S1BearerSubscription
+from swagger_server.models.s1_bearer_subscription_s1_bearer_subscription_criteria import S1BearerSubscriptionS1BearerSubscriptionCriteria
+from swagger_server.models.subscription_link_list import SubscriptionLinkList
+from swagger_server.models.subscription_link_list_links import SubscriptionLinkListLinks
+from swagger_server.models.subscription_link_list_links_subscription import SubscriptionLinkListLinksSubscription
+from swagger_server.models.time_stamp import TimeStamp
+from swagger_server.models.trigger import Trigger
+from swagger_server.models.trigger_nr import TriggerNr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/associate_id.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/associate_id.py
new file mode 100644
index 0000000000000000000000000000000000000000..6aec0078c42509d2c4244dbdd5107f29b7405b66
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/associate_id.py
@@ -0,0 +1,98 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class AssociateId(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, type: int=None, value: str=None):  # noqa: E501
+        """AssociateId - a model defined in Swagger
+
+        :param type: The type of this AssociateId.  # noqa: E501
+        :type type: int
+        :param value: The value of this AssociateId.  # noqa: E501
+        :type value: str
+        """
+        self.swagger_types = {
+            'type': int,
+            'value': str
+        }
+
+        self.attribute_map = {
+            'type': 'type',
+            'value': 'value'
+        }
+        self._type = type
+        self._value = value
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'AssociateId':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The AssociateId of this AssociateId.  # noqa: E501
+        :rtype: AssociateId
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def type(self) -> int:
+        """Gets the type of this AssociateId.
+
+        Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.  # noqa: E501
+
+        :return: The type of this AssociateId.
+        :rtype: int
+        """
+        return self._type
+
+    @type.setter
+    def type(self, type: int):
+        """Sets the type of this AssociateId.
+
+        Numeric value (0-255) corresponding to specified type of identifier as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS. <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID.  # noqa: E501
+
+        :param type: The type of this AssociateId.
+        :type type: int
+        """
+        allowed_values = ["0", "1", "2", "3", "4"]  # noqa: E501
+        if type not in allowed_values:
+            raise ValueError(
+                "Invalid value for `type` ({0}), must be one of {1}"
+                .format(type, allowed_values)
+            )
+
+        self._type = type
+
+    @property
+    def value(self) -> str:
+        """Gets the value of this AssociateId.
+
+        Value for the identifier.  # noqa: E501
+
+        :return: The value of this AssociateId.
+        :rtype: str
+        """
+        return self._value
+
+    @value.setter
+    def value(self, value: str):
+        """Sets the value of this AssociateId.
+
+        Value for the identifier.  # noqa: E501
+
+        :param value: The value of this AssociateId.
+        :type value: str
+        """
+
+        self._value = value
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/base_model_.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/base_model_.py
new file mode 100644
index 0000000000000000000000000000000000000000..97999c3d3237c287013b2139acb9858a52b454e8
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/base_model_.py
@@ -0,0 +1,69 @@
+import pprint
+
+import six
+import typing
+
+from swagger_server import util
+
+T = typing.TypeVar('T')
+
+
+class Model(object):
+    # swaggerTypes: The key is attribute name and the
+    # value is attribute type.
+    swagger_types = {}
+
+    # attributeMap: The key is attribute name and the
+    # value is json key in definition.
+    attribute_map = {}
+
+    @classmethod
+    def from_dict(cls: typing.Type[T], dikt) -> T:
+        """Returns the dict as a model"""
+        return util.deserialize_model(dikt, cls)
+
+    def to_dict(self):
+        """Returns the model properties as a dict
+
+        :rtype: dict
+        """
+        result = {}
+
+        for attr, _ in six.iteritems(self.swagger_types):
+            value = getattr(self, attr)
+            if isinstance(value, list):
+                result[attr] = list(map(
+                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
+                    value
+                ))
+            elif hasattr(value, "to_dict"):
+                result[attr] = value.to_dict()
+            elif isinstance(value, dict):
+                result[attr] = dict(map(
+                    lambda item: (item[0], item[1].to_dict())
+                    if hasattr(item[1], "to_dict") else item,
+                    value.items()
+                ))
+            else:
+                result[attr] = value
+
+        return result
+
+    def to_str(self):
+        """Returns the string representation of the model
+
+        :rtype: str
+        """
+        return pprint.pformat(self.to_dict())
+
+    def __repr__(self):
+        """For `print` and `pprint`"""
+        return self.to_str()
+
+    def __eq__(self, other):
+        """Returns true if both objects are equal"""
+        return self.__dict__ == other.__dict__
+
+    def __ne__(self, other):
+        """Returns true if both objects are not equal"""
+        return not self == other
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..aff8b59e8a0baf4e618947804caf456e27182d07
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification.py
@@ -0,0 +1,233 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ca_reconf_notification_carrier_aggregation_meas_info import CaReconfNotificationCarrierAggregationMeasInfo  # noqa: F401,E501
+from swagger_server.models.ca_reconf_notification_secondary_cell_add import CaReconfNotificationSecondaryCellAdd  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, carrier_aggregation_meas_info: List[CaReconfNotificationCarrierAggregationMeasInfo]=None, ecgi: Ecgi=None, notification_type: str=None, secondary_cell_add: List[CaReconfNotificationSecondaryCellAdd]=None, secondary_cell_remove: List[CaReconfNotificationSecondaryCellAdd]=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """CaReconfNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this CaReconfNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param carrier_aggregation_meas_info: The carrier_aggregation_meas_info of this CaReconfNotification.  # noqa: E501
+        :type carrier_aggregation_meas_info: List[CaReconfNotificationCarrierAggregationMeasInfo]
+        :param ecgi: The ecgi of this CaReconfNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param notification_type: The notification_type of this CaReconfNotification.  # noqa: E501
+        :type notification_type: str
+        :param secondary_cell_add: The secondary_cell_add of this CaReconfNotification.  # noqa: E501
+        :type secondary_cell_add: List[CaReconfNotificationSecondaryCellAdd]
+        :param secondary_cell_remove: The secondary_cell_remove of this CaReconfNotification.  # noqa: E501
+        :type secondary_cell_remove: List[CaReconfNotificationSecondaryCellAdd]
+        :param time_stamp: The time_stamp of this CaReconfNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'carrier_aggregation_meas_info': List[CaReconfNotificationCarrierAggregationMeasInfo],
+            'ecgi': Ecgi,
+            'notification_type': str,
+            'secondary_cell_add': List[CaReconfNotificationSecondaryCellAdd],
+            'secondary_cell_remove': List[CaReconfNotificationSecondaryCellAdd],
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'carrier_aggregation_meas_info': 'carrierAggregationMeasInfo',
+            'ecgi': 'ecgi',
+            'notification_type': 'notificationType',
+            'secondary_cell_add': 'secondaryCellAdd',
+            'secondary_cell_remove': 'secondaryCellRemove',
+            'time_stamp': 'timeStamp'
+        }
+        self._associate_id = associate_id
+        self._carrier_aggregation_meas_info = carrier_aggregation_meas_info
+        self._ecgi = ecgi
+        self._notification_type = notification_type
+        self._secondary_cell_add = secondary_cell_add
+        self._secondary_cell_remove = secondary_cell_remove
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfNotification of this CaReconfNotification.  # noqa: E501
+        :rtype: CaReconfNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this CaReconfNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this CaReconfNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this CaReconfNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this CaReconfNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def carrier_aggregation_meas_info(self) -> List[CaReconfNotificationCarrierAggregationMeasInfo]:
+        """Gets the carrier_aggregation_meas_info of this CaReconfNotification.
+
+        This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to M.  # noqa: E501
+
+        :return: The carrier_aggregation_meas_info of this CaReconfNotification.
+        :rtype: List[CaReconfNotificationCarrierAggregationMeasInfo]
+        """
+        return self._carrier_aggregation_meas_info
+
+    @carrier_aggregation_meas_info.setter
+    def carrier_aggregation_meas_info(self, carrier_aggregation_meas_info: List[CaReconfNotificationCarrierAggregationMeasInfo]):
+        """Sets the carrier_aggregation_meas_info of this CaReconfNotification.
+
+        This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to M.  # noqa: E501
+
+        :param carrier_aggregation_meas_info: The carrier_aggregation_meas_info of this CaReconfNotification.
+        :type carrier_aggregation_meas_info: List[CaReconfNotificationCarrierAggregationMeasInfo]
+        """
+
+        self._carrier_aggregation_meas_info = carrier_aggregation_meas_info
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this CaReconfNotification.
+
+
+        :return: The ecgi of this CaReconfNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this CaReconfNotification.
+
+
+        :param ecgi: The ecgi of this CaReconfNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this CaReconfNotification.
+
+        Shall be set to \"CaReConfNotification\".  # noqa: E501
+
+        :return: The notification_type of this CaReconfNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this CaReconfNotification.
+
+        Shall be set to \"CaReConfNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this CaReconfNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def secondary_cell_add(self) -> List[CaReconfNotificationSecondaryCellAdd]:
+        """Gets the secondary_cell_add of this CaReconfNotification.
+
+
+        :return: The secondary_cell_add of this CaReconfNotification.
+        :rtype: List[CaReconfNotificationSecondaryCellAdd]
+        """
+        return self._secondary_cell_add
+
+    @secondary_cell_add.setter
+    def secondary_cell_add(self, secondary_cell_add: List[CaReconfNotificationSecondaryCellAdd]):
+        """Sets the secondary_cell_add of this CaReconfNotification.
+
+
+        :param secondary_cell_add: The secondary_cell_add of this CaReconfNotification.
+        :type secondary_cell_add: List[CaReconfNotificationSecondaryCellAdd]
+        """
+
+        self._secondary_cell_add = secondary_cell_add
+
+    @property
+    def secondary_cell_remove(self) -> List[CaReconfNotificationSecondaryCellAdd]:
+        """Gets the secondary_cell_remove of this CaReconfNotification.
+
+
+        :return: The secondary_cell_remove of this CaReconfNotification.
+        :rtype: List[CaReconfNotificationSecondaryCellAdd]
+        """
+        return self._secondary_cell_remove
+
+    @secondary_cell_remove.setter
+    def secondary_cell_remove(self, secondary_cell_remove: List[CaReconfNotificationSecondaryCellAdd]):
+        """Sets the secondary_cell_remove of this CaReconfNotification.
+
+
+        :param secondary_cell_remove: The secondary_cell_remove of this CaReconfNotification.
+        :type secondary_cell_remove: List[CaReconfNotificationSecondaryCellAdd]
+        """
+
+        self._secondary_cell_remove = secondary_cell_remove
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this CaReconfNotification.
+
+
+        :return: The time_stamp of this CaReconfNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this CaReconfNotification.
+
+
+        :param time_stamp: The time_stamp of this CaReconfNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_carrier_aggregation_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_carrier_aggregation_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..df16785611ee7feaac93fc2207970b3e27e3321a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_carrier_aggregation_meas_info.py
@@ -0,0 +1,201 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.cell_id import CellId  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfNotificationCarrierAggregationMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, cell_id_nei: CellId=None, cell_id_srv: CellId=None, rsrp_nei: int=None, rsrp_srv: int=None, rsrq_nei: int=None, rsrq_srv: int=None):  # noqa: E501
+        """CaReconfNotificationCarrierAggregationMeasInfo - a model defined in Swagger
+
+        :param cell_id_nei: The cell_id_nei of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type cell_id_nei: CellId
+        :param cell_id_srv: The cell_id_srv of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type cell_id_srv: CellId
+        :param rsrp_nei: The rsrp_nei of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_nei: int
+        :param rsrp_srv: The rsrp_srv of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_srv: int
+        :param rsrq_nei: The rsrq_nei of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_nei: int
+        :param rsrq_srv: The rsrq_srv of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_srv: int
+        """
+        self.swagger_types = {
+            'cell_id_nei': CellId,
+            'cell_id_srv': CellId,
+            'rsrp_nei': int,
+            'rsrp_srv': int,
+            'rsrq_nei': int,
+            'rsrq_srv': int
+        }
+
+        self.attribute_map = {
+            'cell_id_nei': 'cellIdNei',
+            'cell_id_srv': 'cellIdSrv',
+            'rsrp_nei': 'rsrpNei',
+            'rsrp_srv': 'rsrpSrv',
+            'rsrq_nei': 'rsrqNei',
+            'rsrq_srv': 'rsrqSrv'
+        }
+        self._cell_id_nei = cell_id_nei
+        self._cell_id_srv = cell_id_srv
+        self._rsrp_nei = rsrp_nei
+        self._rsrp_srv = rsrp_srv
+        self._rsrq_nei = rsrq_nei
+        self._rsrq_srv = rsrq_srv
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfNotificationCarrierAggregationMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfNotification_carrierAggregationMeasInfo of this CaReconfNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :rtype: CaReconfNotificationCarrierAggregationMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def cell_id_nei(self) -> CellId:
+        """Gets the cell_id_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+
+        :return: The cell_id_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: CellId
+        """
+        return self._cell_id_nei
+
+    @cell_id_nei.setter
+    def cell_id_nei(self, cell_id_nei: CellId):
+        """Sets the cell_id_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+
+        :param cell_id_nei: The cell_id_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type cell_id_nei: CellId
+        """
+
+        self._cell_id_nei = cell_id_nei
+
+    @property
+    def cell_id_srv(self) -> CellId:
+        """Gets the cell_id_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+
+        :return: The cell_id_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: CellId
+        """
+        return self._cell_id_srv
+
+    @cell_id_srv.setter
+    def cell_id_srv(self, cell_id_srv: CellId):
+        """Sets the cell_id_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+
+        :param cell_id_srv: The cell_id_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type cell_id_srv: CellId
+        """
+
+        self._cell_id_srv = cell_id_srv
+
+    @property
+    def rsrp_nei(self) -> int:
+        """Gets the rsrp_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_nei
+
+    @rsrp_nei.setter
+    def rsrp_nei(self, rsrp_nei: int):
+        """Sets the rsrp_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp_nei: The rsrp_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type rsrp_nei: int
+        """
+
+        self._rsrp_nei = rsrp_nei
+
+    @property
+    def rsrp_srv(self) -> int:
+        """Gets the rsrp_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_srv
+
+    @rsrp_srv.setter
+    def rsrp_srv(self, rsrp_srv: int):
+        """Sets the rsrp_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp_srv: The rsrp_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type rsrp_srv: int
+        """
+
+        self._rsrp_srv = rsrp_srv
+
+    @property
+    def rsrq_nei(self) -> int:
+        """Gets the rsrq_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_nei
+
+    @rsrq_nei.setter
+    def rsrq_nei(self, rsrq_nei: int):
+        """Sets the rsrq_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq_nei: The rsrq_nei of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type rsrq_nei: int
+        """
+
+        self._rsrq_nei = rsrq_nei
+
+    @property
+    def rsrq_srv(self) -> int:
+        """Gets the rsrq_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_srv
+
+    @rsrq_srv.setter
+    def rsrq_srv(self, rsrq_srv: int):
+        """Sets the rsrq_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq_srv: The rsrq_srv of this CaReconfNotificationCarrierAggregationMeasInfo.
+        :type rsrq_srv: int
+        """
+
+        self._rsrq_srv = rsrq_srv
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_secondary_cell_add.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_secondary_cell_add.py
new file mode 100644
index 0000000000000000000000000000000000000000..4b61a5fbb52b38dc2133fefddbd2fa8c911515b5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_notification_secondary_cell_add.py
@@ -0,0 +1,63 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfNotificationSecondaryCellAdd(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ecgi: Ecgi=None):  # noqa: E501
+        """CaReconfNotificationSecondaryCellAdd - a model defined in Swagger
+
+        :param ecgi: The ecgi of this CaReconfNotificationSecondaryCellAdd.  # noqa: E501
+        :type ecgi: Ecgi
+        """
+        self.swagger_types = {
+            'ecgi': Ecgi
+        }
+
+        self.attribute_map = {
+            'ecgi': 'ecgi'
+        }
+        self._ecgi = ecgi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfNotificationSecondaryCellAdd':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfNotification_secondaryCellAdd of this CaReconfNotificationSecondaryCellAdd.  # noqa: E501
+        :rtype: CaReconfNotificationSecondaryCellAdd
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this CaReconfNotificationSecondaryCellAdd.
+
+
+        :return: The ecgi of this CaReconfNotificationSecondaryCellAdd.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this CaReconfNotificationSecondaryCellAdd.
+
+
+        :param ecgi: The ecgi of this CaReconfNotificationSecondaryCellAdd.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..f65e7a37f7c73e4ab55afbf49727ee938f65cfc8
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_filter_criteria_assoc import CaReconfSubscriptionFilterCriteriaAssoc  # noqa: F401,E501
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc=None, subscription_type: str=None):  # noqa: E501
+        """CaReconfSubscription - a model defined in Swagger
+
+        :param links: The links of this CaReconfSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this CaReconfSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this CaReconfSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_assoc: The filter_criteria_assoc of this CaReconfSubscription.  # noqa: E501
+        :type filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc
+        :param subscription_type: The subscription_type of this CaReconfSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_assoc': CaReconfSubscriptionFilterCriteriaAssoc,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_assoc': 'filterCriteriaAssoc',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_assoc = filter_criteria_assoc
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfSubscription of this CaReconfSubscription.  # noqa: E501
+        :rtype: CaReconfSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this CaReconfSubscription.
+
+
+        :return: The links of this CaReconfSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this CaReconfSubscription.
+
+
+        :param links: The links of this CaReconfSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this CaReconfSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this CaReconfSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this CaReconfSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this CaReconfSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this CaReconfSubscription.
+
+
+        :return: The expiry_deadline of this CaReconfSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this CaReconfSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this CaReconfSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_assoc(self) -> CaReconfSubscriptionFilterCriteriaAssoc:
+        """Gets the filter_criteria_assoc of this CaReconfSubscription.
+
+
+        :return: The filter_criteria_assoc of this CaReconfSubscription.
+        :rtype: CaReconfSubscriptionFilterCriteriaAssoc
+        """
+        return self._filter_criteria_assoc
+
+    @filter_criteria_assoc.setter
+    def filter_criteria_assoc(self, filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc):
+        """Sets the filter_criteria_assoc of this CaReconfSubscription.
+
+
+        :param filter_criteria_assoc: The filter_criteria_assoc of this CaReconfSubscription.
+        :type filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc
+        """
+        if filter_criteria_assoc is None:
+            raise ValueError("Invalid value for `filter_criteria_assoc`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_assoc = filter_criteria_assoc
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this CaReconfSubscription.
+
+        Shall be set to \"CaReconfSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this CaReconfSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this CaReconfSubscription.
+
+        Shall be set to \"CaReconfSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this CaReconfSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_filter_criteria_assoc.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_filter_criteria_assoc.py
new file mode 100644
index 0000000000000000000000000000000000000000..28d133c027542f3459b62ac3186f2cf0178906e3
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_filter_criteria_assoc.py
@@ -0,0 +1,122 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfSubscriptionFilterCriteriaAssoc(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None):  # noqa: E501
+        """CaReconfSubscriptionFilterCriteriaAssoc - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this CaReconfSubscriptionFilterCriteriaAssoc.  # noqa: E501
+        :type app_instance_id: str
+        :param associate_id: The associate_id of this CaReconfSubscriptionFilterCriteriaAssoc.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this CaReconfSubscriptionFilterCriteriaAssoc.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi]
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi'
+        }
+        self._app_instance_id = app_instance_id
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfSubscriptionFilterCriteriaAssoc':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfSubscription_filterCriteriaAssoc of this CaReconfSubscriptionFilterCriteriaAssoc.  # noqa: E501
+        :rtype: CaReconfSubscriptionFilterCriteriaAssoc
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this CaReconfSubscriptionFilterCriteriaAssoc.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this CaReconfSubscriptionFilterCriteriaAssoc.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_links.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_links.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1f665b5a04e11e5a605fed7e5d772ede4e91f50
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ca_reconf_subscription_links.py
@@ -0,0 +1,65 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.link_type import LinkType  # noqa: F401,E501
+from swagger_server import util
+
+
+class CaReconfSubscriptionLinks(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, _self: LinkType=None):  # noqa: E501
+        """CaReconfSubscriptionLinks - a model defined in Swagger
+
+        :param _self: The _self of this CaReconfSubscriptionLinks.  # noqa: E501
+        :type _self: LinkType
+        """
+        self.swagger_types = {
+            '_self': LinkType
+        }
+
+        self.attribute_map = {
+            '_self': 'self'
+        }
+        self.__self = _self
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CaReconfSubscriptionLinks':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CaReconfSubscription__links of this CaReconfSubscriptionLinks.  # noqa: E501
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def _self(self) -> LinkType:
+        """Gets the _self of this CaReconfSubscriptionLinks.
+
+
+        :return: The _self of this CaReconfSubscriptionLinks.
+        :rtype: LinkType
+        """
+        return self.__self
+
+    @_self.setter
+    def _self(self, _self: LinkType):
+        """Sets the _self of this CaReconfSubscriptionLinks.
+
+
+        :param _self: The _self of this CaReconfSubscriptionLinks.
+        :type _self: LinkType
+        """
+        if _self is None:
+            raise ValueError("Invalid value for `_self`, must not be `None`")  # noqa: E501
+
+        self.__self = _self
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..584356ca26839ef9d4a73dc3b34cd9afa87b3f14
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification.py
@@ -0,0 +1,242 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.cell_change_notification_temp_ue_id import CellChangeNotificationTempUeId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class CellChangeNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ho_status: int=None, notification_type: str=None, src_ecgi: Ecgi=None, temp_ue_id: CellChangeNotificationTempUeId=None, time_stamp: TimeStamp=None, trg_ecgi: List[Ecgi]=None):  # noqa: E501
+        """CellChangeNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this CellChangeNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ho_status: The ho_status of this CellChangeNotification.  # noqa: E501
+        :type ho_status: int
+        :param notification_type: The notification_type of this CellChangeNotification.  # noqa: E501
+        :type notification_type: str
+        :param src_ecgi: The src_ecgi of this CellChangeNotification.  # noqa: E501
+        :type src_ecgi: Ecgi
+        :param temp_ue_id: The temp_ue_id of this CellChangeNotification.  # noqa: E501
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        :param time_stamp: The time_stamp of this CellChangeNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        :param trg_ecgi: The trg_ecgi of this CellChangeNotification.  # noqa: E501
+        :type trg_ecgi: List[Ecgi]
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ho_status': int,
+            'notification_type': str,
+            'src_ecgi': Ecgi,
+            'temp_ue_id': CellChangeNotificationTempUeId,
+            'time_stamp': TimeStamp,
+            'trg_ecgi': List[Ecgi]
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ho_status': 'hoStatus',
+            'notification_type': 'notificationType',
+            'src_ecgi': 'srcEcgi',
+            'temp_ue_id': 'tempUeId',
+            'time_stamp': 'timeStamp',
+            'trg_ecgi': 'trgEcgi'
+        }
+        self._associate_id = associate_id
+        self._ho_status = ho_status
+        self._notification_type = notification_type
+        self._src_ecgi = src_ecgi
+        self._temp_ue_id = temp_ue_id
+        self._time_stamp = time_stamp
+        self._trg_ecgi = trg_ecgi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CellChangeNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CellChangeNotification of this CellChangeNotification.  # noqa: E501
+        :rtype: CellChangeNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this CellChangeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this CellChangeNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this CellChangeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this CellChangeNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ho_status(self) -> int:
+        """Gets the ho_status of this CellChangeNotification.
+
+        Indicate the status of the UE handover procedure. Values are defined as following: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED.  # noqa: E501
+
+        :return: The ho_status of this CellChangeNotification.
+        :rtype: int
+        """
+        return self._ho_status
+
+    @ho_status.setter
+    def ho_status(self, ho_status: int):
+        """Sets the ho_status of this CellChangeNotification.
+
+        Indicate the status of the UE handover procedure. Values are defined as following: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED.  # noqa: E501
+
+        :param ho_status: The ho_status of this CellChangeNotification.
+        :type ho_status: int
+        """
+        allowed_values = ["1", "2", "3", "4", "5"]  # noqa: E501
+        if ho_status not in allowed_values:
+            raise ValueError(
+                "Invalid value for `ho_status` ({0}), must be one of {1}"
+                .format(ho_status, allowed_values)
+            )
+
+        self._ho_status = ho_status
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this CellChangeNotification.
+
+        Shall be set to \"CellChangeNotification\".  # noqa: E501
+
+        :return: The notification_type of this CellChangeNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this CellChangeNotification.
+
+        Shall be set to \"CellChangeNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this CellChangeNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def src_ecgi(self) -> Ecgi:
+        """Gets the src_ecgi of this CellChangeNotification.
+
+
+        :return: The src_ecgi of this CellChangeNotification.
+        :rtype: Ecgi
+        """
+        return self._src_ecgi
+
+    @src_ecgi.setter
+    def src_ecgi(self, src_ecgi: Ecgi):
+        """Sets the src_ecgi of this CellChangeNotification.
+
+
+        :param src_ecgi: The src_ecgi of this CellChangeNotification.
+        :type src_ecgi: Ecgi
+        """
+        if src_ecgi is None:
+            raise ValueError("Invalid value for `src_ecgi`, must not be `None`")  # noqa: E501
+
+        self._src_ecgi = src_ecgi
+
+    @property
+    def temp_ue_id(self) -> CellChangeNotificationTempUeId:
+        """Gets the temp_ue_id of this CellChangeNotification.
+
+
+        :return: The temp_ue_id of this CellChangeNotification.
+        :rtype: CellChangeNotificationTempUeId
+        """
+        return self._temp_ue_id
+
+    @temp_ue_id.setter
+    def temp_ue_id(self, temp_ue_id: CellChangeNotificationTempUeId):
+        """Sets the temp_ue_id of this CellChangeNotification.
+
+
+        :param temp_ue_id: The temp_ue_id of this CellChangeNotification.
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        """
+
+        self._temp_ue_id = temp_ue_id
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this CellChangeNotification.
+
+
+        :return: The time_stamp of this CellChangeNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this CellChangeNotification.
+
+
+        :param time_stamp: The time_stamp of this CellChangeNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
+
+    @property
+    def trg_ecgi(self) -> List[Ecgi]:
+        """Gets the trg_ecgi of this CellChangeNotification.
+
+        E-UTRAN Cell Global Identifier of the target cell. NOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.  # noqa: E501
+
+        :return: The trg_ecgi of this CellChangeNotification.
+        :rtype: List[Ecgi]
+        """
+        return self._trg_ecgi
+
+    @trg_ecgi.setter
+    def trg_ecgi(self, trg_ecgi: List[Ecgi]):
+        """Sets the trg_ecgi of this CellChangeNotification.
+
+        E-UTRAN Cell Global Identifier of the target cell. NOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.  # noqa: E501
+
+        :param trg_ecgi: The trg_ecgi of this CellChangeNotification.
+        :type trg_ecgi: List[Ecgi]
+        """
+        if trg_ecgi is None:
+            raise ValueError("Invalid value for `trg_ecgi`, must not be `None`")  # noqa: E501
+
+        self._trg_ecgi = trg_ecgi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification_temp_ue_id.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification_temp_ue_id.py
new file mode 100644
index 0000000000000000000000000000000000000000..df6be17ac7df5f58d92f51aa2a7ce5530045779b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_notification_temp_ue_id.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class CellChangeNotificationTempUeId(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, mmec: str=None, mtmsi: str=None):  # noqa: E501
+        """CellChangeNotificationTempUeId - a model defined in Swagger
+
+        :param mmec: The mmec of this CellChangeNotificationTempUeId.  # noqa: E501
+        :type mmec: str
+        :param mtmsi: The mtmsi of this CellChangeNotificationTempUeId.  # noqa: E501
+        :type mtmsi: str
+        """
+        self.swagger_types = {
+            'mmec': str,
+            'mtmsi': str
+        }
+
+        self.attribute_map = {
+            'mmec': 'mmec',
+            'mtmsi': 'mtmsi'
+        }
+        self._mmec = mmec
+        self._mtmsi = mtmsi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CellChangeNotificationTempUeId':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CellChangeNotification_tempUeId of this CellChangeNotificationTempUeId.  # noqa: E501
+        :rtype: CellChangeNotificationTempUeId
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def mmec(self) -> str:
+        """Gets the mmec of this CellChangeNotificationTempUeId.
+
+        MMEC as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mmec of this CellChangeNotificationTempUeId.
+        :rtype: str
+        """
+        return self._mmec
+
+    @mmec.setter
+    def mmec(self, mmec: str):
+        """Sets the mmec of this CellChangeNotificationTempUeId.
+
+        MMEC as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mmec: The mmec of this CellChangeNotificationTempUeId.
+        :type mmec: str
+        """
+        if mmec is None:
+            raise ValueError("Invalid value for `mmec`, must not be `None`")  # noqa: E501
+
+        self._mmec = mmec
+
+    @property
+    def mtmsi(self) -> str:
+        """Gets the mtmsi of this CellChangeNotificationTempUeId.
+
+        M-TMSI as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mtmsi of this CellChangeNotificationTempUeId.
+        :rtype: str
+        """
+        return self._mtmsi
+
+    @mtmsi.setter
+    def mtmsi(self, mtmsi: str):
+        """Sets the mtmsi of this CellChangeNotificationTempUeId.
+
+        M-TMSI as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mtmsi: The mtmsi of this CellChangeNotificationTempUeId.
+        :type mtmsi: str
+        """
+        if mtmsi is None:
+            raise ValueError("Invalid value for `mtmsi`, must not be `None`")  # noqa: E501
+
+        self._mtmsi = mtmsi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..a34c2c90961fbb4ac2165c6d565300baf57f9907
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.cell_change_subscription_filter_criteria_assoc_ho import CellChangeSubscriptionFilterCriteriaAssocHo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class CellChangeSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_assoc_ho: CellChangeSubscriptionFilterCriteriaAssocHo=None, subscription_type: str=None):  # noqa: E501
+        """CellChangeSubscription - a model defined in Swagger
+
+        :param links: The links of this CellChangeSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this CellChangeSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this CellChangeSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_assoc_ho: The filter_criteria_assoc_ho of this CellChangeSubscription.  # noqa: E501
+        :type filter_criteria_assoc_ho: CellChangeSubscriptionFilterCriteriaAssocHo
+        :param subscription_type: The subscription_type of this CellChangeSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_assoc_ho': CellChangeSubscriptionFilterCriteriaAssocHo,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_assoc_ho': 'filterCriteriaAssocHo',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_assoc_ho = filter_criteria_assoc_ho
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CellChangeSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CellChangeSubscription of this CellChangeSubscription.  # noqa: E501
+        :rtype: CellChangeSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this CellChangeSubscription.
+
+
+        :return: The links of this CellChangeSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this CellChangeSubscription.
+
+
+        :param links: The links of this CellChangeSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this CellChangeSubscription.
+
+        URI selected by the service consumerto receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this CellChangeSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this CellChangeSubscription.
+
+        URI selected by the service consumerto receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this CellChangeSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this CellChangeSubscription.
+
+
+        :return: The expiry_deadline of this CellChangeSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this CellChangeSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this CellChangeSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_assoc_ho(self) -> CellChangeSubscriptionFilterCriteriaAssocHo:
+        """Gets the filter_criteria_assoc_ho of this CellChangeSubscription.
+
+
+        :return: The filter_criteria_assoc_ho of this CellChangeSubscription.
+        :rtype: CellChangeSubscriptionFilterCriteriaAssocHo
+        """
+        return self._filter_criteria_assoc_ho
+
+    @filter_criteria_assoc_ho.setter
+    def filter_criteria_assoc_ho(self, filter_criteria_assoc_ho: CellChangeSubscriptionFilterCriteriaAssocHo):
+        """Sets the filter_criteria_assoc_ho of this CellChangeSubscription.
+
+
+        :param filter_criteria_assoc_ho: The filter_criteria_assoc_ho of this CellChangeSubscription.
+        :type filter_criteria_assoc_ho: CellChangeSubscriptionFilterCriteriaAssocHo
+        """
+        if filter_criteria_assoc_ho is None:
+            raise ValueError("Invalid value for `filter_criteria_assoc_ho`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_assoc_ho = filter_criteria_assoc_ho
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this CellChangeSubscription.
+
+        Shall be set to \"CellChangeSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this CellChangeSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this CellChangeSubscription.
+
+        Shall be set to \"CellChangeSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this CellChangeSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription_filter_criteria_assoc_ho.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription_filter_criteria_assoc_ho.py
new file mode 100644
index 0000000000000000000000000000000000000000..da9a6f880b3f8a005019ac2b8ead84246c7a76a7
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_change_subscription_filter_criteria_assoc_ho.py
@@ -0,0 +1,151 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.enum import Enum  # noqa: F401,E501
+from swagger_server import util
+
+
+class CellChangeSubscriptionFilterCriteriaAssocHo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None, ho_status: List[Enum]=None):  # noqa: E501
+        """CellChangeSubscriptionFilterCriteriaAssocHo - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this CellChangeSubscriptionFilterCriteriaAssocHo.  # noqa: E501
+        :type app_instance_id: str
+        :param associate_id: The associate_id of this CellChangeSubscriptionFilterCriteriaAssocHo.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this CellChangeSubscriptionFilterCriteriaAssocHo.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param ho_status: The ho_status of this CellChangeSubscriptionFilterCriteriaAssocHo.  # noqa: E501
+        :type ho_status: List[Enum]
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi],
+            'ho_status': List[Enum]
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'ho_status': 'hoStatus'
+        }
+        self._app_instance_id = app_instance_id
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._ho_status = ho_status
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CellChangeSubscriptionFilterCriteriaAssocHo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CellChangeSubscription_filterCriteriaAssocHo of this CellChangeSubscriptionFilterCriteriaAssocHo.  # noqa: E501
+        :rtype: CellChangeSubscriptionFilterCriteriaAssocHo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def ho_status(self) -> List[Enum]:
+        """Gets the ho_status of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        In case hoStatus is not included in the subscription request, the default value 3 = COMPLETED shall be used and included in the response: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED.  # noqa: E501
+
+        :return: The ho_status of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :rtype: List[Enum]
+        """
+        return self._ho_status
+
+    @ho_status.setter
+    def ho_status(self, ho_status: List[Enum]):
+        """Sets the ho_status of this CellChangeSubscriptionFilterCriteriaAssocHo.
+
+        In case hoStatus is not included in the subscription request, the default value 3 = COMPLETED shall be used and included in the response: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED.  # noqa: E501
+
+        :param ho_status: The ho_status of this CellChangeSubscriptionFilterCriteriaAssocHo.
+        :type ho_status: List[Enum]
+        """
+
+        self._ho_status = ho_status
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_id.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_id.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b1156824fd54e4c31f01df6be4da632701d93e0
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/cell_id.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class CellId(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self):  # noqa: E501
+        """CellId - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'CellId':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The CellId of this CellId.  # noqa: E501
+        :rtype: CellId
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ecgi.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ecgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..e8cd95a835bfadb0cf80181b98ca5127d6841feb
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/ecgi.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.cell_id import CellId  # noqa: F401,E501
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server import util
+
+
+class Ecgi(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, cell_id: CellId=None, plmn: Plmn=None):  # noqa: E501
+        """Ecgi - a model defined in Swagger
+
+        :param cell_id: The cell_id of this Ecgi.  # noqa: E501
+        :type cell_id: CellId
+        :param plmn: The plmn of this Ecgi.  # noqa: E501
+        :type plmn: Plmn
+        """
+        self.swagger_types = {
+            'cell_id': CellId,
+            'plmn': Plmn
+        }
+
+        self.attribute_map = {
+            'cell_id': 'cellId',
+            'plmn': 'plmn'
+        }
+        self._cell_id = cell_id
+        self._plmn = plmn
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'Ecgi':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The Ecgi of this Ecgi.  # noqa: E501
+        :rtype: Ecgi
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def cell_id(self) -> CellId:
+        """Gets the cell_id of this Ecgi.
+
+
+        :return: The cell_id of this Ecgi.
+        :rtype: CellId
+        """
+        return self._cell_id
+
+    @cell_id.setter
+    def cell_id(self, cell_id: CellId):
+        """Sets the cell_id of this Ecgi.
+
+
+        :param cell_id: The cell_id of this Ecgi.
+        :type cell_id: CellId
+        """
+        if cell_id is None:
+            raise ValueError("Invalid value for `cell_id`, must not be `None`")  # noqa: E501
+
+        self._cell_id = cell_id
+
+    @property
+    def plmn(self) -> Plmn:
+        """Gets the plmn of this Ecgi.
+
+
+        :return: The plmn of this Ecgi.
+        :rtype: Plmn
+        """
+        return self._plmn
+
+    @plmn.setter
+    def plmn(self, plmn: Plmn):
+        """Sets the plmn of this Ecgi.
+
+
+        :param plmn: The plmn of this Ecgi.
+        :type plmn: Plmn
+        """
+        if plmn is None:
+            raise ValueError("Invalid value for `plmn`, must not be `None`")  # noqa: E501
+
+        self._plmn = plmn
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/enum.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/enum.py
new file mode 100644
index 0000000000000000000000000000000000000000..cc1d21d52423db50bb8a7d8cc5c8df6d62842157
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/enum.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class Enum(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self):  # noqa: E501
+        """Enum - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'Enum':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The Enum of this Enum.  # noqa: E501
+        :rtype: Enum
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..26e084e612275474b95e55905003df0c149c5186
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification.py
@@ -0,0 +1,120 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.expiry_notification_links import ExpiryNotificationLinks  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class ExpiryNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: ExpiryNotificationLinks=None, expiry_deadline: TimeStamp=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """ExpiryNotification - a model defined in Swagger
+
+        :param links: The links of this ExpiryNotification.  # noqa: E501
+        :type links: ExpiryNotificationLinks
+        :param expiry_deadline: The expiry_deadline of this ExpiryNotification.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param time_stamp: The time_stamp of this ExpiryNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'links': ExpiryNotificationLinks,
+            'expiry_deadline': TimeStamp,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'expiry_deadline': 'expiryDeadline',
+            'time_stamp': 'timeStamp'
+        }
+        self._links = links
+        self._expiry_deadline = expiry_deadline
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ExpiryNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ExpiryNotification of this ExpiryNotification.  # noqa: E501
+        :rtype: ExpiryNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> ExpiryNotificationLinks:
+        """Gets the links of this ExpiryNotification.
+
+
+        :return: The links of this ExpiryNotification.
+        :rtype: ExpiryNotificationLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: ExpiryNotificationLinks):
+        """Sets the links of this ExpiryNotification.
+
+
+        :param links: The links of this ExpiryNotification.
+        :type links: ExpiryNotificationLinks
+        """
+        if links is None:
+            raise ValueError("Invalid value for `links`, must not be `None`")  # noqa: E501
+
+        self._links = links
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this ExpiryNotification.
+
+
+        :return: The expiry_deadline of this ExpiryNotification.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this ExpiryNotification.
+
+
+        :param expiry_deadline: The expiry_deadline of this ExpiryNotification.
+        :type expiry_deadline: TimeStamp
+        """
+        if expiry_deadline is None:
+            raise ValueError("Invalid value for `expiry_deadline`, must not be `None`")  # noqa: E501
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this ExpiryNotification.
+
+
+        :return: The time_stamp of this ExpiryNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this ExpiryNotification.
+
+
+        :param time_stamp: The time_stamp of this ExpiryNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification_links.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification_links.py
new file mode 100644
index 0000000000000000000000000000000000000000..b918c6a0807c6f7a6c91f3ad1c304f08495c3a24
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/expiry_notification_links.py
@@ -0,0 +1,66 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class ExpiryNotificationLinks(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, _self: str=None):  # noqa: E501
+        """ExpiryNotificationLinks - a model defined in Swagger
+
+        :param _self: The _self of this ExpiryNotificationLinks.  # noqa: E501
+        :type _self: str
+        """
+        self.swagger_types = {
+            '_self': str
+        }
+
+        self.attribute_map = {
+            '_self': 'self'
+        }
+        self.__self = _self
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ExpiryNotificationLinks':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ExpiryNotification__links of this ExpiryNotificationLinks.  # noqa: E501
+        :rtype: ExpiryNotificationLinks
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def _self(self) -> str:
+        """Gets the _self of this ExpiryNotificationLinks.
+
+        Self referring URI. This shall be included in the response from the RNIS. The URI shall be unique within the RNI API as it acts as an ID for the subscription.  # noqa: E501
+
+        :return: The _self of this ExpiryNotificationLinks.
+        :rtype: str
+        """
+        return self.__self
+
+    @_self.setter
+    def _self(self, _self: str):
+        """Sets the _self of this ExpiryNotificationLinks.
+
+        Self referring URI. This shall be included in the response from the RNIS. The URI shall be unique within the RNI API as it acts as an ID for the subscription.  # noqa: E501
+
+        :param _self: The _self of this ExpiryNotificationLinks.
+        :type _self: str
+        """
+        if _self is None:
+            raise ValueError("Invalid value for `_self`, must not be `None`")  # noqa: E501
+
+        self.__self = _self
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..a242006a2ff554bc71cde45021bd6e4ab779ea55
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_notification.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class InlineNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self):  # noqa: E501
+        """InlineNotification - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'InlineNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The InlineNotification of this InlineNotification.  # noqa: E501
+        :rtype: InlineNotification
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..b590bbaaf1535f72e66e5fe7f02b3119f256aba7
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/inline_subscription.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class InlineSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self):  # noqa: E501
+        """InlineSubscription - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'InlineSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The InlineSubscription of this InlineSubscription.  # noqa: E501
+        :rtype: InlineSubscription
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas.py
new file mode 100644
index 0000000000000000000000000000000000000000..4328d37aeaca5d49421a526a0f24b46454d124d5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas.py
@@ -0,0 +1,121 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.l2_meas_cell_info import L2MeasCellInfo  # noqa: F401,E501
+from swagger_server.models.l2_meas_cell_ue_info import L2MeasCellUEInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class L2Meas(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, cell_info: List[L2MeasCellInfo]=None, cell_ue_info: List[L2MeasCellUEInfo]=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """L2Meas - a model defined in Swagger
+
+        :param cell_info: The cell_info of this L2Meas.  # noqa: E501
+        :type cell_info: List[L2MeasCellInfo]
+        :param cell_ue_info: The cell_ue_info of this L2Meas.  # noqa: E501
+        :type cell_ue_info: List[L2MeasCellUEInfo]
+        :param time_stamp: The time_stamp of this L2Meas.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'cell_info': List[L2MeasCellInfo],
+            'cell_ue_info': List[L2MeasCellUEInfo],
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'cell_info': 'cellInfo',
+            'cell_ue_info': 'cellUEInfo',
+            'time_stamp': 'timeStamp'
+        }
+        self._cell_info = cell_info
+        self._cell_ue_info = cell_ue_info
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'L2Meas':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The L2Meas of this L2Meas.  # noqa: E501
+        :rtype: L2Meas
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def cell_info(self) -> List[L2MeasCellInfo]:
+        """Gets the cell_info of this L2Meas.
+
+        The per cell measurement information as defined below.  # noqa: E501
+
+        :return: The cell_info of this L2Meas.
+        :rtype: List[L2MeasCellInfo]
+        """
+        return self._cell_info
+
+    @cell_info.setter
+    def cell_info(self, cell_info: List[L2MeasCellInfo]):
+        """Sets the cell_info of this L2Meas.
+
+        The per cell measurement information as defined below.  # noqa: E501
+
+        :param cell_info: The cell_info of this L2Meas.
+        :type cell_info: List[L2MeasCellInfo]
+        """
+
+        self._cell_info = cell_info
+
+    @property
+    def cell_ue_info(self) -> List[L2MeasCellUEInfo]:
+        """Gets the cell_ue_info of this L2Meas.
+
+        The per cell per UE layer 2 measurements information as defined below.  # noqa: E501
+
+        :return: The cell_ue_info of this L2Meas.
+        :rtype: List[L2MeasCellUEInfo]
+        """
+        return self._cell_ue_info
+
+    @cell_ue_info.setter
+    def cell_ue_info(self, cell_ue_info: List[L2MeasCellUEInfo]):
+        """Sets the cell_ue_info of this L2Meas.
+
+        The per cell per UE layer 2 measurements information as defined below.  # noqa: E501
+
+        :param cell_ue_info: The cell_ue_info of this L2Meas.
+        :type cell_ue_info: List[L2MeasCellUEInfo]
+        """
+
+        self._cell_ue_info = cell_ue_info
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this L2Meas.
+
+
+        :return: The time_stamp of this L2Meas.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this L2Meas.
+
+
+        :param time_stamp: The time_stamp of this L2Meas.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..57f5133775b80896350875087c6a7de2b5e254f8
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_info.py
@@ -0,0 +1,539 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class L2MeasCellInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, dl_gbr_pdr_cell: int=None, dl_gbr_prb_usage_cell: int=None, dl_nongbr_pdr_cell: int=None, dl_nongbr_prb_usage_cell: int=None, dl_total_prb_usage_cell: int=None, ecgi: Ecgi=None, number_of_active_ue_dl_gbr_cell: int=None, number_of_active_ue_dl_nongbr_cell: int=None, number_of_active_ue_ul_gbr_cell: int=None, number_of_active_ue_ul_nongbr_cell: int=None, received_dedicated_preambles_cell: int=None, received_randomly_selected_preambles_high_range_cell: int=None, received_randomly_selected_preambles_low_range_cell: int=None, ul_gbr_pdr_cell: int=None, ul_gbr_prb_usage_cell: int=None, ul_nongbr_pdr_cell: int=None, ul_nongbr_prb_usage_cell: int=None, ul_total_prb_usage_cell: int=None):  # noqa: E501
+        """L2MeasCellInfo - a model defined in Swagger
+
+        :param dl_gbr_pdr_cell: The dl_gbr_pdr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type dl_gbr_pdr_cell: int
+        :param dl_gbr_prb_usage_cell: The dl_gbr_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type dl_gbr_prb_usage_cell: int
+        :param dl_nongbr_pdr_cell: The dl_nongbr_pdr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type dl_nongbr_pdr_cell: int
+        :param dl_nongbr_prb_usage_cell: The dl_nongbr_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type dl_nongbr_prb_usage_cell: int
+        :param dl_total_prb_usage_cell: The dl_total_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type dl_total_prb_usage_cell: int
+        :param ecgi: The ecgi of this L2MeasCellInfo.  # noqa: E501
+        :type ecgi: Ecgi
+        :param number_of_active_ue_dl_gbr_cell: The number_of_active_ue_dl_gbr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type number_of_active_ue_dl_gbr_cell: int
+        :param number_of_active_ue_dl_nongbr_cell: The number_of_active_ue_dl_nongbr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type number_of_active_ue_dl_nongbr_cell: int
+        :param number_of_active_ue_ul_gbr_cell: The number_of_active_ue_ul_gbr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type number_of_active_ue_ul_gbr_cell: int
+        :param number_of_active_ue_ul_nongbr_cell: The number_of_active_ue_ul_nongbr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type number_of_active_ue_ul_nongbr_cell: int
+        :param received_dedicated_preambles_cell: The received_dedicated_preambles_cell of this L2MeasCellInfo.  # noqa: E501
+        :type received_dedicated_preambles_cell: int
+        :param received_randomly_selected_preambles_high_range_cell: The received_randomly_selected_preambles_high_range_cell of this L2MeasCellInfo.  # noqa: E501
+        :type received_randomly_selected_preambles_high_range_cell: int
+        :param received_randomly_selected_preambles_low_range_cell: The received_randomly_selected_preambles_low_range_cell of this L2MeasCellInfo.  # noqa: E501
+        :type received_randomly_selected_preambles_low_range_cell: int
+        :param ul_gbr_pdr_cell: The ul_gbr_pdr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type ul_gbr_pdr_cell: int
+        :param ul_gbr_prb_usage_cell: The ul_gbr_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type ul_gbr_prb_usage_cell: int
+        :param ul_nongbr_pdr_cell: The ul_nongbr_pdr_cell of this L2MeasCellInfo.  # noqa: E501
+        :type ul_nongbr_pdr_cell: int
+        :param ul_nongbr_prb_usage_cell: The ul_nongbr_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type ul_nongbr_prb_usage_cell: int
+        :param ul_total_prb_usage_cell: The ul_total_prb_usage_cell of this L2MeasCellInfo.  # noqa: E501
+        :type ul_total_prb_usage_cell: int
+        """
+        self.swagger_types = {
+            'dl_gbr_pdr_cell': int,
+            'dl_gbr_prb_usage_cell': int,
+            'dl_nongbr_pdr_cell': int,
+            'dl_nongbr_prb_usage_cell': int,
+            'dl_total_prb_usage_cell': int,
+            'ecgi': Ecgi,
+            'number_of_active_ue_dl_gbr_cell': int,
+            'number_of_active_ue_dl_nongbr_cell': int,
+            'number_of_active_ue_ul_gbr_cell': int,
+            'number_of_active_ue_ul_nongbr_cell': int,
+            'received_dedicated_preambles_cell': int,
+            'received_randomly_selected_preambles_high_range_cell': int,
+            'received_randomly_selected_preambles_low_range_cell': int,
+            'ul_gbr_pdr_cell': int,
+            'ul_gbr_prb_usage_cell': int,
+            'ul_nongbr_pdr_cell': int,
+            'ul_nongbr_prb_usage_cell': int,
+            'ul_total_prb_usage_cell': int
+        }
+
+        self.attribute_map = {
+            'dl_gbr_pdr_cell': 'dl_gbr_pdr_cell',
+            'dl_gbr_prb_usage_cell': 'dl_gbr_prb_usage_cell',
+            'dl_nongbr_pdr_cell': 'dl_nongbr_pdr_cell',
+            'dl_nongbr_prb_usage_cell': 'dl_nongbr_prb_usage_cell',
+            'dl_total_prb_usage_cell': 'dl_total_prb_usage_cell',
+            'ecgi': 'ecgi',
+            'number_of_active_ue_dl_gbr_cell': 'number_of_active_ue_dl_gbr_cell',
+            'number_of_active_ue_dl_nongbr_cell': 'number_of_active_ue_dl_nongbr_cell',
+            'number_of_active_ue_ul_gbr_cell': 'number_of_active_ue_ul_gbr_cell',
+            'number_of_active_ue_ul_nongbr_cell': 'number_of_active_ue_ul_nongbr_cell',
+            'received_dedicated_preambles_cell': 'received_dedicated_preambles_cell',
+            'received_randomly_selected_preambles_high_range_cell': 'received_randomly_selected_preambles_high_range_cell',
+            'received_randomly_selected_preambles_low_range_cell': 'received_randomly_selected_preambles_low_range_cell',
+            'ul_gbr_pdr_cell': 'ul_gbr_pdr_cell',
+            'ul_gbr_prb_usage_cell': 'ul_gbr_prb_usage_cell',
+            'ul_nongbr_pdr_cell': 'ul_nongbr_pdr_cell',
+            'ul_nongbr_prb_usage_cell': 'ul_nongbr_prb_usage_cell',
+            'ul_total_prb_usage_cell': 'ul_total_prb_usage_cell'
+        }
+        self._dl_gbr_pdr_cell = dl_gbr_pdr_cell
+        self._dl_gbr_prb_usage_cell = dl_gbr_prb_usage_cell
+        self._dl_nongbr_pdr_cell = dl_nongbr_pdr_cell
+        self._dl_nongbr_prb_usage_cell = dl_nongbr_prb_usage_cell
+        self._dl_total_prb_usage_cell = dl_total_prb_usage_cell
+        self._ecgi = ecgi
+        self._number_of_active_ue_dl_gbr_cell = number_of_active_ue_dl_gbr_cell
+        self._number_of_active_ue_dl_nongbr_cell = number_of_active_ue_dl_nongbr_cell
+        self._number_of_active_ue_ul_gbr_cell = number_of_active_ue_ul_gbr_cell
+        self._number_of_active_ue_ul_nongbr_cell = number_of_active_ue_ul_nongbr_cell
+        self._received_dedicated_preambles_cell = received_dedicated_preambles_cell
+        self._received_randomly_selected_preambles_high_range_cell = received_randomly_selected_preambles_high_range_cell
+        self._received_randomly_selected_preambles_low_range_cell = received_randomly_selected_preambles_low_range_cell
+        self._ul_gbr_pdr_cell = ul_gbr_pdr_cell
+        self._ul_gbr_prb_usage_cell = ul_gbr_prb_usage_cell
+        self._ul_nongbr_pdr_cell = ul_nongbr_pdr_cell
+        self._ul_nongbr_prb_usage_cell = ul_nongbr_prb_usage_cell
+        self._ul_total_prb_usage_cell = ul_total_prb_usage_cell
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'L2MeasCellInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The L2Meas_cellInfo of this L2MeasCellInfo.  # noqa: E501
+        :rtype: L2MeasCellInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def dl_gbr_pdr_cell(self) -> int:
+        """Gets the dl_gbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the downlink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_gbr_pdr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_pdr_cell
+
+    @dl_gbr_pdr_cell.setter
+    def dl_gbr_pdr_cell(self, dl_gbr_pdr_cell: int):
+        """Sets the dl_gbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the downlink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_gbr_pdr_cell: The dl_gbr_pdr_cell of this L2MeasCellInfo.
+        :type dl_gbr_pdr_cell: int
+        """
+
+        self._dl_gbr_pdr_cell = dl_gbr_pdr_cell
+
+    @property
+    def dl_gbr_prb_usage_cell(self) -> int:
+        """Gets the dl_gbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates the PRB usage for downlink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The dl_gbr_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_prb_usage_cell
+
+    @dl_gbr_prb_usage_cell.setter
+    def dl_gbr_prb_usage_cell(self, dl_gbr_prb_usage_cell: int):
+        """Sets the dl_gbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates the PRB usage for downlink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param dl_gbr_prb_usage_cell: The dl_gbr_prb_usage_cell of this L2MeasCellInfo.
+        :type dl_gbr_prb_usage_cell: int
+        """
+
+        self._dl_gbr_prb_usage_cell = dl_gbr_prb_usage_cell
+
+    @property
+    def dl_nongbr_pdr_cell(self) -> int:
+        """Gets the dl_nongbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the downlink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_nongbr_pdr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_pdr_cell
+
+    @dl_nongbr_pdr_cell.setter
+    def dl_nongbr_pdr_cell(self, dl_nongbr_pdr_cell: int):
+        """Sets the dl_nongbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the downlink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_nongbr_pdr_cell: The dl_nongbr_pdr_cell of this L2MeasCellInfo.
+        :type dl_nongbr_pdr_cell: int
+        """
+
+        self._dl_nongbr_pdr_cell = dl_nongbr_pdr_cell
+
+    @property
+    def dl_nongbr_prb_usage_cell(self) -> int:
+        """Gets the dl_nongbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The dl_nongbr_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_prb_usage_cell
+
+    @dl_nongbr_prb_usage_cell.setter
+    def dl_nongbr_prb_usage_cell(self, dl_nongbr_prb_usage_cell: int):
+        """Sets the dl_nongbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param dl_nongbr_prb_usage_cell: The dl_nongbr_prb_usage_cell of this L2MeasCellInfo.
+        :type dl_nongbr_prb_usage_cell: int
+        """
+
+        self._dl_nongbr_prb_usage_cell = dl_nongbr_prb_usage_cell
+
+    @property
+    def dl_total_prb_usage_cell(self) -> int:
+        """Gets the dl_total_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for total downlink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The dl_total_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._dl_total_prb_usage_cell
+
+    @dl_total_prb_usage_cell.setter
+    def dl_total_prb_usage_cell(self, dl_total_prb_usage_cell: int):
+        """Sets the dl_total_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for total downlink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param dl_total_prb_usage_cell: The dl_total_prb_usage_cell of this L2MeasCellInfo.
+        :type dl_total_prb_usage_cell: int
+        """
+
+        self._dl_total_prb_usage_cell = dl_total_prb_usage_cell
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this L2MeasCellInfo.
+
+
+        :return: The ecgi of this L2MeasCellInfo.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this L2MeasCellInfo.
+
+
+        :param ecgi: The ecgi of this L2MeasCellInfo.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def number_of_active_ue_dl_gbr_cell(self) -> int:
+        """Gets the number_of_active_ue_dl_gbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with downlink GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The number_of_active_ue_dl_gbr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._number_of_active_ue_dl_gbr_cell
+
+    @number_of_active_ue_dl_gbr_cell.setter
+    def number_of_active_ue_dl_gbr_cell(self, number_of_active_ue_dl_gbr_cell: int):
+        """Sets the number_of_active_ue_dl_gbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with downlink GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param number_of_active_ue_dl_gbr_cell: The number_of_active_ue_dl_gbr_cell of this L2MeasCellInfo.
+        :type number_of_active_ue_dl_gbr_cell: int
+        """
+
+        self._number_of_active_ue_dl_gbr_cell = number_of_active_ue_dl_gbr_cell
+
+    @property
+    def number_of_active_ue_dl_nongbr_cell(self) -> int:
+        """Gets the number_of_active_ue_dl_nongbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The number_of_active_ue_dl_nongbr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._number_of_active_ue_dl_nongbr_cell
+
+    @number_of_active_ue_dl_nongbr_cell.setter
+    def number_of_active_ue_dl_nongbr_cell(self, number_of_active_ue_dl_nongbr_cell: int):
+        """Sets the number_of_active_ue_dl_nongbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param number_of_active_ue_dl_nongbr_cell: The number_of_active_ue_dl_nongbr_cell of this L2MeasCellInfo.
+        :type number_of_active_ue_dl_nongbr_cell: int
+        """
+
+        self._number_of_active_ue_dl_nongbr_cell = number_of_active_ue_dl_nongbr_cell
+
+    @property
+    def number_of_active_ue_ul_gbr_cell(self) -> int:
+        """Gets the number_of_active_ue_ul_gbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with uplink GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The number_of_active_ue_ul_gbr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._number_of_active_ue_ul_gbr_cell
+
+    @number_of_active_ue_ul_gbr_cell.setter
+    def number_of_active_ue_ul_gbr_cell(self, number_of_active_ue_ul_gbr_cell: int):
+        """Sets the number_of_active_ue_ul_gbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with uplink GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param number_of_active_ue_ul_gbr_cell: The number_of_active_ue_ul_gbr_cell of this L2MeasCellInfo.
+        :type number_of_active_ue_ul_gbr_cell: int
+        """
+
+        self._number_of_active_ue_ul_gbr_cell = number_of_active_ue_ul_gbr_cell
+
+    @property
+    def number_of_active_ue_ul_nongbr_cell(self) -> int:
+        """Gets the number_of_active_ue_ul_nongbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The number_of_active_ue_ul_nongbr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._number_of_active_ue_ul_nongbr_cell
+
+    @number_of_active_ue_ul_nongbr_cell.setter
+    def number_of_active_ue_ul_nongbr_cell(self, number_of_active_ue_ul_nongbr_cell: int):
+        """Sets the number_of_active_ue_ul_nongbr_cell of this L2MeasCellInfo.
+
+        It indicates the number of active UEs with uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param number_of_active_ue_ul_nongbr_cell: The number_of_active_ue_ul_nongbr_cell of this L2MeasCellInfo.
+        :type number_of_active_ue_ul_nongbr_cell: int
+        """
+
+        self._number_of_active_ue_ul_nongbr_cell = number_of_active_ue_ul_nongbr_cell
+
+    @property
+    def received_dedicated_preambles_cell(self) -> int:
+        """Gets the received_dedicated_preambles_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received dedicated preamples, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The received_dedicated_preambles_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._received_dedicated_preambles_cell
+
+    @received_dedicated_preambles_cell.setter
+    def received_dedicated_preambles_cell(self, received_dedicated_preambles_cell: int):
+        """Sets the received_dedicated_preambles_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received dedicated preamples, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param received_dedicated_preambles_cell: The received_dedicated_preambles_cell of this L2MeasCellInfo.
+        :type received_dedicated_preambles_cell: int
+        """
+
+        self._received_dedicated_preambles_cell = received_dedicated_preambles_cell
+
+    @property
+    def received_randomly_selected_preambles_high_range_cell(self) -> int:
+        """Gets the received_randomly_selected_preambles_high_range_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received randomly selected preambles in the high range, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The received_randomly_selected_preambles_high_range_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._received_randomly_selected_preambles_high_range_cell
+
+    @received_randomly_selected_preambles_high_range_cell.setter
+    def received_randomly_selected_preambles_high_range_cell(self, received_randomly_selected_preambles_high_range_cell: int):
+        """Sets the received_randomly_selected_preambles_high_range_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received randomly selected preambles in the high range, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param received_randomly_selected_preambles_high_range_cell: The received_randomly_selected_preambles_high_range_cell of this L2MeasCellInfo.
+        :type received_randomly_selected_preambles_high_range_cell: int
+        """
+
+        self._received_randomly_selected_preambles_high_range_cell = received_randomly_selected_preambles_high_range_cell
+
+    @property
+    def received_randomly_selected_preambles_low_range_cell(self) -> int:
+        """Gets the received_randomly_selected_preambles_low_range_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received randomly selected preambles in the low range, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The received_randomly_selected_preambles_low_range_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._received_randomly_selected_preambles_low_range_cell
+
+    @received_randomly_selected_preambles_low_range_cell.setter
+    def received_randomly_selected_preambles_low_range_cell(self, received_randomly_selected_preambles_low_range_cell: int):
+        """Sets the received_randomly_selected_preambles_low_range_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the received randomly selected preambles in the low range, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param received_randomly_selected_preambles_low_range_cell: The received_randomly_selected_preambles_low_range_cell of this L2MeasCellInfo.
+        :type received_randomly_selected_preambles_low_range_cell: int
+        """
+
+        self._received_randomly_selected_preambles_low_range_cell = received_randomly_selected_preambles_low_range_cell
+
+    @property
+    def ul_gbr_pdr_cell(self) -> int:
+        """Gets the ul_gbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the uplink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_gbr_pdr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_pdr_cell
+
+    @ul_gbr_pdr_cell.setter
+    def ul_gbr_pdr_cell(self, ul_gbr_pdr_cell: int):
+        """Sets the ul_gbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the uplink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_gbr_pdr_cell: The ul_gbr_pdr_cell of this L2MeasCellInfo.
+        :type ul_gbr_pdr_cell: int
+        """
+
+        self._ul_gbr_pdr_cell = ul_gbr_pdr_cell
+
+    @property
+    def ul_gbr_prb_usage_cell(self) -> int:
+        """Gets the ul_gbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for uplink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The ul_gbr_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_prb_usage_cell
+
+    @ul_gbr_prb_usage_cell.setter
+    def ul_gbr_prb_usage_cell(self, ul_gbr_prb_usage_cell: int):
+        """Sets the ul_gbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for uplink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param ul_gbr_prb_usage_cell: The ul_gbr_prb_usage_cell of this L2MeasCellInfo.
+        :type ul_gbr_prb_usage_cell: int
+        """
+
+        self._ul_gbr_prb_usage_cell = ul_gbr_prb_usage_cell
+
+    @property
+    def ul_nongbr_pdr_cell(self) -> int:
+        """Gets the ul_nongbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the uplink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_nongbr_pdr_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_pdr_cell
+
+    @ul_nongbr_pdr_cell.setter
+    def ul_nongbr_pdr_cell(self, ul_nongbr_pdr_cell: int):
+        """Sets the ul_nongbr_pdr_cell of this L2MeasCellInfo.
+
+        It indicates the packet discard rate in percentage of the uplink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_nongbr_pdr_cell: The ul_nongbr_pdr_cell of this L2MeasCellInfo.
+        :type ul_nongbr_pdr_cell: int
+        """
+
+        self._ul_nongbr_pdr_cell = ul_nongbr_pdr_cell
+
+    @property
+    def ul_nongbr_prb_usage_cell(self) -> int:
+        """Gets the ul_nongbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The ul_nongbr_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_prb_usage_cell
+
+    @ul_nongbr_prb_usage_cell.setter
+    def ul_nongbr_prb_usage_cell(self, ul_nongbr_prb_usage_cell: int):
+        """Sets the ul_nongbr_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param ul_nongbr_prb_usage_cell: The ul_nongbr_prb_usage_cell of this L2MeasCellInfo.
+        :type ul_nongbr_prb_usage_cell: int
+        """
+
+        self._ul_nongbr_prb_usage_cell = ul_nongbr_prb_usage_cell
+
+    @property
+    def ul_total_prb_usage_cell(self) -> int:
+        """Gets the ul_total_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for total uplink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :return: The ul_total_prb_usage_cell of this L2MeasCellInfo.
+        :rtype: int
+        """
+        return self._ul_total_prb_usage_cell
+
+    @ul_total_prb_usage_cell.setter
+    def ul_total_prb_usage_cell(self, ul_total_prb_usage_cell: int):
+        """Sets the ul_total_prb_usage_cell of this L2MeasCellInfo.
+
+        It indicates (in percentage) the PRB usage for total uplink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].  # noqa: E501
+
+        :param ul_total_prb_usage_cell: The ul_total_prb_usage_cell of this L2MeasCellInfo.
+        :type ul_total_prb_usage_cell: int
+        """
+
+        self._ul_total_prb_usage_cell = ul_total_prb_usage_cell
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_ue_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_ue_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..9de23b2c5293b522f4e4c2ff4b9c384f496d990b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/l2_meas_cell_ue_info.py
@@ -0,0 +1,538 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class L2MeasCellUEInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: AssociateId=None, dl_gbr_data_volume_ue: int=None, dl_gbr_delay_ue: int=None, dl_gbr_pdr_ue: int=None, dl_gbr_throughput_ue: int=None, dl_nongbr_data_volume_ue: int=None, dl_nongbr_delay_ue: int=None, dl_nongbr_pdr_ue: int=None, dl_nongbr_throughput_ue: int=None, ecgi: Ecgi=None, ul_gbr_data_volume_ue: int=None, ul_gbr_delay_ue: int=None, ul_gbr_pdr_ue: int=None, ul_gbr_throughput_ue: int=None, ul_nongbr_data_volume_ue: int=None, ul_nongbr_delay_ue: int=None, ul_nongbr_pdr_ue: int=None, ul_nongbr_throughput_ue: int=None):  # noqa: E501
+        """L2MeasCellUEInfo - a model defined in Swagger
+
+        :param associate_id: The associate_id of this L2MeasCellUEInfo.  # noqa: E501
+        :type associate_id: AssociateId
+        :param dl_gbr_data_volume_ue: The dl_gbr_data_volume_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_gbr_data_volume_ue: int
+        :param dl_gbr_delay_ue: The dl_gbr_delay_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_gbr_delay_ue: int
+        :param dl_gbr_pdr_ue: The dl_gbr_pdr_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_gbr_pdr_ue: int
+        :param dl_gbr_throughput_ue: The dl_gbr_throughput_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_gbr_throughput_ue: int
+        :param dl_nongbr_data_volume_ue: The dl_nongbr_data_volume_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_nongbr_data_volume_ue: int
+        :param dl_nongbr_delay_ue: The dl_nongbr_delay_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_nongbr_delay_ue: int
+        :param dl_nongbr_pdr_ue: The dl_nongbr_pdr_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_nongbr_pdr_ue: int
+        :param dl_nongbr_throughput_ue: The dl_nongbr_throughput_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type dl_nongbr_throughput_ue: int
+        :param ecgi: The ecgi of this L2MeasCellUEInfo.  # noqa: E501
+        :type ecgi: Ecgi
+        :param ul_gbr_data_volume_ue: The ul_gbr_data_volume_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_gbr_data_volume_ue: int
+        :param ul_gbr_delay_ue: The ul_gbr_delay_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_gbr_delay_ue: int
+        :param ul_gbr_pdr_ue: The ul_gbr_pdr_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_gbr_pdr_ue: int
+        :param ul_gbr_throughput_ue: The ul_gbr_throughput_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_gbr_throughput_ue: int
+        :param ul_nongbr_data_volume_ue: The ul_nongbr_data_volume_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_nongbr_data_volume_ue: int
+        :param ul_nongbr_delay_ue: The ul_nongbr_delay_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_nongbr_delay_ue: int
+        :param ul_nongbr_pdr_ue: The ul_nongbr_pdr_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_nongbr_pdr_ue: int
+        :param ul_nongbr_throughput_ue: The ul_nongbr_throughput_ue of this L2MeasCellUEInfo.  # noqa: E501
+        :type ul_nongbr_throughput_ue: int
+        """
+        self.swagger_types = {
+            'associate_id': AssociateId,
+            'dl_gbr_data_volume_ue': int,
+            'dl_gbr_delay_ue': int,
+            'dl_gbr_pdr_ue': int,
+            'dl_gbr_throughput_ue': int,
+            'dl_nongbr_data_volume_ue': int,
+            'dl_nongbr_delay_ue': int,
+            'dl_nongbr_pdr_ue': int,
+            'dl_nongbr_throughput_ue': int,
+            'ecgi': Ecgi,
+            'ul_gbr_data_volume_ue': int,
+            'ul_gbr_delay_ue': int,
+            'ul_gbr_pdr_ue': int,
+            'ul_gbr_throughput_ue': int,
+            'ul_nongbr_data_volume_ue': int,
+            'ul_nongbr_delay_ue': int,
+            'ul_nongbr_pdr_ue': int,
+            'ul_nongbr_throughput_ue': int
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'dl_gbr_data_volume_ue': 'dl_gbr_data_volume_ue',
+            'dl_gbr_delay_ue': 'dl_gbr_delay_ue',
+            'dl_gbr_pdr_ue': 'dl_gbr_pdr_ue',
+            'dl_gbr_throughput_ue': 'dl_gbr_throughput_ue',
+            'dl_nongbr_data_volume_ue': 'dl_nongbr_data_volume_ue',
+            'dl_nongbr_delay_ue': 'dl_nongbr_delay_ue',
+            'dl_nongbr_pdr_ue': 'dl_nongbr_pdr_ue',
+            'dl_nongbr_throughput_ue': 'dl_nongbr_throughput_ue',
+            'ecgi': 'ecgi',
+            'ul_gbr_data_volume_ue': 'ul_gbr_data_volume_ue',
+            'ul_gbr_delay_ue': 'ul_gbr_delay_ue',
+            'ul_gbr_pdr_ue': 'ul_gbr_pdr_ue',
+            'ul_gbr_throughput_ue': 'ul_gbr_throughput_ue',
+            'ul_nongbr_data_volume_ue': 'ul_nongbr_data_volume_ue',
+            'ul_nongbr_delay_ue': 'ul_nongbr_delay_ue',
+            'ul_nongbr_pdr_ue': 'ul_nongbr_pdr_ue',
+            'ul_nongbr_throughput_ue': 'ul_nongbr_throughput_ue'
+        }
+        self._associate_id = associate_id
+        self._dl_gbr_data_volume_ue = dl_gbr_data_volume_ue
+        self._dl_gbr_delay_ue = dl_gbr_delay_ue
+        self._dl_gbr_pdr_ue = dl_gbr_pdr_ue
+        self._dl_gbr_throughput_ue = dl_gbr_throughput_ue
+        self._dl_nongbr_data_volume_ue = dl_nongbr_data_volume_ue
+        self._dl_nongbr_delay_ue = dl_nongbr_delay_ue
+        self._dl_nongbr_pdr_ue = dl_nongbr_pdr_ue
+        self._dl_nongbr_throughput_ue = dl_nongbr_throughput_ue
+        self._ecgi = ecgi
+        self._ul_gbr_data_volume_ue = ul_gbr_data_volume_ue
+        self._ul_gbr_delay_ue = ul_gbr_delay_ue
+        self._ul_gbr_pdr_ue = ul_gbr_pdr_ue
+        self._ul_gbr_throughput_ue = ul_gbr_throughput_ue
+        self._ul_nongbr_data_volume_ue = ul_nongbr_data_volume_ue
+        self._ul_nongbr_delay_ue = ul_nongbr_delay_ue
+        self._ul_nongbr_pdr_ue = ul_nongbr_pdr_ue
+        self._ul_nongbr_throughput_ue = ul_nongbr_throughput_ue
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'L2MeasCellUEInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The L2Meas_cellUEInfo of this L2MeasCellUEInfo.  # noqa: E501
+        :rtype: L2MeasCellUEInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> AssociateId:
+        """Gets the associate_id of this L2MeasCellUEInfo.
+
+
+        :return: The associate_id of this L2MeasCellUEInfo.
+        :rtype: AssociateId
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: AssociateId):
+        """Sets the associate_id of this L2MeasCellUEInfo.
+
+
+        :param associate_id: The associate_id of this L2MeasCellUEInfo.
+        :type associate_id: AssociateId
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def dl_gbr_data_volume_ue(self) -> int:
+        """Gets the dl_gbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_gbr_data_volume_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_data_volume_ue
+
+    @dl_gbr_data_volume_ue.setter
+    def dl_gbr_data_volume_ue(self, dl_gbr_data_volume_ue: int):
+        """Sets the dl_gbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_gbr_data_volume_ue: The dl_gbr_data_volume_ue of this L2MeasCellUEInfo.
+        :type dl_gbr_data_volume_ue: int
+        """
+
+        self._dl_gbr_data_volume_ue = dl_gbr_data_volume_ue
+
+    @property
+    def dl_gbr_delay_ue(self) -> int:
+        """Gets the dl_gbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_gbr_delay_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_delay_ue
+
+    @dl_gbr_delay_ue.setter
+    def dl_gbr_delay_ue(self, dl_gbr_delay_ue: int):
+        """Sets the dl_gbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_gbr_delay_ue: The dl_gbr_delay_ue of this L2MeasCellUEInfo.
+        :type dl_gbr_delay_ue: int
+        """
+
+        self._dl_gbr_delay_ue = dl_gbr_delay_ue
+
+    @property
+    def dl_gbr_pdr_ue(self) -> int:
+        """Gets the dl_gbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_gbr_pdr_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_pdr_ue
+
+    @dl_gbr_pdr_ue.setter
+    def dl_gbr_pdr_ue(self, dl_gbr_pdr_ue: int):
+        """Sets the dl_gbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_gbr_pdr_ue: The dl_gbr_pdr_ue of this L2MeasCellUEInfo.
+        :type dl_gbr_pdr_ue: int
+        """
+
+        self._dl_gbr_pdr_ue = dl_gbr_pdr_ue
+
+    @property
+    def dl_gbr_throughput_ue(self) -> int:
+        """Gets the dl_gbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_gbr_throughput_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_gbr_throughput_ue
+
+    @dl_gbr_throughput_ue.setter
+    def dl_gbr_throughput_ue(self, dl_gbr_throughput_ue: int):
+        """Sets the dl_gbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_gbr_throughput_ue: The dl_gbr_throughput_ue of this L2MeasCellUEInfo.
+        :type dl_gbr_throughput_ue: int
+        """
+
+        self._dl_gbr_throughput_ue = dl_gbr_throughput_ue
+
+    @property
+    def dl_nongbr_data_volume_ue(self) -> int:
+        """Gets the dl_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_data_volume_ue
+
+    @dl_nongbr_data_volume_ue.setter
+    def dl_nongbr_data_volume_ue(self, dl_nongbr_data_volume_ue: int):
+        """Sets the dl_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_nongbr_data_volume_ue: The dl_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+        :type dl_nongbr_data_volume_ue: int
+        """
+
+        self._dl_nongbr_data_volume_ue = dl_nongbr_data_volume_ue
+
+    @property
+    def dl_nongbr_delay_ue(self) -> int:
+        """Gets the dl_nongbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_nongbr_delay_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_delay_ue
+
+    @dl_nongbr_delay_ue.setter
+    def dl_nongbr_delay_ue(self, dl_nongbr_delay_ue: int):
+        """Sets the dl_nongbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_nongbr_delay_ue: The dl_nongbr_delay_ue of this L2MeasCellUEInfo.
+        :type dl_nongbr_delay_ue: int
+        """
+
+        self._dl_nongbr_delay_ue = dl_nongbr_delay_ue
+
+    @property
+    def dl_nongbr_pdr_ue(self) -> int:
+        """Gets the dl_nongbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_nongbr_pdr_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_pdr_ue
+
+    @dl_nongbr_pdr_ue.setter
+    def dl_nongbr_pdr_ue(self, dl_nongbr_pdr_ue: int):
+        """Sets the dl_nongbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_nongbr_pdr_ue: The dl_nongbr_pdr_ue of this L2MeasCellUEInfo.
+        :type dl_nongbr_pdr_ue: int
+        """
+
+        self._dl_nongbr_pdr_ue = dl_nongbr_pdr_ue
+
+    @property
+    def dl_nongbr_throughput_ue(self) -> int:
+        """Gets the dl_nongbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The dl_nongbr_throughput_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._dl_nongbr_throughput_ue
+
+    @dl_nongbr_throughput_ue.setter
+    def dl_nongbr_throughput_ue(self, dl_nongbr_throughput_ue: int):
+        """Sets the dl_nongbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param dl_nongbr_throughput_ue: The dl_nongbr_throughput_ue of this L2MeasCellUEInfo.
+        :type dl_nongbr_throughput_ue: int
+        """
+
+        self._dl_nongbr_throughput_ue = dl_nongbr_throughput_ue
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this L2MeasCellUEInfo.
+
+
+        :return: The ecgi of this L2MeasCellUEInfo.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this L2MeasCellUEInfo.
+
+
+        :param ecgi: The ecgi of this L2MeasCellUEInfo.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def ul_gbr_data_volume_ue(self) -> int:
+        """Gets the ul_gbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_gbr_data_volume_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_data_volume_ue
+
+    @ul_gbr_data_volume_ue.setter
+    def ul_gbr_data_volume_ue(self, ul_gbr_data_volume_ue: int):
+        """Sets the ul_gbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_gbr_data_volume_ue: The ul_gbr_data_volume_ue of this L2MeasCellUEInfo.
+        :type ul_gbr_data_volume_ue: int
+        """
+
+        self._ul_gbr_data_volume_ue = ul_gbr_data_volume_ue
+
+    @property
+    def ul_gbr_delay_ue(self) -> int:
+        """Gets the ul_gbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_gbr_delay_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_delay_ue
+
+    @ul_gbr_delay_ue.setter
+    def ul_gbr_delay_ue(self, ul_gbr_delay_ue: int):
+        """Sets the ul_gbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_gbr_delay_ue: The ul_gbr_delay_ue of this L2MeasCellUEInfo.
+        :type ul_gbr_delay_ue: int
+        """
+
+        self._ul_gbr_delay_ue = ul_gbr_delay_ue
+
+    @property
+    def ul_gbr_pdr_ue(self) -> int:
+        """Gets the ul_gbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_gbr_pdr_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_pdr_ue
+
+    @ul_gbr_pdr_ue.setter
+    def ul_gbr_pdr_ue(self, ul_gbr_pdr_ue: int):
+        """Sets the ul_gbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_gbr_pdr_ue: The ul_gbr_pdr_ue of this L2MeasCellUEInfo.
+        :type ul_gbr_pdr_ue: int
+        """
+
+        self._ul_gbr_pdr_ue = ul_gbr_pdr_ue
+
+    @property
+    def ul_gbr_throughput_ue(self) -> int:
+        """Gets the ul_gbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_gbr_throughput_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_gbr_throughput_ue
+
+    @ul_gbr_throughput_ue.setter
+    def ul_gbr_throughput_ue(self, ul_gbr_throughput_ue: int):
+        """Sets the ul_gbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_gbr_throughput_ue: The ul_gbr_throughput_ue of this L2MeasCellUEInfo.
+        :type ul_gbr_throughput_ue: int
+        """
+
+        self._ul_gbr_throughput_ue = ul_gbr_throughput_ue
+
+    @property
+    def ul_nongbr_data_volume_ue(self) -> int:
+        """Gets the ul_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_data_volume_ue
+
+    @ul_nongbr_data_volume_ue.setter
+    def ul_nongbr_data_volume_ue(self, ul_nongbr_data_volume_ue: int):
+        """Sets the ul_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+
+        It indicates the data volume of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_nongbr_data_volume_ue: The ul_nongbr_data_volume_ue of this L2MeasCellUEInfo.
+        :type ul_nongbr_data_volume_ue: int
+        """
+
+        self._ul_nongbr_data_volume_ue = ul_nongbr_data_volume_ue
+
+    @property
+    def ul_nongbr_delay_ue(self) -> int:
+        """Gets the ul_nongbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_nongbr_delay_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_delay_ue
+
+    @ul_nongbr_delay_ue.setter
+    def ul_nongbr_delay_ue(self, ul_nongbr_delay_ue: int):
+        """Sets the ul_nongbr_delay_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet delay of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_nongbr_delay_ue: The ul_nongbr_delay_ue of this L2MeasCellUEInfo.
+        :type ul_nongbr_delay_ue: int
+        """
+
+        self._ul_nongbr_delay_ue = ul_nongbr_delay_ue
+
+    @property
+    def ul_nongbr_pdr_ue(self) -> int:
+        """Gets the ul_nongbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the uplink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_nongbr_pdr_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_pdr_ue
+
+    @ul_nongbr_pdr_ue.setter
+    def ul_nongbr_pdr_ue(self, ul_nongbr_pdr_ue: int):
+        """Sets the ul_nongbr_pdr_ue of this L2MeasCellUEInfo.
+
+        It indicates the packet discard rate in percentage of the uplink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_nongbr_pdr_ue: The ul_nongbr_pdr_ue of this L2MeasCellUEInfo.
+        :type ul_nongbr_pdr_ue: int
+        """
+
+        self._ul_nongbr_pdr_ue = ul_nongbr_pdr_ue
+
+    @property
+    def ul_nongbr_throughput_ue(self) -> int:
+        """Gets the ul_nongbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :return: The ul_nongbr_throughput_ue of this L2MeasCellUEInfo.
+        :rtype: int
+        """
+        return self._ul_nongbr_throughput_ue
+
+    @ul_nongbr_throughput_ue.setter
+    def ul_nongbr_throughput_ue(self, ul_nongbr_throughput_ue: int):
+        """Sets the ul_nongbr_throughput_ue of this L2MeasCellUEInfo.
+
+        It indicates the scheduled throughput of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].  # noqa: E501
+
+        :param ul_nongbr_throughput_ue: The ul_nongbr_throughput_ue of this L2MeasCellUEInfo.
+        :type ul_nongbr_throughput_ue: int
+        """
+
+        self._ul_nongbr_throughput_ue = ul_nongbr_throughput_ue
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/link_type.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/link_type.py
new file mode 100644
index 0000000000000000000000000000000000000000..fdfb9b2811ef9f10ddb12899c7183d11b0ebeb16
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/link_type.py
@@ -0,0 +1,66 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class LinkType(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, href: str=None):  # noqa: E501
+        """LinkType - a model defined in Swagger
+
+        :param href: The href of this LinkType.  # noqa: E501
+        :type href: str
+        """
+        self.swagger_types = {
+            'href': str
+        }
+
+        self.attribute_map = {
+            'href': 'href'
+        }
+        self._href = href
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'LinkType':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The LinkType of this LinkType.  # noqa: E501
+        :rtype: LinkType
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def href(self) -> str:
+        """Gets the href of this LinkType.
+
+        URI referring to a resource  # noqa: E501
+
+        :return: The href of this LinkType.
+        :rtype: str
+        """
+        return self._href
+
+    @href.setter
+    def href(self, href: str):
+        """Sets the href of this LinkType.
+
+        URI referring to a resource  # noqa: E501
+
+        :param href: The href of this LinkType.
+        :type href: str
+        """
+        if href is None:
+            raise ValueError("Invalid value for `href`, must not be `None`")  # noqa: E501
+
+        self._href = href
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_quantity_results_nr.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_quantity_results_nr.py
new file mode 100644
index 0000000000000000000000000000000000000000..acb5079895db207db1265eb0ffa61c5ae59fc249
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_quantity_results_nr.py
@@ -0,0 +1,120 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class MeasQuantityResultsNr(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, rsrp: int=None, rsrq: int=None, sinr: int=None):  # noqa: E501
+        """MeasQuantityResultsNr - a model defined in Swagger
+
+        :param rsrp: The rsrp of this MeasQuantityResultsNr.  # noqa: E501
+        :type rsrp: int
+        :param rsrq: The rsrq of this MeasQuantityResultsNr.  # noqa: E501
+        :type rsrq: int
+        :param sinr: The sinr of this MeasQuantityResultsNr.  # noqa: E501
+        :type sinr: int
+        """
+        self.swagger_types = {
+            'rsrp': int,
+            'rsrq': int,
+            'sinr': int
+        }
+
+        self.attribute_map = {
+            'rsrp': 'rsrp',
+            'rsrq': 'rsrq',
+            'sinr': 'sinr'
+        }
+        self._rsrp = rsrp
+        self._rsrq = rsrq
+        self._sinr = sinr
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasQuantityResultsNr':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasQuantityResultsNr of this MeasQuantityResultsNr.  # noqa: E501
+        :rtype: MeasQuantityResultsNr
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def rsrp(self) -> int:
+        """Gets the rsrp of this MeasQuantityResultsNr.
+
+        Reference Signal Received Power as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The rsrp of this MeasQuantityResultsNr.
+        :rtype: int
+        """
+        return self._rsrp
+
+    @rsrp.setter
+    def rsrp(self, rsrp: int):
+        """Sets the rsrp of this MeasQuantityResultsNr.
+
+        Reference Signal Received Power as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param rsrp: The rsrp of this MeasQuantityResultsNr.
+        :type rsrp: int
+        """
+
+        self._rsrp = rsrp
+
+    @property
+    def rsrq(self) -> int:
+        """Gets the rsrq of this MeasQuantityResultsNr.
+
+        Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The rsrq of this MeasQuantityResultsNr.
+        :rtype: int
+        """
+        return self._rsrq
+
+    @rsrq.setter
+    def rsrq(self, rsrq: int):
+        """Sets the rsrq of this MeasQuantityResultsNr.
+
+        Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param rsrq: The rsrq of this MeasQuantityResultsNr.
+        :type rsrq: int
+        """
+
+        self._rsrq = rsrq
+
+    @property
+    def sinr(self) -> int:
+        """Gets the sinr of this MeasQuantityResultsNr.
+
+        Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The sinr of this MeasQuantityResultsNr.
+        :rtype: int
+        """
+        return self._sinr
+
+    @sinr.setter
+    def sinr(self, sinr: int):
+        """Sets the sinr of this MeasQuantityResultsNr.
+
+        Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param sinr: The sinr of this MeasQuantityResultsNr.
+        :type sinr: int
+        """
+
+        self._sinr = sinr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..1c4a660b7ee54368e306c2efb0fe0221f0935d04
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification.py
@@ -0,0 +1,468 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_notification_carrier_aggregation_meas_info import MeasRepUeNotificationCarrierAggregationMeasInfo  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_notification_eutran_neighbour_cell_meas_info import MeasRepUeNotificationEutranNeighbourCellMeasInfo  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_notification_new_radio_meas_info import MeasRepUeNotificationNewRadioMeasInfo  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_notification_new_radio_meas_nei_info import MeasRepUeNotificationNewRadioMeasNeiInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server.models.trigger import Trigger  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, carrier_aggregation_meas_info: List[MeasRepUeNotificationCarrierAggregationMeasInfo]=None, ecgi: Ecgi=None, eutran_neighbour_cell_meas_info: List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]=None, height_ue: int=None, new_radio_meas_info: List[MeasRepUeNotificationNewRadioMeasInfo]=None, new_radio_meas_nei_info: List[MeasRepUeNotificationNewRadioMeasNeiInfo]=None, notification_type: str=None, rsrp: int=None, rsrp_ex: int=None, rsrq: int=None, rsrq_ex: int=None, sinr: int=None, time_stamp: TimeStamp=None, trigger: Trigger=None):  # noqa: E501
+        """MeasRepUeNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this MeasRepUeNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param carrier_aggregation_meas_info: The carrier_aggregation_meas_info of this MeasRepUeNotification.  # noqa: E501
+        :type carrier_aggregation_meas_info: List[MeasRepUeNotificationCarrierAggregationMeasInfo]
+        :param ecgi: The ecgi of this MeasRepUeNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param eutran_neighbour_cell_meas_info: The eutran_neighbour_cell_meas_info of this MeasRepUeNotification.  # noqa: E501
+        :type eutran_neighbour_cell_meas_info: List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]
+        :param height_ue: The height_ue of this MeasRepUeNotification.  # noqa: E501
+        :type height_ue: int
+        :param new_radio_meas_info: The new_radio_meas_info of this MeasRepUeNotification.  # noqa: E501
+        :type new_radio_meas_info: List[MeasRepUeNotificationNewRadioMeasInfo]
+        :param new_radio_meas_nei_info: The new_radio_meas_nei_info of this MeasRepUeNotification.  # noqa: E501
+        :type new_radio_meas_nei_info: List[MeasRepUeNotificationNewRadioMeasNeiInfo]
+        :param notification_type: The notification_type of this MeasRepUeNotification.  # noqa: E501
+        :type notification_type: str
+        :param rsrp: The rsrp of this MeasRepUeNotification.  # noqa: E501
+        :type rsrp: int
+        :param rsrp_ex: The rsrp_ex of this MeasRepUeNotification.  # noqa: E501
+        :type rsrp_ex: int
+        :param rsrq: The rsrq of this MeasRepUeNotification.  # noqa: E501
+        :type rsrq: int
+        :param rsrq_ex: The rsrq_ex of this MeasRepUeNotification.  # noqa: E501
+        :type rsrq_ex: int
+        :param sinr: The sinr of this MeasRepUeNotification.  # noqa: E501
+        :type sinr: int
+        :param time_stamp: The time_stamp of this MeasRepUeNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        :param trigger: The trigger of this MeasRepUeNotification.  # noqa: E501
+        :type trigger: Trigger
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'carrier_aggregation_meas_info': List[MeasRepUeNotificationCarrierAggregationMeasInfo],
+            'ecgi': Ecgi,
+            'eutran_neighbour_cell_meas_info': List[MeasRepUeNotificationEutranNeighbourCellMeasInfo],
+            'height_ue': int,
+            'new_radio_meas_info': List[MeasRepUeNotificationNewRadioMeasInfo],
+            'new_radio_meas_nei_info': List[MeasRepUeNotificationNewRadioMeasNeiInfo],
+            'notification_type': str,
+            'rsrp': int,
+            'rsrp_ex': int,
+            'rsrq': int,
+            'rsrq_ex': int,
+            'sinr': int,
+            'time_stamp': TimeStamp,
+            'trigger': Trigger
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'carrier_aggregation_meas_info': 'carrierAggregationMeasInfo',
+            'ecgi': 'ecgi',
+            'eutran_neighbour_cell_meas_info': 'eutranNeighbourCellMeasInfo',
+            'height_ue': 'heightUe',
+            'new_radio_meas_info': 'newRadioMeasInfo',
+            'new_radio_meas_nei_info': 'newRadioMeasNeiInfo',
+            'notification_type': 'notificationType',
+            'rsrp': 'rsrp',
+            'rsrp_ex': 'rsrpEx',
+            'rsrq': 'rsrq',
+            'rsrq_ex': 'rsrqEx',
+            'sinr': 'sinr',
+            'time_stamp': 'timeStamp',
+            'trigger': 'trigger'
+        }
+        self._associate_id = associate_id
+        self._carrier_aggregation_meas_info = carrier_aggregation_meas_info
+        self._ecgi = ecgi
+        self._eutran_neighbour_cell_meas_info = eutran_neighbour_cell_meas_info
+        self._height_ue = height_ue
+        self._new_radio_meas_info = new_radio_meas_info
+        self._new_radio_meas_nei_info = new_radio_meas_nei_info
+        self._notification_type = notification_type
+        self._rsrp = rsrp
+        self._rsrp_ex = rsrp_ex
+        self._rsrq = rsrq
+        self._rsrq_ex = rsrq_ex
+        self._sinr = sinr
+        self._time_stamp = time_stamp
+        self._trigger = trigger
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification of this MeasRepUeNotification.  # noqa: E501
+        :rtype: MeasRepUeNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this MeasRepUeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this MeasRepUeNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this MeasRepUeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this MeasRepUeNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def carrier_aggregation_meas_info(self) -> List[MeasRepUeNotificationCarrierAggregationMeasInfo]:
+        """Gets the carrier_aggregation_meas_info of this MeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to M.  # noqa: E501
+
+        :return: The carrier_aggregation_meas_info of this MeasRepUeNotification.
+        :rtype: List[MeasRepUeNotificationCarrierAggregationMeasInfo]
+        """
+        return self._carrier_aggregation_meas_info
+
+    @carrier_aggregation_meas_info.setter
+    def carrier_aggregation_meas_info(self, carrier_aggregation_meas_info: List[MeasRepUeNotificationCarrierAggregationMeasInfo]):
+        """Sets the carrier_aggregation_meas_info of this MeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to M.  # noqa: E501
+
+        :param carrier_aggregation_meas_info: The carrier_aggregation_meas_info of this MeasRepUeNotification.
+        :type carrier_aggregation_meas_info: List[MeasRepUeNotificationCarrierAggregationMeasInfo]
+        """
+
+        self._carrier_aggregation_meas_info = carrier_aggregation_meas_info
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this MeasRepUeNotification.
+
+
+        :return: The ecgi of this MeasRepUeNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this MeasRepUeNotification.
+
+
+        :param ecgi: The ecgi of this MeasRepUeNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def eutran_neighbour_cell_meas_info(self) -> List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]:
+        """Gets the eutran_neighbour_cell_meas_info of this MeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the neighbouring cells up to N.  # noqa: E501
+
+        :return: The eutran_neighbour_cell_meas_info of this MeasRepUeNotification.
+        :rtype: List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]
+        """
+        return self._eutran_neighbour_cell_meas_info
+
+    @eutran_neighbour_cell_meas_info.setter
+    def eutran_neighbour_cell_meas_info(self, eutran_neighbour_cell_meas_info: List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]):
+        """Sets the eutran_neighbour_cell_meas_info of this MeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the neighbouring cells up to N.  # noqa: E501
+
+        :param eutran_neighbour_cell_meas_info: The eutran_neighbour_cell_meas_info of this MeasRepUeNotification.
+        :type eutran_neighbour_cell_meas_info: List[MeasRepUeNotificationEutranNeighbourCellMeasInfo]
+        """
+
+        self._eutran_neighbour_cell_meas_info = eutran_neighbour_cell_meas_info
+
+    @property
+    def height_ue(self) -> int:
+        """Gets the height_ue of this MeasRepUeNotification.
+
+        Indicates height of the UE in meters relative to the sea level as defined in ETSI TS 136.331 [i.7].  # noqa: E501
+
+        :return: The height_ue of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._height_ue
+
+    @height_ue.setter
+    def height_ue(self, height_ue: int):
+        """Sets the height_ue of this MeasRepUeNotification.
+
+        Indicates height of the UE in meters relative to the sea level as defined in ETSI TS 136.331 [i.7].  # noqa: E501
+
+        :param height_ue: The height_ue of this MeasRepUeNotification.
+        :type height_ue: int
+        """
+
+        self._height_ue = height_ue
+
+    @property
+    def new_radio_meas_info(self) -> List[MeasRepUeNotificationNewRadioMeasInfo]:
+        """Gets the new_radio_meas_info of this MeasRepUeNotification.
+
+        5G New Radio secondary serving cells measurement information.  # noqa: E501
+
+        :return: The new_radio_meas_info of this MeasRepUeNotification.
+        :rtype: List[MeasRepUeNotificationNewRadioMeasInfo]
+        """
+        return self._new_radio_meas_info
+
+    @new_radio_meas_info.setter
+    def new_radio_meas_info(self, new_radio_meas_info: List[MeasRepUeNotificationNewRadioMeasInfo]):
+        """Sets the new_radio_meas_info of this MeasRepUeNotification.
+
+        5G New Radio secondary serving cells measurement information.  # noqa: E501
+
+        :param new_radio_meas_info: The new_radio_meas_info of this MeasRepUeNotification.
+        :type new_radio_meas_info: List[MeasRepUeNotificationNewRadioMeasInfo]
+        """
+
+        self._new_radio_meas_info = new_radio_meas_info
+
+    @property
+    def new_radio_meas_nei_info(self) -> List[MeasRepUeNotificationNewRadioMeasNeiInfo]:
+        """Gets the new_radio_meas_nei_info of this MeasRepUeNotification.
+
+        Measurement quantities concerning the 5G NR neighbours.  # noqa: E501
+
+        :return: The new_radio_meas_nei_info of this MeasRepUeNotification.
+        :rtype: List[MeasRepUeNotificationNewRadioMeasNeiInfo]
+        """
+        return self._new_radio_meas_nei_info
+
+    @new_radio_meas_nei_info.setter
+    def new_radio_meas_nei_info(self, new_radio_meas_nei_info: List[MeasRepUeNotificationNewRadioMeasNeiInfo]):
+        """Sets the new_radio_meas_nei_info of this MeasRepUeNotification.
+
+        Measurement quantities concerning the 5G NR neighbours.  # noqa: E501
+
+        :param new_radio_meas_nei_info: The new_radio_meas_nei_info of this MeasRepUeNotification.
+        :type new_radio_meas_nei_info: List[MeasRepUeNotificationNewRadioMeasNeiInfo]
+        """
+
+        self._new_radio_meas_nei_info = new_radio_meas_nei_info
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this MeasRepUeNotification.
+
+        Shall be set to \"MeasRepUeNotification\".  # noqa: E501
+
+        :return: The notification_type of this MeasRepUeNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this MeasRepUeNotification.
+
+        Shall be set to \"MeasRepUeNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this MeasRepUeNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def rsrp(self) -> int:
+        """Gets the rsrp of this MeasRepUeNotification.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._rsrp
+
+    @rsrp.setter
+    def rsrp(self, rsrp: int):
+        """Sets the rsrp of this MeasRepUeNotification.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp: The rsrp of this MeasRepUeNotification.
+        :type rsrp: int
+        """
+        if rsrp is None:
+            raise ValueError("Invalid value for `rsrp`, must not be `None`")  # noqa: E501
+
+        self._rsrp = rsrp
+
+    @property
+    def rsrp_ex(self) -> int:
+        """Gets the rsrp_ex of this MeasRepUeNotification.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrp_ex of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._rsrp_ex
+
+    @rsrp_ex.setter
+    def rsrp_ex(self, rsrp_ex: int):
+        """Sets the rsrp_ex of this MeasRepUeNotification.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrp_ex: The rsrp_ex of this MeasRepUeNotification.
+        :type rsrp_ex: int
+        """
+
+        self._rsrp_ex = rsrp_ex
+
+    @property
+    def rsrq(self) -> int:
+        """Gets the rsrq of this MeasRepUeNotification.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._rsrq
+
+    @rsrq.setter
+    def rsrq(self, rsrq: int):
+        """Sets the rsrq of this MeasRepUeNotification.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq: The rsrq of this MeasRepUeNotification.
+        :type rsrq: int
+        """
+        if rsrq is None:
+            raise ValueError("Invalid value for `rsrq`, must not be `None`")  # noqa: E501
+
+        self._rsrq = rsrq
+
+    @property
+    def rsrq_ex(self) -> int:
+        """Gets the rsrq_ex of this MeasRepUeNotification.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrq_ex of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._rsrq_ex
+
+    @rsrq_ex.setter
+    def rsrq_ex(self, rsrq_ex: int):
+        """Sets the rsrq_ex of this MeasRepUeNotification.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrq_ex: The rsrq_ex of this MeasRepUeNotification.
+        :type rsrq_ex: int
+        """
+
+        self._rsrq_ex = rsrq_ex
+
+    @property
+    def sinr(self) -> int:
+        """Gets the sinr of this MeasRepUeNotification.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The sinr of this MeasRepUeNotification.
+        :rtype: int
+        """
+        return self._sinr
+
+    @sinr.setter
+    def sinr(self, sinr: int):
+        """Sets the sinr of this MeasRepUeNotification.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param sinr: The sinr of this MeasRepUeNotification.
+        :type sinr: int
+        """
+
+        self._sinr = sinr
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this MeasRepUeNotification.
+
+
+        :return: The time_stamp of this MeasRepUeNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this MeasRepUeNotification.
+
+
+        :param time_stamp: The time_stamp of this MeasRepUeNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
+
+    @property
+    def trigger(self) -> Trigger:
+        """Gets the trigger of this MeasRepUeNotification.
+
+
+        :return: The trigger of this MeasRepUeNotification.
+        :rtype: Trigger
+        """
+        return self._trigger
+
+    @trigger.setter
+    def trigger(self, trigger: Trigger):
+        """Sets the trigger of this MeasRepUeNotification.
+
+
+        :param trigger: The trigger of this MeasRepUeNotification.
+        :type trigger: Trigger
+        """
+        if trigger is None:
+            raise ValueError("Invalid value for `trigger`, must not be `None`")  # noqa: E501
+
+        self._trigger = trigger
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_carrier_aggregation_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_carrier_aggregation_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb0b3684c078a976bff095d58f033358bcfe553e
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_carrier_aggregation_meas_info.py
@@ -0,0 +1,369 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.cell_id import CellId  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationCarrierAggregationMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, cell_id_nei: CellId=None, cell_id_srv: CellId=None, rsrp_nei: int=None, rsrp_nei_ex: int=None, rsrp_srv: int=None, rsrp_srv_ex: int=None, rsrq_nei: int=None, rsrq_nei_ex: int=None, rsrq_srv: int=None, rsrq_srv_ex: int=None, sinr_nei: int=None, sinr_srv: int=None):  # noqa: E501
+        """MeasRepUeNotificationCarrierAggregationMeasInfo - a model defined in Swagger
+
+        :param cell_id_nei: The cell_id_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type cell_id_nei: CellId
+        :param cell_id_srv: The cell_id_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type cell_id_srv: CellId
+        :param rsrp_nei: The rsrp_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_nei: int
+        :param rsrp_nei_ex: The rsrp_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_nei_ex: int
+        :param rsrp_srv: The rsrp_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_srv: int
+        :param rsrp_srv_ex: The rsrp_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrp_srv_ex: int
+        :param rsrq_nei: The rsrq_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_nei: int
+        :param rsrq_nei_ex: The rsrq_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_nei_ex: int
+        :param rsrq_srv: The rsrq_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_srv: int
+        :param rsrq_srv_ex: The rsrq_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type rsrq_srv_ex: int
+        :param sinr_nei: The sinr_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type sinr_nei: int
+        :param sinr_srv: The sinr_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :type sinr_srv: int
+        """
+        self.swagger_types = {
+            'cell_id_nei': CellId,
+            'cell_id_srv': CellId,
+            'rsrp_nei': int,
+            'rsrp_nei_ex': int,
+            'rsrp_srv': int,
+            'rsrp_srv_ex': int,
+            'rsrq_nei': int,
+            'rsrq_nei_ex': int,
+            'rsrq_srv': int,
+            'rsrq_srv_ex': int,
+            'sinr_nei': int,
+            'sinr_srv': int
+        }
+
+        self.attribute_map = {
+            'cell_id_nei': 'cellIdNei',
+            'cell_id_srv': 'cellIdSrv',
+            'rsrp_nei': 'rsrpNei',
+            'rsrp_nei_ex': 'rsrpNeiEx',
+            'rsrp_srv': 'rsrpSrv',
+            'rsrp_srv_ex': 'rsrpSrvEx',
+            'rsrq_nei': 'rsrqNei',
+            'rsrq_nei_ex': 'rsrqNeiEx',
+            'rsrq_srv': 'rsrqSrv',
+            'rsrq_srv_ex': 'rsrqSrvEx',
+            'sinr_nei': 'sinrNei',
+            'sinr_srv': 'sinrSrv'
+        }
+        self._cell_id_nei = cell_id_nei
+        self._cell_id_srv = cell_id_srv
+        self._rsrp_nei = rsrp_nei
+        self._rsrp_nei_ex = rsrp_nei_ex
+        self._rsrp_srv = rsrp_srv
+        self._rsrp_srv_ex = rsrp_srv_ex
+        self._rsrq_nei = rsrq_nei
+        self._rsrq_nei_ex = rsrq_nei_ex
+        self._rsrq_srv = rsrq_srv
+        self._rsrq_srv_ex = rsrq_srv_ex
+        self._sinr_nei = sinr_nei
+        self._sinr_srv = sinr_srv
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationCarrierAggregationMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_carrierAggregationMeasInfo of this MeasRepUeNotificationCarrierAggregationMeasInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationCarrierAggregationMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def cell_id_nei(self) -> CellId:
+        """Gets the cell_id_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+
+        :return: The cell_id_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: CellId
+        """
+        return self._cell_id_nei
+
+    @cell_id_nei.setter
+    def cell_id_nei(self, cell_id_nei: CellId):
+        """Sets the cell_id_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+
+        :param cell_id_nei: The cell_id_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type cell_id_nei: CellId
+        """
+
+        self._cell_id_nei = cell_id_nei
+
+    @property
+    def cell_id_srv(self) -> CellId:
+        """Gets the cell_id_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+
+        :return: The cell_id_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: CellId
+        """
+        return self._cell_id_srv
+
+    @cell_id_srv.setter
+    def cell_id_srv(self, cell_id_srv: CellId):
+        """Sets the cell_id_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+
+        :param cell_id_srv: The cell_id_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type cell_id_srv: CellId
+        """
+
+        self._cell_id_srv = cell_id_srv
+
+    @property
+    def rsrp_nei(self) -> int:
+        """Gets the rsrp_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_nei
+
+    @rsrp_nei.setter
+    def rsrp_nei(self, rsrp_nei: int):
+        """Sets the rsrp_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp_nei: The rsrp_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrp_nei: int
+        """
+
+        self._rsrp_nei = rsrp_nei
+
+    @property
+    def rsrp_nei_ex(self) -> int:
+        """Gets the rsrp_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrp_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_nei_ex
+
+    @rsrp_nei_ex.setter
+    def rsrp_nei_ex(self, rsrp_nei_ex: int):
+        """Sets the rsrp_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrp_nei_ex: The rsrp_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrp_nei_ex: int
+        """
+
+        self._rsrp_nei_ex = rsrp_nei_ex
+
+    @property
+    def rsrp_srv(self) -> int:
+        """Gets the rsrp_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_srv
+
+    @rsrp_srv.setter
+    def rsrp_srv(self, rsrp_srv: int):
+        """Sets the rsrp_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp_srv: The rsrp_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrp_srv: int
+        """
+
+        self._rsrp_srv = rsrp_srv
+
+    @property
+    def rsrp_srv_ex(self) -> int:
+        """Gets the rsrp_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrp_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_srv_ex
+
+    @rsrp_srv_ex.setter
+    def rsrp_srv_ex(self, rsrp_srv_ex: int):
+        """Sets the rsrp_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrp_srv_ex: The rsrp_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrp_srv_ex: int
+        """
+
+        self._rsrp_srv_ex = rsrp_srv_ex
+
+    @property
+    def rsrq_nei(self) -> int:
+        """Gets the rsrq_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_nei
+
+    @rsrq_nei.setter
+    def rsrq_nei(self, rsrq_nei: int):
+        """Sets the rsrq_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq_nei: The rsrq_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrq_nei: int
+        """
+
+        self._rsrq_nei = rsrq_nei
+
+    @property
+    def rsrq_nei_ex(self) -> int:
+        """Gets the rsrq_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrq_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_nei_ex
+
+    @rsrq_nei_ex.setter
+    def rsrq_nei_ex(self, rsrq_nei_ex: int):
+        """Sets the rsrq_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrq_nei_ex: The rsrq_nei_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrq_nei_ex: int
+        """
+
+        self._rsrq_nei_ex = rsrq_nei_ex
+
+    @property
+    def rsrq_srv(self) -> int:
+        """Gets the rsrq_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_srv
+
+    @rsrq_srv.setter
+    def rsrq_srv(self, rsrq_srv: int):
+        """Sets the rsrq_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq_srv: The rsrq_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrq_srv: int
+        """
+
+        self._rsrq_srv = rsrq_srv
+
+    @property
+    def rsrq_srv_ex(self) -> int:
+        """Gets the rsrq_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrq_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_srv_ex
+
+    @rsrq_srv_ex.setter
+    def rsrq_srv_ex(self, rsrq_srv_ex: int):
+        """Sets the rsrq_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrq_srv_ex: The rsrq_srv_ex of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type rsrq_srv_ex: int
+        """
+
+        self._rsrq_srv_ex = rsrq_srv_ex
+
+    @property
+    def sinr_nei(self) -> int:
+        """Gets the sinr_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The sinr_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._sinr_nei
+
+    @sinr_nei.setter
+    def sinr_nei(self, sinr_nei: int):
+        """Sets the sinr_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param sinr_nei: The sinr_nei of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type sinr_nei: int
+        """
+
+        self._sinr_nei = sinr_nei
+
+    @property
+    def sinr_srv(self) -> int:
+        """Gets the sinr_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The sinr_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :rtype: int
+        """
+        return self._sinr_srv
+
+    @sinr_srv.setter
+    def sinr_srv(self, sinr_srv: int):
+        """Sets the sinr_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param sinr_srv: The sinr_srv of this MeasRepUeNotificationCarrierAggregationMeasInfo.
+        :type sinr_srv: int
+        """
+
+        self._sinr_srv = sinr_srv
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_eutran_neighbour_cell_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_eutran_neighbour_cell_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..68b764cf5e08f1cd1e50e2b8ddeb9f90ac928c61
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_eutran_neighbour_cell_meas_info.py
@@ -0,0 +1,203 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationEutranNeighbourCellMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ecgi: Ecgi=None, rsrp: int=None, rsrp_ex: int=None, rsrq: int=None, rsrq_ex: int=None, sinr: int=None):  # noqa: E501
+        """MeasRepUeNotificationEutranNeighbourCellMeasInfo - a model defined in Swagger
+
+        :param ecgi: The ecgi of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type ecgi: Ecgi
+        :param rsrp: The rsrp of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type rsrp: int
+        :param rsrp_ex: The rsrp_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type rsrp_ex: int
+        :param rsrq: The rsrq of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type rsrq: int
+        :param rsrq_ex: The rsrq_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type rsrq_ex: int
+        :param sinr: The sinr of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :type sinr: int
+        """
+        self.swagger_types = {
+            'ecgi': Ecgi,
+            'rsrp': int,
+            'rsrp_ex': int,
+            'rsrq': int,
+            'rsrq_ex': int,
+            'sinr': int
+        }
+
+        self.attribute_map = {
+            'ecgi': 'ecgi',
+            'rsrp': 'rsrp',
+            'rsrp_ex': 'rsrpEx',
+            'rsrq': 'rsrq',
+            'rsrq_ex': 'rsrqEx',
+            'sinr': 'sinr'
+        }
+        self._ecgi = ecgi
+        self._rsrp = rsrp
+        self._rsrp_ex = rsrp_ex
+        self._rsrq = rsrq
+        self._rsrq_ex = rsrq_ex
+        self._sinr = sinr
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationEutranNeighbourCellMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_eutranNeighbourCellMeasInfo of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationEutranNeighbourCellMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+
+        :return: The ecgi of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+
+        :param ecgi: The ecgi of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def rsrp(self) -> int:
+        """Gets the rsrp of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrp of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp
+
+    @rsrp.setter
+    def rsrp(self, rsrp: int):
+        """Sets the rsrp of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrp: The rsrp of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type rsrp: int
+        """
+
+        self._rsrp = rsrp
+
+    @property
+    def rsrp_ex(self) -> int:
+        """Gets the rsrp_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrp_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp_ex
+
+    @rsrp_ex.setter
+    def rsrp_ex(self, rsrp_ex: int):
+        """Sets the rsrp_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrp_ex: The rsrp_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type rsrp_ex: int
+        """
+
+        self._rsrp_ex = rsrp_ex
+
+    @property
+    def rsrq(self) -> int:
+        """Gets the rsrq of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The rsrq of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq
+
+    @rsrq.setter
+    def rsrq(self, rsrq: int):
+        """Sets the rsrq of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param rsrq: The rsrq of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type rsrq: int
+        """
+
+        self._rsrq = rsrq
+
+    @property
+    def rsrq_ex(self) -> int:
+        """Gets the rsrq_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The rsrq_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq_ex
+
+    @rsrq_ex.setter
+    def rsrq_ex(self, rsrq_ex: int):
+        """Sets the rsrq_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param rsrq_ex: The rsrq_ex of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type rsrq_ex: int
+        """
+
+        self._rsrq_ex = rsrq_ex
+
+    @property
+    def sinr(self) -> int:
+        """Gets the sinr of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :return: The sinr of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :rtype: int
+        """
+        return self._sinr
+
+    @sinr.setter
+    def sinr(self, sinr: int):
+        """Sets the sinr of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+
+        Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].  # noqa: E501
+
+        :param sinr: The sinr of this MeasRepUeNotificationEutranNeighbourCellMeasInfo.
+        :type sinr: int
+        """
+
+        self._sinr = sinr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..c623848a7ed7c77fcde2f1ed118000ab9fa3f237
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_info.py
@@ -0,0 +1,118 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_rep_ue_notification_nr_bncs import MeasRepUeNotificationNrBNCs  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_notification_nr_scs import MeasRepUeNotificationNrSCs  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNewRadioMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_bncs: MeasRepUeNotificationNrBNCs=None, nr_carrier_freq: int=None, nr_scs: MeasRepUeNotificationNrSCs=None):  # noqa: E501
+        """MeasRepUeNotificationNewRadioMeasInfo - a model defined in Swagger
+
+        :param nr_bncs: The nr_bncs of this MeasRepUeNotificationNewRadioMeasInfo.  # noqa: E501
+        :type nr_bncs: MeasRepUeNotificationNrBNCs
+        :param nr_carrier_freq: The nr_carrier_freq of this MeasRepUeNotificationNewRadioMeasInfo.  # noqa: E501
+        :type nr_carrier_freq: int
+        :param nr_scs: The nr_scs of this MeasRepUeNotificationNewRadioMeasInfo.  # noqa: E501
+        :type nr_scs: MeasRepUeNotificationNrSCs
+        """
+        self.swagger_types = {
+            'nr_bncs': MeasRepUeNotificationNrBNCs,
+            'nr_carrier_freq': int,
+            'nr_scs': MeasRepUeNotificationNrSCs
+        }
+
+        self.attribute_map = {
+            'nr_bncs': 'nrBNCs',
+            'nr_carrier_freq': 'nrCarrierFreq',
+            'nr_scs': 'nrSCs'
+        }
+        self._nr_bncs = nr_bncs
+        self._nr_carrier_freq = nr_carrier_freq
+        self._nr_scs = nr_scs
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNewRadioMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_newRadioMeasInfo of this MeasRepUeNotificationNewRadioMeasInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationNewRadioMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_bncs(self) -> MeasRepUeNotificationNrBNCs:
+        """Gets the nr_bncs of this MeasRepUeNotificationNewRadioMeasInfo.
+
+
+        :return: The nr_bncs of this MeasRepUeNotificationNewRadioMeasInfo.
+        :rtype: MeasRepUeNotificationNrBNCs
+        """
+        return self._nr_bncs
+
+    @nr_bncs.setter
+    def nr_bncs(self, nr_bncs: MeasRepUeNotificationNrBNCs):
+        """Sets the nr_bncs of this MeasRepUeNotificationNewRadioMeasInfo.
+
+
+        :param nr_bncs: The nr_bncs of this MeasRepUeNotificationNewRadioMeasInfo.
+        :type nr_bncs: MeasRepUeNotificationNrBNCs
+        """
+
+        self._nr_bncs = nr_bncs
+
+    @property
+    def nr_carrier_freq(self) -> int:
+        """Gets the nr_carrier_freq of this MeasRepUeNotificationNewRadioMeasInfo.
+
+        ARFCN applicable for a downlink, uplink or bi-directional (TDD) NR carrier frequency, as defined in ETSI TS 138.101 [i.15].  # noqa: E501
+
+        :return: The nr_carrier_freq of this MeasRepUeNotificationNewRadioMeasInfo.
+        :rtype: int
+        """
+        return self._nr_carrier_freq
+
+    @nr_carrier_freq.setter
+    def nr_carrier_freq(self, nr_carrier_freq: int):
+        """Sets the nr_carrier_freq of this MeasRepUeNotificationNewRadioMeasInfo.
+
+        ARFCN applicable for a downlink, uplink or bi-directional (TDD) NR carrier frequency, as defined in ETSI TS 138.101 [i.15].  # noqa: E501
+
+        :param nr_carrier_freq: The nr_carrier_freq of this MeasRepUeNotificationNewRadioMeasInfo.
+        :type nr_carrier_freq: int
+        """
+
+        self._nr_carrier_freq = nr_carrier_freq
+
+    @property
+    def nr_scs(self) -> MeasRepUeNotificationNrSCs:
+        """Gets the nr_scs of this MeasRepUeNotificationNewRadioMeasInfo.
+
+
+        :return: The nr_scs of this MeasRepUeNotificationNewRadioMeasInfo.
+        :rtype: MeasRepUeNotificationNrSCs
+        """
+        return self._nr_scs
+
+    @nr_scs.setter
+    def nr_scs(self, nr_scs: MeasRepUeNotificationNrSCs):
+        """Sets the nr_scs of this MeasRepUeNotificationNewRadioMeasInfo.
+
+
+        :param nr_scs: The nr_scs of this MeasRepUeNotificationNewRadioMeasInfo.
+        :type nr_scs: MeasRepUeNotificationNrSCs
+        """
+
+        self._nr_scs = nr_scs
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_nei_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_nei_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..0bb76376e3ea5e3a98f5100e2395a34512b219d6
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_new_radio_meas_nei_info.py
@@ -0,0 +1,176 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_rep_ue_notification_nr_n_cell_info import MeasRepUeNotificationNrNCellInfo  # noqa: F401,E501
+from swagger_server.models.rs_index_results import RsIndexResults  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNewRadioMeasNeiInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_n_cell_info: List[MeasRepUeNotificationNrNCellInfo]=None, nr_n_cell_rsrp: int=None, nr_n_cell_rsrq: int=None, nr_n_cell_rssi: int=None, rs_index_results: RsIndexResults=None):  # noqa: E501
+        """MeasRepUeNotificationNewRadioMeasNeiInfo - a model defined in Swagger
+
+        :param nr_n_cell_info: The nr_n_cell_info of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :type nr_n_cell_info: List[MeasRepUeNotificationNrNCellInfo]
+        :param nr_n_cell_rsrp: The nr_n_cell_rsrp of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :type nr_n_cell_rsrp: int
+        :param nr_n_cell_rsrq: The nr_n_cell_rsrq of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :type nr_n_cell_rsrq: int
+        :param nr_n_cell_rssi: The nr_n_cell_rssi of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :type nr_n_cell_rssi: int
+        :param rs_index_results: The rs_index_results of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :type rs_index_results: RsIndexResults
+        """
+        self.swagger_types = {
+            'nr_n_cell_info': List[MeasRepUeNotificationNrNCellInfo],
+            'nr_n_cell_rsrp': int,
+            'nr_n_cell_rsrq': int,
+            'nr_n_cell_rssi': int,
+            'rs_index_results': RsIndexResults
+        }
+
+        self.attribute_map = {
+            'nr_n_cell_info': 'nrNCellInfo',
+            'nr_n_cell_rsrp': 'nrNCellRsrp',
+            'nr_n_cell_rsrq': 'nrNCellRsrq',
+            'nr_n_cell_rssi': 'nrNCellRssi',
+            'rs_index_results': 'rsIndexResults'
+        }
+        self._nr_n_cell_info = nr_n_cell_info
+        self._nr_n_cell_rsrp = nr_n_cell_rsrp
+        self._nr_n_cell_rsrq = nr_n_cell_rsrq
+        self._nr_n_cell_rssi = nr_n_cell_rssi
+        self._rs_index_results = rs_index_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNewRadioMeasNeiInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_newRadioMeasNeiInfo of this MeasRepUeNotificationNewRadioMeasNeiInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationNewRadioMeasNeiInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_n_cell_info(self) -> List[MeasRepUeNotificationNrNCellInfo]:
+        """Gets the nr_n_cell_info of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        5G NR neighbour cell info.  # noqa: E501
+
+        :return: The nr_n_cell_info of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :rtype: List[MeasRepUeNotificationNrNCellInfo]
+        """
+        return self._nr_n_cell_info
+
+    @nr_n_cell_info.setter
+    def nr_n_cell_info(self, nr_n_cell_info: List[MeasRepUeNotificationNrNCellInfo]):
+        """Sets the nr_n_cell_info of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        5G NR neighbour cell info.  # noqa: E501
+
+        :param nr_n_cell_info: The nr_n_cell_info of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :type nr_n_cell_info: List[MeasRepUeNotificationNrNCellInfo]
+        """
+
+        self._nr_n_cell_info = nr_n_cell_info
+
+    @property
+    def nr_n_cell_rsrp(self) -> int:
+        """Gets the nr_n_cell_rsrp of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_n_cell_rsrp of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :rtype: int
+        """
+        return self._nr_n_cell_rsrp
+
+    @nr_n_cell_rsrp.setter
+    def nr_n_cell_rsrp(self, nr_n_cell_rsrp: int):
+        """Sets the nr_n_cell_rsrp of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_n_cell_rsrp: The nr_n_cell_rsrp of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :type nr_n_cell_rsrp: int
+        """
+
+        self._nr_n_cell_rsrp = nr_n_cell_rsrp
+
+    @property
+    def nr_n_cell_rsrq(self) -> int:
+        """Gets the nr_n_cell_rsrq of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_n_cell_rsrq of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :rtype: int
+        """
+        return self._nr_n_cell_rsrq
+
+    @nr_n_cell_rsrq.setter
+    def nr_n_cell_rsrq(self, nr_n_cell_rsrq: int):
+        """Sets the nr_n_cell_rsrq of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_n_cell_rsrq: The nr_n_cell_rsrq of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :type nr_n_cell_rsrq: int
+        """
+
+        self._nr_n_cell_rsrq = nr_n_cell_rsrq
+
+    @property
+    def nr_n_cell_rssi(self) -> int:
+        """Gets the nr_n_cell_rssi of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_n_cell_rssi of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :rtype: int
+        """
+        return self._nr_n_cell_rssi
+
+    @nr_n_cell_rssi.setter
+    def nr_n_cell_rssi(self, nr_n_cell_rssi: int):
+        """Sets the nr_n_cell_rssi of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_n_cell_rssi: The nr_n_cell_rssi of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :type nr_n_cell_rssi: int
+        """
+
+        self._nr_n_cell_rssi = nr_n_cell_rssi
+
+    @property
+    def rs_index_results(self) -> RsIndexResults:
+        """Gets the rs_index_results of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+
+        :return: The rs_index_results of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :rtype: RsIndexResults
+        """
+        return self._rs_index_results
+
+    @rs_index_results.setter
+    def rs_index_results(self, rs_index_results: RsIndexResults):
+        """Sets the rs_index_results of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+
+
+        :param rs_index_results: The rs_index_results of this MeasRepUeNotificationNewRadioMeasNeiInfo.
+        :type rs_index_results: RsIndexResults
+        """
+
+        self._rs_index_results = rs_index_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs.py
new file mode 100644
index 0000000000000000000000000000000000000000..e9d65140a9dcf7e7dc2f13a727fa64a094b11360
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs.py
@@ -0,0 +1,151 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_rep_ue_notification_nr_bncs_nr_bn_cell_info import MeasRepUeNotificationNrBNCsNrBNCellInfo  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNrBNCs(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_bn_cell_info: List[MeasRepUeNotificationNrBNCsNrBNCellInfo]=None, nr_bn_cell_rsrp: int=None, nr_bn_cell_rsrq: int=None, nr_bn_cell_rssi: int=None):  # noqa: E501
+        """MeasRepUeNotificationNrBNCs - a model defined in Swagger
+
+        :param nr_bn_cell_info: The nr_bn_cell_info of this MeasRepUeNotificationNrBNCs.  # noqa: E501
+        :type nr_bn_cell_info: List[MeasRepUeNotificationNrBNCsNrBNCellInfo]
+        :param nr_bn_cell_rsrp: The nr_bn_cell_rsrp of this MeasRepUeNotificationNrBNCs.  # noqa: E501
+        :type nr_bn_cell_rsrp: int
+        :param nr_bn_cell_rsrq: The nr_bn_cell_rsrq of this MeasRepUeNotificationNrBNCs.  # noqa: E501
+        :type nr_bn_cell_rsrq: int
+        :param nr_bn_cell_rssi: The nr_bn_cell_rssi of this MeasRepUeNotificationNrBNCs.  # noqa: E501
+        :type nr_bn_cell_rssi: int
+        """
+        self.swagger_types = {
+            'nr_bn_cell_info': List[MeasRepUeNotificationNrBNCsNrBNCellInfo],
+            'nr_bn_cell_rsrp': int,
+            'nr_bn_cell_rsrq': int,
+            'nr_bn_cell_rssi': int
+        }
+
+        self.attribute_map = {
+            'nr_bn_cell_info': 'nrBNCellInfo',
+            'nr_bn_cell_rsrp': 'nrBNCellRsrp',
+            'nr_bn_cell_rsrq': 'nrBNCellRsrq',
+            'nr_bn_cell_rssi': 'nrBNCellRssi'
+        }
+        self._nr_bn_cell_info = nr_bn_cell_info
+        self._nr_bn_cell_rsrp = nr_bn_cell_rsrp
+        self._nr_bn_cell_rsrq = nr_bn_cell_rsrq
+        self._nr_bn_cell_rssi = nr_bn_cell_rssi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNrBNCs':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_nrBNCs of this MeasRepUeNotificationNrBNCs.  # noqa: E501
+        :rtype: MeasRepUeNotificationNrBNCs
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_bn_cell_info(self) -> List[MeasRepUeNotificationNrBNCsNrBNCellInfo]:
+        """Gets the nr_bn_cell_info of this MeasRepUeNotificationNrBNCs.
+
+        Best neighbours of the secondary serving cell(s) info  # noqa: E501
+
+        :return: The nr_bn_cell_info of this MeasRepUeNotificationNrBNCs.
+        :rtype: List[MeasRepUeNotificationNrBNCsNrBNCellInfo]
+        """
+        return self._nr_bn_cell_info
+
+    @nr_bn_cell_info.setter
+    def nr_bn_cell_info(self, nr_bn_cell_info: List[MeasRepUeNotificationNrBNCsNrBNCellInfo]):
+        """Sets the nr_bn_cell_info of this MeasRepUeNotificationNrBNCs.
+
+        Best neighbours of the secondary serving cell(s) info  # noqa: E501
+
+        :param nr_bn_cell_info: The nr_bn_cell_info of this MeasRepUeNotificationNrBNCs.
+        :type nr_bn_cell_info: List[MeasRepUeNotificationNrBNCsNrBNCellInfo]
+        """
+        if nr_bn_cell_info is None:
+            raise ValueError("Invalid value for `nr_bn_cell_info`, must not be `None`")  # noqa: E501
+
+        self._nr_bn_cell_info = nr_bn_cell_info
+
+    @property
+    def nr_bn_cell_rsrp(self) -> int:
+        """Gets the nr_bn_cell_rsrp of this MeasRepUeNotificationNrBNCs.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_bn_cell_rsrp of this MeasRepUeNotificationNrBNCs.
+        :rtype: int
+        """
+        return self._nr_bn_cell_rsrp
+
+    @nr_bn_cell_rsrp.setter
+    def nr_bn_cell_rsrp(self, nr_bn_cell_rsrp: int):
+        """Sets the nr_bn_cell_rsrp of this MeasRepUeNotificationNrBNCs.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_bn_cell_rsrp: The nr_bn_cell_rsrp of this MeasRepUeNotificationNrBNCs.
+        :type nr_bn_cell_rsrp: int
+        """
+
+        self._nr_bn_cell_rsrp = nr_bn_cell_rsrp
+
+    @property
+    def nr_bn_cell_rsrq(self) -> int:
+        """Gets the nr_bn_cell_rsrq of this MeasRepUeNotificationNrBNCs.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_bn_cell_rsrq of this MeasRepUeNotificationNrBNCs.
+        :rtype: int
+        """
+        return self._nr_bn_cell_rsrq
+
+    @nr_bn_cell_rsrq.setter
+    def nr_bn_cell_rsrq(self, nr_bn_cell_rsrq: int):
+        """Sets the nr_bn_cell_rsrq of this MeasRepUeNotificationNrBNCs.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_bn_cell_rsrq: The nr_bn_cell_rsrq of this MeasRepUeNotificationNrBNCs.
+        :type nr_bn_cell_rsrq: int
+        """
+
+        self._nr_bn_cell_rsrq = nr_bn_cell_rsrq
+
+    @property
+    def nr_bn_cell_rssi(self) -> int:
+        """Gets the nr_bn_cell_rssi of this MeasRepUeNotificationNrBNCs.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_bn_cell_rssi of this MeasRepUeNotificationNrBNCs.
+        :rtype: int
+        """
+        return self._nr_bn_cell_rssi
+
+    @nr_bn_cell_rssi.setter
+    def nr_bn_cell_rssi(self, nr_bn_cell_rssi: int):
+        """Sets the nr_bn_cell_rssi of this MeasRepUeNotificationNrBNCs.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_bn_cell_rssi: The nr_bn_cell_rssi of this MeasRepUeNotificationNrBNCs.
+        :type nr_bn_cell_rssi: int
+        """
+
+        self._nr_bn_cell_rssi = nr_bn_cell_rssi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs_nr_bn_cell_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs_nr_bn_cell_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..a654bc67ba0b36bced48e35b468471a57ff7670b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_bncs_nr_bn_cell_info.py
@@ -0,0 +1,92 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.nr_cell_id import NrCellId  # noqa: F401,E501
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNrBNCsNrBNCellInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_bn_cell_gid: NrCellId=None, nr_bn_cell_plmn: List[Plmn]=None):  # noqa: E501
+        """MeasRepUeNotificationNrBNCsNrBNCellInfo - a model defined in Swagger
+
+        :param nr_bn_cell_gid: The nr_bn_cell_gid of this MeasRepUeNotificationNrBNCsNrBNCellInfo.  # noqa: E501
+        :type nr_bn_cell_gid: NrCellId
+        :param nr_bn_cell_plmn: The nr_bn_cell_plmn of this MeasRepUeNotificationNrBNCsNrBNCellInfo.  # noqa: E501
+        :type nr_bn_cell_plmn: List[Plmn]
+        """
+        self.swagger_types = {
+            'nr_bn_cell_gid': NrCellId,
+            'nr_bn_cell_plmn': List[Plmn]
+        }
+
+        self.attribute_map = {
+            'nr_bn_cell_gid': 'nrBNCellGId',
+            'nr_bn_cell_plmn': 'nrBNCellPlmn'
+        }
+        self._nr_bn_cell_gid = nr_bn_cell_gid
+        self._nr_bn_cell_plmn = nr_bn_cell_plmn
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNrBNCsNrBNCellInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_nrBNCs_nrBNCellInfo of this MeasRepUeNotificationNrBNCsNrBNCellInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationNrBNCsNrBNCellInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_bn_cell_gid(self) -> NrCellId:
+        """Gets the nr_bn_cell_gid of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+
+
+        :return: The nr_bn_cell_gid of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+        :rtype: NrCellId
+        """
+        return self._nr_bn_cell_gid
+
+    @nr_bn_cell_gid.setter
+    def nr_bn_cell_gid(self, nr_bn_cell_gid: NrCellId):
+        """Sets the nr_bn_cell_gid of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+
+
+        :param nr_bn_cell_gid: The nr_bn_cell_gid of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+        :type nr_bn_cell_gid: NrCellId
+        """
+
+        self._nr_bn_cell_gid = nr_bn_cell_gid
+
+    @property
+    def nr_bn_cell_plmn(self) -> List[Plmn]:
+        """Gets the nr_bn_cell_plmn of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+
+        Public land mobile network identities  # noqa: E501
+
+        :return: The nr_bn_cell_plmn of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+        :rtype: List[Plmn]
+        """
+        return self._nr_bn_cell_plmn
+
+    @nr_bn_cell_plmn.setter
+    def nr_bn_cell_plmn(self, nr_bn_cell_plmn: List[Plmn]):
+        """Sets the nr_bn_cell_plmn of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+
+        Public land mobile network identities  # noqa: E501
+
+        :param nr_bn_cell_plmn: The nr_bn_cell_plmn of this MeasRepUeNotificationNrBNCsNrBNCellInfo.
+        :type nr_bn_cell_plmn: List[Plmn]
+        """
+
+        self._nr_bn_cell_plmn = nr_bn_cell_plmn
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_n_cell_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_n_cell_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..e210c312f460166144a98b86f11a96bf37e3468e
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_n_cell_info.py
@@ -0,0 +1,92 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.nr_cell_id import NrCellId  # noqa: F401,E501
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNrNCellInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_n_cell_gid: NrCellId=None, nr_n_cell_plmn: List[Plmn]=None):  # noqa: E501
+        """MeasRepUeNotificationNrNCellInfo - a model defined in Swagger
+
+        :param nr_n_cell_gid: The nr_n_cell_gid of this MeasRepUeNotificationNrNCellInfo.  # noqa: E501
+        :type nr_n_cell_gid: NrCellId
+        :param nr_n_cell_plmn: The nr_n_cell_plmn of this MeasRepUeNotificationNrNCellInfo.  # noqa: E501
+        :type nr_n_cell_plmn: List[Plmn]
+        """
+        self.swagger_types = {
+            'nr_n_cell_gid': NrCellId,
+            'nr_n_cell_plmn': List[Plmn]
+        }
+
+        self.attribute_map = {
+            'nr_n_cell_gid': 'nrNCellGId',
+            'nr_n_cell_plmn': 'nrNCellPlmn'
+        }
+        self._nr_n_cell_gid = nr_n_cell_gid
+        self._nr_n_cell_plmn = nr_n_cell_plmn
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNrNCellInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_nrNCellInfo of this MeasRepUeNotificationNrNCellInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationNrNCellInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_n_cell_gid(self) -> NrCellId:
+        """Gets the nr_n_cell_gid of this MeasRepUeNotificationNrNCellInfo.
+
+
+        :return: The nr_n_cell_gid of this MeasRepUeNotificationNrNCellInfo.
+        :rtype: NrCellId
+        """
+        return self._nr_n_cell_gid
+
+    @nr_n_cell_gid.setter
+    def nr_n_cell_gid(self, nr_n_cell_gid: NrCellId):
+        """Sets the nr_n_cell_gid of this MeasRepUeNotificationNrNCellInfo.
+
+
+        :param nr_n_cell_gid: The nr_n_cell_gid of this MeasRepUeNotificationNrNCellInfo.
+        :type nr_n_cell_gid: NrCellId
+        """
+
+        self._nr_n_cell_gid = nr_n_cell_gid
+
+    @property
+    def nr_n_cell_plmn(self) -> List[Plmn]:
+        """Gets the nr_n_cell_plmn of this MeasRepUeNotificationNrNCellInfo.
+
+        Public land mobile network identities.  # noqa: E501
+
+        :return: The nr_n_cell_plmn of this MeasRepUeNotificationNrNCellInfo.
+        :rtype: List[Plmn]
+        """
+        return self._nr_n_cell_plmn
+
+    @nr_n_cell_plmn.setter
+    def nr_n_cell_plmn(self, nr_n_cell_plmn: List[Plmn]):
+        """Sets the nr_n_cell_plmn of this MeasRepUeNotificationNrNCellInfo.
+
+        Public land mobile network identities.  # noqa: E501
+
+        :param nr_n_cell_plmn: The nr_n_cell_plmn of this MeasRepUeNotificationNrNCellInfo.
+        :type nr_n_cell_plmn: List[Plmn]
+        """
+
+        self._nr_n_cell_plmn = nr_n_cell_plmn
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4877e8b6090bcad86d4b489e002b90d30b18536
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs.py
@@ -0,0 +1,151 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_rep_ue_notification_nr_scs_nr_s_cell_info import MeasRepUeNotificationNrSCsNrSCellInfo  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNrSCs(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_s_cell_info: List[MeasRepUeNotificationNrSCsNrSCellInfo]=None, nr_s_cell_rsrp: int=None, nr_s_cell_rsrq: int=None, nr_s_cell_rssi: int=None):  # noqa: E501
+        """MeasRepUeNotificationNrSCs - a model defined in Swagger
+
+        :param nr_s_cell_info: The nr_s_cell_info of this MeasRepUeNotificationNrSCs.  # noqa: E501
+        :type nr_s_cell_info: List[MeasRepUeNotificationNrSCsNrSCellInfo]
+        :param nr_s_cell_rsrp: The nr_s_cell_rsrp of this MeasRepUeNotificationNrSCs.  # noqa: E501
+        :type nr_s_cell_rsrp: int
+        :param nr_s_cell_rsrq: The nr_s_cell_rsrq of this MeasRepUeNotificationNrSCs.  # noqa: E501
+        :type nr_s_cell_rsrq: int
+        :param nr_s_cell_rssi: The nr_s_cell_rssi of this MeasRepUeNotificationNrSCs.  # noqa: E501
+        :type nr_s_cell_rssi: int
+        """
+        self.swagger_types = {
+            'nr_s_cell_info': List[MeasRepUeNotificationNrSCsNrSCellInfo],
+            'nr_s_cell_rsrp': int,
+            'nr_s_cell_rsrq': int,
+            'nr_s_cell_rssi': int
+        }
+
+        self.attribute_map = {
+            'nr_s_cell_info': 'nrSCellInfo',
+            'nr_s_cell_rsrp': 'nrSCellRsrp',
+            'nr_s_cell_rsrq': 'nrSCellRsrq',
+            'nr_s_cell_rssi': 'nrSCellRssi'
+        }
+        self._nr_s_cell_info = nr_s_cell_info
+        self._nr_s_cell_rsrp = nr_s_cell_rsrp
+        self._nr_s_cell_rsrq = nr_s_cell_rsrq
+        self._nr_s_cell_rssi = nr_s_cell_rssi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNrSCs':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_nrSCs of this MeasRepUeNotificationNrSCs.  # noqa: E501
+        :rtype: MeasRepUeNotificationNrSCs
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_s_cell_info(self) -> List[MeasRepUeNotificationNrSCsNrSCellInfo]:
+        """Gets the nr_s_cell_info of this MeasRepUeNotificationNrSCs.
+
+        Secondary serving cell(s) info.  # noqa: E501
+
+        :return: The nr_s_cell_info of this MeasRepUeNotificationNrSCs.
+        :rtype: List[MeasRepUeNotificationNrSCsNrSCellInfo]
+        """
+        return self._nr_s_cell_info
+
+    @nr_s_cell_info.setter
+    def nr_s_cell_info(self, nr_s_cell_info: List[MeasRepUeNotificationNrSCsNrSCellInfo]):
+        """Sets the nr_s_cell_info of this MeasRepUeNotificationNrSCs.
+
+        Secondary serving cell(s) info.  # noqa: E501
+
+        :param nr_s_cell_info: The nr_s_cell_info of this MeasRepUeNotificationNrSCs.
+        :type nr_s_cell_info: List[MeasRepUeNotificationNrSCsNrSCellInfo]
+        """
+        if nr_s_cell_info is None:
+            raise ValueError("Invalid value for `nr_s_cell_info`, must not be `None`")  # noqa: E501
+
+        self._nr_s_cell_info = nr_s_cell_info
+
+    @property
+    def nr_s_cell_rsrp(self) -> int:
+        """Gets the nr_s_cell_rsrp of this MeasRepUeNotificationNrSCs.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_s_cell_rsrp of this MeasRepUeNotificationNrSCs.
+        :rtype: int
+        """
+        return self._nr_s_cell_rsrp
+
+    @nr_s_cell_rsrp.setter
+    def nr_s_cell_rsrp(self, nr_s_cell_rsrp: int):
+        """Sets the nr_s_cell_rsrp of this MeasRepUeNotificationNrSCs.
+
+        Reference Signal Received Power measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_s_cell_rsrp: The nr_s_cell_rsrp of this MeasRepUeNotificationNrSCs.
+        :type nr_s_cell_rsrp: int
+        """
+
+        self._nr_s_cell_rsrp = nr_s_cell_rsrp
+
+    @property
+    def nr_s_cell_rsrq(self) -> int:
+        """Gets the nr_s_cell_rsrq of this MeasRepUeNotificationNrSCs.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_s_cell_rsrq of this MeasRepUeNotificationNrSCs.
+        :rtype: int
+        """
+        return self._nr_s_cell_rsrq
+
+    @nr_s_cell_rsrq.setter
+    def nr_s_cell_rsrq(self, nr_s_cell_rsrq: int):
+        """Sets the nr_s_cell_rsrq of this MeasRepUeNotificationNrSCs.
+
+        Reference Signal Received Quality measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_s_cell_rsrq: The nr_s_cell_rsrq of this MeasRepUeNotificationNrSCs.
+        :type nr_s_cell_rsrq: int
+        """
+
+        self._nr_s_cell_rsrq = nr_s_cell_rsrq
+
+    @property
+    def nr_s_cell_rssi(self) -> int:
+        """Gets the nr_s_cell_rssi of this MeasRepUeNotificationNrSCs.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :return: The nr_s_cell_rssi of this MeasRepUeNotificationNrSCs.
+        :rtype: int
+        """
+        return self._nr_s_cell_rssi
+
+    @nr_s_cell_rssi.setter
+    def nr_s_cell_rssi(self, nr_s_cell_rssi: int):
+        """Sets the nr_s_cell_rssi of this MeasRepUeNotificationNrSCs.
+
+        Reference signal SINR measurement according to mapping table in ETSI TS 138.133 [i.14].  # noqa: E501
+
+        :param nr_s_cell_rssi: The nr_s_cell_rssi of this MeasRepUeNotificationNrSCs.
+        :type nr_s_cell_rssi: int
+        """
+
+        self._nr_s_cell_rssi = nr_s_cell_rssi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs_nr_s_cell_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs_nr_s_cell_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..6dd572db45409de264dcdadfff8fd4788accf827
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_notification_nr_scs_nr_s_cell_info.py
@@ -0,0 +1,92 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.nr_cell_id import NrCellId  # noqa: F401,E501
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeNotificationNrSCsNrSCellInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nr_s_cell_gid: NrCellId=None, nr_s_cell_plmn: List[Plmn]=None):  # noqa: E501
+        """MeasRepUeNotificationNrSCsNrSCellInfo - a model defined in Swagger
+
+        :param nr_s_cell_gid: The nr_s_cell_gid of this MeasRepUeNotificationNrSCsNrSCellInfo.  # noqa: E501
+        :type nr_s_cell_gid: NrCellId
+        :param nr_s_cell_plmn: The nr_s_cell_plmn of this MeasRepUeNotificationNrSCsNrSCellInfo.  # noqa: E501
+        :type nr_s_cell_plmn: List[Plmn]
+        """
+        self.swagger_types = {
+            'nr_s_cell_gid': NrCellId,
+            'nr_s_cell_plmn': List[Plmn]
+        }
+
+        self.attribute_map = {
+            'nr_s_cell_gid': 'nrSCellGId',
+            'nr_s_cell_plmn': 'nrSCellPlmn'
+        }
+        self._nr_s_cell_gid = nr_s_cell_gid
+        self._nr_s_cell_plmn = nr_s_cell_plmn
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeNotificationNrSCsNrSCellInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeNotification_nrSCs_nrSCellInfo of this MeasRepUeNotificationNrSCsNrSCellInfo.  # noqa: E501
+        :rtype: MeasRepUeNotificationNrSCsNrSCellInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nr_s_cell_gid(self) -> NrCellId:
+        """Gets the nr_s_cell_gid of this MeasRepUeNotificationNrSCsNrSCellInfo.
+
+
+        :return: The nr_s_cell_gid of this MeasRepUeNotificationNrSCsNrSCellInfo.
+        :rtype: NrCellId
+        """
+        return self._nr_s_cell_gid
+
+    @nr_s_cell_gid.setter
+    def nr_s_cell_gid(self, nr_s_cell_gid: NrCellId):
+        """Sets the nr_s_cell_gid of this MeasRepUeNotificationNrSCsNrSCellInfo.
+
+
+        :param nr_s_cell_gid: The nr_s_cell_gid of this MeasRepUeNotificationNrSCsNrSCellInfo.
+        :type nr_s_cell_gid: NrCellId
+        """
+
+        self._nr_s_cell_gid = nr_s_cell_gid
+
+    @property
+    def nr_s_cell_plmn(self) -> List[Plmn]:
+        """Gets the nr_s_cell_plmn of this MeasRepUeNotificationNrSCsNrSCellInfo.
+
+        Public land mobile network identities.  # noqa: E501
+
+        :return: The nr_s_cell_plmn of this MeasRepUeNotificationNrSCsNrSCellInfo.
+        :rtype: List[Plmn]
+        """
+        return self._nr_s_cell_plmn
+
+    @nr_s_cell_plmn.setter
+    def nr_s_cell_plmn(self, nr_s_cell_plmn: List[Plmn]):
+        """Sets the nr_s_cell_plmn of this MeasRepUeNotificationNrSCsNrSCellInfo.
+
+        Public land mobile network identities.  # noqa: E501
+
+        :param nr_s_cell_plmn: The nr_s_cell_plmn of this MeasRepUeNotificationNrSCsNrSCellInfo.
+        :type nr_s_cell_plmn: List[Plmn]
+        """
+
+        self._nr_s_cell_plmn = nr_s_cell_plmn
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ab8e45dfb2bc9fe337ee4a6032bc5641b24700a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.meas_rep_ue_subscription_filter_criteria_assoc_tri import MeasRepUeSubscriptionFilterCriteriaAssocTri  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_assoc_tri: MeasRepUeSubscriptionFilterCriteriaAssocTri=None, subscription_type: str=None):  # noqa: E501
+        """MeasRepUeSubscription - a model defined in Swagger
+
+        :param links: The links of this MeasRepUeSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this MeasRepUeSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this MeasRepUeSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_assoc_tri: The filter_criteria_assoc_tri of this MeasRepUeSubscription.  # noqa: E501
+        :type filter_criteria_assoc_tri: MeasRepUeSubscriptionFilterCriteriaAssocTri
+        :param subscription_type: The subscription_type of this MeasRepUeSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_assoc_tri': MeasRepUeSubscriptionFilterCriteriaAssocTri,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_assoc_tri': 'filterCriteriaAssocTri',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_assoc_tri = filter_criteria_assoc_tri
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeSubscription of this MeasRepUeSubscription.  # noqa: E501
+        :rtype: MeasRepUeSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this MeasRepUeSubscription.
+
+
+        :return: The links of this MeasRepUeSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this MeasRepUeSubscription.
+
+
+        :param links: The links of this MeasRepUeSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this MeasRepUeSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this MeasRepUeSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this MeasRepUeSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this MeasRepUeSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this MeasRepUeSubscription.
+
+
+        :return: The expiry_deadline of this MeasRepUeSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this MeasRepUeSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this MeasRepUeSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_assoc_tri(self) -> MeasRepUeSubscriptionFilterCriteriaAssocTri:
+        """Gets the filter_criteria_assoc_tri of this MeasRepUeSubscription.
+
+
+        :return: The filter_criteria_assoc_tri of this MeasRepUeSubscription.
+        :rtype: MeasRepUeSubscriptionFilterCriteriaAssocTri
+        """
+        return self._filter_criteria_assoc_tri
+
+    @filter_criteria_assoc_tri.setter
+    def filter_criteria_assoc_tri(self, filter_criteria_assoc_tri: MeasRepUeSubscriptionFilterCriteriaAssocTri):
+        """Sets the filter_criteria_assoc_tri of this MeasRepUeSubscription.
+
+
+        :param filter_criteria_assoc_tri: The filter_criteria_assoc_tri of this MeasRepUeSubscription.
+        :type filter_criteria_assoc_tri: MeasRepUeSubscriptionFilterCriteriaAssocTri
+        """
+        if filter_criteria_assoc_tri is None:
+            raise ValueError("Invalid value for `filter_criteria_assoc_tri`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_assoc_tri = filter_criteria_assoc_tri
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this MeasRepUeSubscription.
+
+        Shall be set to \"MeasRepUeSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this MeasRepUeSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this MeasRepUeSubscription.
+
+        Shall be set to \"MeasRepUeSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this MeasRepUeSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription_filter_criteria_assoc_tri.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription_filter_criteria_assoc_tri.py
new file mode 100644
index 0000000000000000000000000000000000000000..e03b279319ad45adbd1976cc12d64be4125f8e3a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_rep_ue_subscription_filter_criteria_assoc_tri.py
@@ -0,0 +1,151 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.trigger import Trigger  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasRepUeSubscriptionFilterCriteriaAssocTri(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None, trigger: List[Trigger]=None):  # noqa: E501
+        """MeasRepUeSubscriptionFilterCriteriaAssocTri - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.  # noqa: E501
+        :type app_instance_id: str
+        :param associate_id: The associate_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this MeasRepUeSubscriptionFilterCriteriaAssocTri.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param trigger: The trigger of this MeasRepUeSubscriptionFilterCriteriaAssocTri.  # noqa: E501
+        :type trigger: List[Trigger]
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi],
+            'trigger': List[Trigger]
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'trigger': 'trigger'
+        }
+        self._app_instance_id = app_instance_id
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._trigger = trigger
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasRepUeSubscriptionFilterCriteriaAssocTri':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasRepUeSubscription_filterCriteriaAssocTri of this MeasRepUeSubscriptionFilterCriteriaAssocTri.  # noqa: E501
+        :rtype: MeasRepUeSubscriptionFilterCriteriaAssocTri
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def trigger(self) -> List[Trigger]:
+        """Gets the trigger of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        Corresponds to a specific E-UTRAN UE Measurement Report trigger.  # noqa: E501
+
+        :return: The trigger of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :rtype: List[Trigger]
+        """
+        return self._trigger
+
+    @trigger.setter
+    def trigger(self, trigger: List[Trigger]):
+        """Sets the trigger of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+
+        Corresponds to a specific E-UTRAN UE Measurement Report trigger.  # noqa: E501
+
+        :param trigger: The trigger of this MeasRepUeSubscriptionFilterCriteriaAssocTri.
+        :type trigger: List[Trigger]
+        """
+
+        self._trigger = trigger
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1c78de4c1b291883b9a05a98828bf30d582920a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_notification.py
@@ -0,0 +1,181 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasTaNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: Ecgi=None, notification_type: str=None, time_stamp: TimeStamp=None, timing_advance: int=None):  # noqa: E501
+        """MeasTaNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this MeasTaNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this MeasTaNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param notification_type: The notification_type of this MeasTaNotification.  # noqa: E501
+        :type notification_type: str
+        :param time_stamp: The time_stamp of this MeasTaNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        :param timing_advance: The timing_advance of this MeasTaNotification.  # noqa: E501
+        :type timing_advance: int
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': Ecgi,
+            'notification_type': str,
+            'time_stamp': TimeStamp,
+            'timing_advance': int
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'notification_type': 'notificationType',
+            'time_stamp': 'timeStamp',
+            'timing_advance': 'timingAdvance'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._notification_type = notification_type
+        self._time_stamp = time_stamp
+        self._timing_advance = timing_advance
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasTaNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasTaNotification of this MeasTaNotification.  # noqa: E501
+        :rtype: MeasTaNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this MeasTaNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this MeasTaNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this MeasTaNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this MeasTaNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this MeasTaNotification.
+
+
+        :return: The ecgi of this MeasTaNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this MeasTaNotification.
+
+
+        :param ecgi: The ecgi of this MeasTaNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this MeasTaNotification.
+
+        Shall be set to \"MeasTaNotification\".  # noqa: E501
+
+        :return: The notification_type of this MeasTaNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this MeasTaNotification.
+
+        Shall be set to \"MeasTaNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this MeasTaNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this MeasTaNotification.
+
+
+        :return: The time_stamp of this MeasTaNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this MeasTaNotification.
+
+
+        :param time_stamp: The time_stamp of this MeasTaNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
+
+    @property
+    def timing_advance(self) -> int:
+        """Gets the timing_advance of this MeasTaNotification.
+
+        The timing advance as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :return: The timing_advance of this MeasTaNotification.
+        :rtype: int
+        """
+        return self._timing_advance
+
+    @timing_advance.setter
+    def timing_advance(self, timing_advance: int):
+        """Sets the timing_advance of this MeasTaNotification.
+
+        The timing advance as defined in ETSI TS 136 214 [i.5].  # noqa: E501
+
+        :param timing_advance: The timing_advance of this MeasTaNotification.
+        :type timing_advance: int
+        """
+        if timing_advance is None:
+            raise ValueError("Invalid value for `timing_advance`, must not be `None`")  # noqa: E501
+
+        self._timing_advance = timing_advance
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..7130ac3dc20f851416d6bc5109ebe8fc93b6aa7f
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/meas_ta_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_filter_criteria_assoc import CaReconfSubscriptionFilterCriteriaAssoc  # noqa: F401,E501
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class MeasTaSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc=None, subscription_type: str=None):  # noqa: E501
+        """MeasTaSubscription - a model defined in Swagger
+
+        :param links: The links of this MeasTaSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this MeasTaSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this MeasTaSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_assoc: The filter_criteria_assoc of this MeasTaSubscription.  # noqa: E501
+        :type filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc
+        :param subscription_type: The subscription_type of this MeasTaSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_assoc': CaReconfSubscriptionFilterCriteriaAssoc,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_assoc': 'filterCriteriaAssoc',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_assoc = filter_criteria_assoc
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'MeasTaSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The MeasTaSubscription of this MeasTaSubscription.  # noqa: E501
+        :rtype: MeasTaSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this MeasTaSubscription.
+
+
+        :return: The links of this MeasTaSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this MeasTaSubscription.
+
+
+        :param links: The links of this MeasTaSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this MeasTaSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this MeasTaSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this MeasTaSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this MeasTaSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this MeasTaSubscription.
+
+
+        :return: The expiry_deadline of this MeasTaSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this MeasTaSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this MeasTaSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_assoc(self) -> CaReconfSubscriptionFilterCriteriaAssoc:
+        """Gets the filter_criteria_assoc of this MeasTaSubscription.
+
+
+        :return: The filter_criteria_assoc of this MeasTaSubscription.
+        :rtype: CaReconfSubscriptionFilterCriteriaAssoc
+        """
+        return self._filter_criteria_assoc
+
+    @filter_criteria_assoc.setter
+    def filter_criteria_assoc(self, filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc):
+        """Sets the filter_criteria_assoc of this MeasTaSubscription.
+
+
+        :param filter_criteria_assoc: The filter_criteria_assoc of this MeasTaSubscription.
+        :type filter_criteria_assoc: CaReconfSubscriptionFilterCriteriaAssoc
+        """
+        if filter_criteria_assoc is None:
+            raise ValueError("Invalid value for `filter_criteria_assoc`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_assoc = filter_criteria_assoc
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this MeasTaSubscription.
+
+        Shall be set to \"MeasTaSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this MeasTaSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this MeasTaSubscription.
+
+        Shall be set to \"MeasTaSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this MeasTaSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/n_rcgi.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/n_rcgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..092d08f885ceb7e2aa43fde2ab77207f45473dbc
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/n_rcgi.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.nr_cell_id import NrCellId  # noqa: F401,E501
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server import util
+
+
+class NRcgi(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nrcell_id: NrCellId=None, plmn: Plmn=None):  # noqa: E501
+        """NRcgi - a model defined in Swagger
+
+        :param nrcell_id: The nrcell_id of this NRcgi.  # noqa: E501
+        :type nrcell_id: NrCellId
+        :param plmn: The plmn of this NRcgi.  # noqa: E501
+        :type plmn: Plmn
+        """
+        self.swagger_types = {
+            'nrcell_id': NrCellId,
+            'plmn': Plmn
+        }
+
+        self.attribute_map = {
+            'nrcell_id': 'nrcellId',
+            'plmn': 'plmn'
+        }
+        self._nrcell_id = nrcell_id
+        self._plmn = plmn
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NRcgi':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NRcgi of this NRcgi.  # noqa: E501
+        :rtype: NRcgi
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nrcell_id(self) -> NrCellId:
+        """Gets the nrcell_id of this NRcgi.
+
+
+        :return: The nrcell_id of this NRcgi.
+        :rtype: NrCellId
+        """
+        return self._nrcell_id
+
+    @nrcell_id.setter
+    def nrcell_id(self, nrcell_id: NrCellId):
+        """Sets the nrcell_id of this NRcgi.
+
+
+        :param nrcell_id: The nrcell_id of this NRcgi.
+        :type nrcell_id: NrCellId
+        """
+        if nrcell_id is None:
+            raise ValueError("Invalid value for `nrcell_id`, must not be `None`")  # noqa: E501
+
+        self._nrcell_id = nrcell_id
+
+    @property
+    def plmn(self) -> Plmn:
+        """Gets the plmn of this NRcgi.
+
+
+        :return: The plmn of this NRcgi.
+        :rtype: Plmn
+        """
+        return self._plmn
+
+    @plmn.setter
+    def plmn(self, plmn: Plmn):
+        """Sets the plmn of this NRcgi.
+
+
+        :param plmn: The plmn of this NRcgi.
+        :type plmn: Plmn
+        """
+        if plmn is None:
+            raise ValueError("Invalid value for `plmn`, must not be `None`")  # noqa: E501
+
+        self._plmn = plmn
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_cell_id.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_cell_id.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad699863a1e05a827f73810fce535eb501d134d3
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_cell_id.py
@@ -0,0 +1,36 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class NrCellId(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self):  # noqa: E501
+        """NrCellId - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrCellId':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrCellId of this NrCellId.  # noqa: E501
+        :rtype: NrCellId
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..785c42ab6f48bbf30d0c7b0b86fd24ab33f0e315
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification.py
@@ -0,0 +1,238 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info import NrMeasRepUeNotificationEutraNeighCellMeasInfo  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_notification_nr_neigh_cell_meas_info import NrMeasRepUeNotificationNrNeighCellMeasInfo  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_notification_serv_cell_meas_info import NrMeasRepUeNotificationServCellMeasInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server.models.trigger_nr import TriggerNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, eutra_neigh_cell_meas_info: List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]=None, notification_type: str=None, nr_neigh_cell_meas_info: List[NrMeasRepUeNotificationNrNeighCellMeasInfo]=None, serv_cell_meas_info: List[NrMeasRepUeNotificationServCellMeasInfo]=None, time_stamp: TimeStamp=None, trigger_nr: TriggerNr=None):  # noqa: E501
+        """NrMeasRepUeNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this NrMeasRepUeNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param eutra_neigh_cell_meas_info: The eutra_neigh_cell_meas_info of this NrMeasRepUeNotification.  # noqa: E501
+        :type eutra_neigh_cell_meas_info: List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]
+        :param notification_type: The notification_type of this NrMeasRepUeNotification.  # noqa: E501
+        :type notification_type: str
+        :param nr_neigh_cell_meas_info: The nr_neigh_cell_meas_info of this NrMeasRepUeNotification.  # noqa: E501
+        :type nr_neigh_cell_meas_info: List[NrMeasRepUeNotificationNrNeighCellMeasInfo]
+        :param serv_cell_meas_info: The serv_cell_meas_info of this NrMeasRepUeNotification.  # noqa: E501
+        :type serv_cell_meas_info: List[NrMeasRepUeNotificationServCellMeasInfo]
+        :param time_stamp: The time_stamp of this NrMeasRepUeNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        :param trigger_nr: The trigger_nr of this NrMeasRepUeNotification.  # noqa: E501
+        :type trigger_nr: TriggerNr
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'eutra_neigh_cell_meas_info': List[NrMeasRepUeNotificationEutraNeighCellMeasInfo],
+            'notification_type': str,
+            'nr_neigh_cell_meas_info': List[NrMeasRepUeNotificationNrNeighCellMeasInfo],
+            'serv_cell_meas_info': List[NrMeasRepUeNotificationServCellMeasInfo],
+            'time_stamp': TimeStamp,
+            'trigger_nr': TriggerNr
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'eutra_neigh_cell_meas_info': 'eutraNeighCellMeasInfo',
+            'notification_type': 'notificationType',
+            'nr_neigh_cell_meas_info': 'nrNeighCellMeasInfo',
+            'serv_cell_meas_info': 'servCellMeasInfo',
+            'time_stamp': 'timeStamp',
+            'trigger_nr': 'triggerNr'
+        }
+        self._associate_id = associate_id
+        self._eutra_neigh_cell_meas_info = eutra_neigh_cell_meas_info
+        self._notification_type = notification_type
+        self._nr_neigh_cell_meas_info = nr_neigh_cell_meas_info
+        self._serv_cell_meas_info = serv_cell_meas_info
+        self._time_stamp = time_stamp
+        self._trigger_nr = trigger_nr
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification of this NrMeasRepUeNotification.  # noqa: E501
+        :rtype: NrMeasRepUeNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this NrMeasRepUeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this NrMeasRepUeNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this NrMeasRepUeNotification.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this NrMeasRepUeNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def eutra_neigh_cell_meas_info(self) -> List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]:
+        """Gets the eutra_neigh_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if nrNeighCellMeasInfo is included.  # noqa: E501
+
+        :return: The eutra_neigh_cell_meas_info of this NrMeasRepUeNotification.
+        :rtype: List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]
+        """
+        return self._eutra_neigh_cell_meas_info
+
+    @eutra_neigh_cell_meas_info.setter
+    def eutra_neigh_cell_meas_info(self, eutra_neigh_cell_meas_info: List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]):
+        """Sets the eutra_neigh_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if nrNeighCellMeasInfo is included.  # noqa: E501
+
+        :param eutra_neigh_cell_meas_info: The eutra_neigh_cell_meas_info of this NrMeasRepUeNotification.
+        :type eutra_neigh_cell_meas_info: List[NrMeasRepUeNotificationEutraNeighCellMeasInfo]
+        """
+
+        self._eutra_neigh_cell_meas_info = eutra_neigh_cell_meas_info
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this NrMeasRepUeNotification.
+
+        Shall be set to \"NrMeasRepUeNotification\".  # noqa: E501
+
+        :return: The notification_type of this NrMeasRepUeNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this NrMeasRepUeNotification.
+
+        Shall be set to \"NrMeasRepUeNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this NrMeasRepUeNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def nr_neigh_cell_meas_info(self) -> List[NrMeasRepUeNotificationNrNeighCellMeasInfo]:
+        """Gets the nr_neigh_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if eutraNeighCellMeasInfo is included.  # noqa: E501
+
+        :return: The nr_neigh_cell_meas_info of this NrMeasRepUeNotification.
+        :rtype: List[NrMeasRepUeNotificationNrNeighCellMeasInfo]
+        """
+        return self._nr_neigh_cell_meas_info
+
+    @nr_neigh_cell_meas_info.setter
+    def nr_neigh_cell_meas_info(self, nr_neigh_cell_meas_info: List[NrMeasRepUeNotificationNrNeighCellMeasInfo]):
+        """Sets the nr_neigh_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if eutraNeighCellMeasInfo is included.  # noqa: E501
+
+        :param nr_neigh_cell_meas_info: The nr_neigh_cell_meas_info of this NrMeasRepUeNotification.
+        :type nr_neigh_cell_meas_info: List[NrMeasRepUeNotificationNrNeighCellMeasInfo]
+        """
+
+        self._nr_neigh_cell_meas_info = nr_neigh_cell_meas_info
+
+    @property
+    def serv_cell_meas_info(self) -> List[NrMeasRepUeNotificationServCellMeasInfo]:
+        """Gets the serv_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the serving cells up to N.  # noqa: E501
+
+        :return: The serv_cell_meas_info of this NrMeasRepUeNotification.
+        :rtype: List[NrMeasRepUeNotificationServCellMeasInfo]
+        """
+        return self._serv_cell_meas_info
+
+    @serv_cell_meas_info.setter
+    def serv_cell_meas_info(self, serv_cell_meas_info: List[NrMeasRepUeNotificationServCellMeasInfo]):
+        """Sets the serv_cell_meas_info of this NrMeasRepUeNotification.
+
+        This parameter can be repeated to contain information of all the serving cells up to N.  # noqa: E501
+
+        :param serv_cell_meas_info: The serv_cell_meas_info of this NrMeasRepUeNotification.
+        :type serv_cell_meas_info: List[NrMeasRepUeNotificationServCellMeasInfo]
+        """
+
+        self._serv_cell_meas_info = serv_cell_meas_info
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this NrMeasRepUeNotification.
+
+
+        :return: The time_stamp of this NrMeasRepUeNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this NrMeasRepUeNotification.
+
+
+        :param time_stamp: The time_stamp of this NrMeasRepUeNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
+
+    @property
+    def trigger_nr(self) -> TriggerNr:
+        """Gets the trigger_nr of this NrMeasRepUeNotification.
+
+
+        :return: The trigger_nr of this NrMeasRepUeNotification.
+        :rtype: TriggerNr
+        """
+        return self._trigger_nr
+
+    @trigger_nr.setter
+    def trigger_nr(self, trigger_nr: TriggerNr):
+        """Sets the trigger_nr of this NrMeasRepUeNotification.
+
+
+        :param trigger_nr: The trigger_nr of this NrMeasRepUeNotification.
+        :type trigger_nr: TriggerNr
+        """
+        if trigger_nr is None:
+            raise ValueError("Invalid value for `trigger_nr`, must not be `None`")  # noqa: E501
+
+        self._trigger_nr = trigger_nr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..f5f3548549e2a7f12ba036485aa3897e8a972d45
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.py
@@ -0,0 +1,147 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotificationEutraNeighCellMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ecgi: Ecgi=None, rsrp: int=None, rsrq: int=None, sinr: int=None):  # noqa: E501
+        """NrMeasRepUeNotificationEutraNeighCellMeasInfo - a model defined in Swagger
+
+        :param ecgi: The ecgi of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.  # noqa: E501
+        :type ecgi: Ecgi
+        :param rsrp: The rsrp of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.  # noqa: E501
+        :type rsrp: int
+        :param rsrq: The rsrq of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.  # noqa: E501
+        :type rsrq: int
+        :param sinr: The sinr of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.  # noqa: E501
+        :type sinr: int
+        """
+        self.swagger_types = {
+            'ecgi': Ecgi,
+            'rsrp': int,
+            'rsrq': int,
+            'sinr': int
+        }
+
+        self.attribute_map = {
+            'ecgi': 'ecgi',
+            'rsrp': 'rsrp',
+            'rsrq': 'rsrq',
+            'sinr': 'sinr'
+        }
+        self._ecgi = ecgi
+        self._rsrp = rsrp
+        self._rsrq = rsrq
+        self._sinr = sinr
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotificationEutraNeighCellMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification_eutraNeighCellMeasInfo of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.  # noqa: E501
+        :rtype: NrMeasRepUeNotificationEutraNeighCellMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+
+        :return: The ecgi of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+
+        :param ecgi: The ecgi of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def rsrp(self) -> int:
+        """Gets the rsrp of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The rsrp of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrp
+
+    @rsrp.setter
+    def rsrp(self, rsrp: int):
+        """Sets the rsrp of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal Received Power as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param rsrp: The rsrp of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :type rsrp: int
+        """
+
+        self._rsrp = rsrp
+
+    @property
+    def rsrq(self) -> int:
+        """Gets the rsrq of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The rsrq of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :rtype: int
+        """
+        return self._rsrq
+
+    @rsrq.setter
+    def rsrq(self, rsrq: int):
+        """Sets the rsrq of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param rsrq: The rsrq of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :type rsrq: int
+        """
+
+        self._rsrq = rsrq
+
+    @property
+    def sinr(self) -> int:
+        """Gets the sinr of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal plus Interference Noise Ratio as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :return: The sinr of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :rtype: int
+        """
+        return self._sinr
+
+    @sinr.setter
+    def sinr(self, sinr: int):
+        """Sets the sinr of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+
+        Reference Signal plus Interference Noise Ratio as defined in ETSI TS 138 331 [i.13].  # noqa: E501
+
+        :param sinr: The sinr of this NrMeasRepUeNotificationEutraNeighCellMeasInfo.
+        :type sinr: int
+        """
+
+        self._sinr = sinr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_n_cell.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_n_cell.py
new file mode 100644
index 0000000000000000000000000000000000000000..31aaaf2c512719f50c098b8a780fb399e55a93de
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_n_cell.py
@@ -0,0 +1,116 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server.models.rs_index_results import RsIndexResults  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotificationNCell(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr=None, meas_quantity_results_ssb_cell: MeasQuantityResultsNr=None, rs_index_results: RsIndexResults=None):  # noqa: E501
+        """NrMeasRepUeNotificationNCell - a model defined in Swagger
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNCell.  # noqa: E501
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNCell.  # noqa: E501
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationNCell.  # noqa: E501
+        :type rs_index_results: RsIndexResults
+        """
+        self.swagger_types = {
+            'meas_quantity_results_csi_rs_cell': MeasQuantityResultsNr,
+            'meas_quantity_results_ssb_cell': MeasQuantityResultsNr,
+            'rs_index_results': RsIndexResults
+        }
+
+        self.attribute_map = {
+            'meas_quantity_results_csi_rs_cell': 'measQuantityResultsCsiRsCell',
+            'meas_quantity_results_ssb_cell': 'measQuantityResultsSsbCell',
+            'rs_index_results': 'rsIndexResults'
+        }
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+        self._rs_index_results = rs_index_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotificationNCell':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification_nCell of this NrMeasRepUeNotificationNCell.  # noqa: E501
+        :rtype: NrMeasRepUeNotificationNCell
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def meas_quantity_results_csi_rs_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNCell.
+
+
+        :return: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNCell.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_csi_rs_cell
+
+    @meas_quantity_results_csi_rs_cell.setter
+    def meas_quantity_results_csi_rs_cell(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNCell.
+
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNCell.
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+
+    @property
+    def meas_quantity_results_ssb_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNCell.
+
+
+        :return: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNCell.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_ssb_cell
+
+    @meas_quantity_results_ssb_cell.setter
+    def meas_quantity_results_ssb_cell(self, meas_quantity_results_ssb_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNCell.
+
+
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNCell.
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+
+    @property
+    def rs_index_results(self) -> RsIndexResults:
+        """Gets the rs_index_results of this NrMeasRepUeNotificationNCell.
+
+
+        :return: The rs_index_results of this NrMeasRepUeNotificationNCell.
+        :rtype: RsIndexResults
+        """
+        return self._rs_index_results
+
+    @rs_index_results.setter
+    def rs_index_results(self, rs_index_results: RsIndexResults):
+        """Sets the rs_index_results of this NrMeasRepUeNotificationNCell.
+
+
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationNCell.
+        :type rs_index_results: RsIndexResults
+        """
+
+        self._rs_index_results = rs_index_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..c08448ce181090a9b1812187e7b8b76d72a02ad9
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.py
@@ -0,0 +1,143 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server.models.nr_cell_id import NrCellId  # noqa: F401,E501
+from swagger_server.models.rs_index_results import RsIndexResults  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotificationNrNeighCellMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr=None, meas_quantity_results_ssb_cell: MeasQuantityResultsNr=None, nrcgi: NrCellId=None, rs_index_results: RsIndexResults=None):  # noqa: E501
+        """NrMeasRepUeNotificationNrNeighCellMeasInfo - a model defined in Swagger
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.  # noqa: E501
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.  # noqa: E501
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        :param nrcgi: The nrcgi of this NrMeasRepUeNotificationNrNeighCellMeasInfo.  # noqa: E501
+        :type nrcgi: NrCellId
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationNrNeighCellMeasInfo.  # noqa: E501
+        :type rs_index_results: RsIndexResults
+        """
+        self.swagger_types = {
+            'meas_quantity_results_csi_rs_cell': MeasQuantityResultsNr,
+            'meas_quantity_results_ssb_cell': MeasQuantityResultsNr,
+            'nrcgi': NrCellId,
+            'rs_index_results': RsIndexResults
+        }
+
+        self.attribute_map = {
+            'meas_quantity_results_csi_rs_cell': 'measQuantityResultsCsiRsCell',
+            'meas_quantity_results_ssb_cell': 'measQuantityResultsSsbCell',
+            'nrcgi': 'nrcgi',
+            'rs_index_results': 'rsIndexResults'
+        }
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+        self._nrcgi = nrcgi
+        self._rs_index_results = rs_index_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotificationNrNeighCellMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification_nrNeighCellMeasInfo of this NrMeasRepUeNotificationNrNeighCellMeasInfo.  # noqa: E501
+        :rtype: NrMeasRepUeNotificationNrNeighCellMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def meas_quantity_results_csi_rs_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :return: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_csi_rs_cell
+
+    @meas_quantity_results_csi_rs_cell.setter
+    def meas_quantity_results_csi_rs_cell(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+
+    @property
+    def meas_quantity_results_ssb_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :return: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_ssb_cell
+
+    @meas_quantity_results_ssb_cell.setter
+    def meas_quantity_results_ssb_cell(self, meas_quantity_results_ssb_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+
+    @property
+    def nrcgi(self) -> NrCellId:
+        """Gets the nrcgi of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :return: The nrcgi of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :rtype: NrCellId
+        """
+        return self._nrcgi
+
+    @nrcgi.setter
+    def nrcgi(self, nrcgi: NrCellId):
+        """Sets the nrcgi of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :param nrcgi: The nrcgi of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :type nrcgi: NrCellId
+        """
+
+        self._nrcgi = nrcgi
+
+    @property
+    def rs_index_results(self) -> RsIndexResults:
+        """Gets the rs_index_results of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :return: The rs_index_results of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :rtype: RsIndexResults
+        """
+        return self._rs_index_results
+
+    @rs_index_results.setter
+    def rs_index_results(self, rs_index_results: RsIndexResults):
+        """Sets the rs_index_results of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+
+
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationNrNeighCellMeasInfo.
+        :type rs_index_results: RsIndexResults
+        """
+
+        self._rs_index_results = rs_index_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_s_cell.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_s_cell.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b58b603a7bd72f182bf40c440d047d1115dd7ba
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_s_cell.py
@@ -0,0 +1,116 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server.models.rs_index_results import RsIndexResults  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotificationSCell(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr=None, meas_quantity_results_ssb_cell: MeasQuantityResultsNr=None, rs_index_results: RsIndexResults=None):  # noqa: E501
+        """NrMeasRepUeNotificationSCell - a model defined in Swagger
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationSCell.  # noqa: E501
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationSCell.  # noqa: E501
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationSCell.  # noqa: E501
+        :type rs_index_results: RsIndexResults
+        """
+        self.swagger_types = {
+            'meas_quantity_results_csi_rs_cell': MeasQuantityResultsNr,
+            'meas_quantity_results_ssb_cell': MeasQuantityResultsNr,
+            'rs_index_results': RsIndexResults
+        }
+
+        self.attribute_map = {
+            'meas_quantity_results_csi_rs_cell': 'measQuantityResultsCsiRsCell',
+            'meas_quantity_results_ssb_cell': 'measQuantityResultsSsbCell',
+            'rs_index_results': 'rsIndexResults'
+        }
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+        self._rs_index_results = rs_index_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotificationSCell':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification_sCell of this NrMeasRepUeNotificationSCell.  # noqa: E501
+        :rtype: NrMeasRepUeNotificationSCell
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def meas_quantity_results_csi_rs_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationSCell.
+
+
+        :return: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationSCell.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_csi_rs_cell
+
+    @meas_quantity_results_csi_rs_cell.setter
+    def meas_quantity_results_csi_rs_cell(self, meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationSCell.
+
+
+        :param meas_quantity_results_csi_rs_cell: The meas_quantity_results_csi_rs_cell of this NrMeasRepUeNotificationSCell.
+        :type meas_quantity_results_csi_rs_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_csi_rs_cell = meas_quantity_results_csi_rs_cell
+
+    @property
+    def meas_quantity_results_ssb_cell(self) -> MeasQuantityResultsNr:
+        """Gets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationSCell.
+
+
+        :return: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationSCell.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._meas_quantity_results_ssb_cell
+
+    @meas_quantity_results_ssb_cell.setter
+    def meas_quantity_results_ssb_cell(self, meas_quantity_results_ssb_cell: MeasQuantityResultsNr):
+        """Sets the meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationSCell.
+
+
+        :param meas_quantity_results_ssb_cell: The meas_quantity_results_ssb_cell of this NrMeasRepUeNotificationSCell.
+        :type meas_quantity_results_ssb_cell: MeasQuantityResultsNr
+        """
+
+        self._meas_quantity_results_ssb_cell = meas_quantity_results_ssb_cell
+
+    @property
+    def rs_index_results(self) -> RsIndexResults:
+        """Gets the rs_index_results of this NrMeasRepUeNotificationSCell.
+
+
+        :return: The rs_index_results of this NrMeasRepUeNotificationSCell.
+        :rtype: RsIndexResults
+        """
+        return self._rs_index_results
+
+    @rs_index_results.setter
+    def rs_index_results(self, rs_index_results: RsIndexResults):
+        """Sets the rs_index_results of this NrMeasRepUeNotificationSCell.
+
+
+        :param rs_index_results: The rs_index_results of this NrMeasRepUeNotificationSCell.
+        :type rs_index_results: RsIndexResults
+        """
+
+        self._rs_index_results = rs_index_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_serv_cell_meas_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_serv_cell_meas_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..b69d9adcd97523a72264d8ba03a938f3135397d0
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_notification_serv_cell_meas_info.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.n_rcgi import NRcgi  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_notification_n_cell import NrMeasRepUeNotificationNCell  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_notification_s_cell import NrMeasRepUeNotificationSCell  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeNotificationServCellMeasInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, n_cell: NrMeasRepUeNotificationNCell=None, nrcgi: NRcgi=None, s_cell: NrMeasRepUeNotificationSCell=None):  # noqa: E501
+        """NrMeasRepUeNotificationServCellMeasInfo - a model defined in Swagger
+
+        :param n_cell: The n_cell of this NrMeasRepUeNotificationServCellMeasInfo.  # noqa: E501
+        :type n_cell: NrMeasRepUeNotificationNCell
+        :param nrcgi: The nrcgi of this NrMeasRepUeNotificationServCellMeasInfo.  # noqa: E501
+        :type nrcgi: NRcgi
+        :param s_cell: The s_cell of this NrMeasRepUeNotificationServCellMeasInfo.  # noqa: E501
+        :type s_cell: NrMeasRepUeNotificationSCell
+        """
+        self.swagger_types = {
+            'n_cell': NrMeasRepUeNotificationNCell,
+            'nrcgi': NRcgi,
+            's_cell': NrMeasRepUeNotificationSCell
+        }
+
+        self.attribute_map = {
+            'n_cell': 'nCell',
+            'nrcgi': 'nrcgi',
+            's_cell': 'sCell'
+        }
+        self._n_cell = n_cell
+        self._nrcgi = nrcgi
+        self._s_cell = s_cell
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeNotificationServCellMeasInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeNotification_servCellMeasInfo of this NrMeasRepUeNotificationServCellMeasInfo.  # noqa: E501
+        :rtype: NrMeasRepUeNotificationServCellMeasInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def n_cell(self) -> NrMeasRepUeNotificationNCell:
+        """Gets the n_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :return: The n_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+        :rtype: NrMeasRepUeNotificationNCell
+        """
+        return self._n_cell
+
+    @n_cell.setter
+    def n_cell(self, n_cell: NrMeasRepUeNotificationNCell):
+        """Sets the n_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :param n_cell: The n_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+        :type n_cell: NrMeasRepUeNotificationNCell
+        """
+
+        self._n_cell = n_cell
+
+    @property
+    def nrcgi(self) -> NRcgi:
+        """Gets the nrcgi of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :return: The nrcgi of this NrMeasRepUeNotificationServCellMeasInfo.
+        :rtype: NRcgi
+        """
+        return self._nrcgi
+
+    @nrcgi.setter
+    def nrcgi(self, nrcgi: NRcgi):
+        """Sets the nrcgi of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :param nrcgi: The nrcgi of this NrMeasRepUeNotificationServCellMeasInfo.
+        :type nrcgi: NRcgi
+        """
+
+        self._nrcgi = nrcgi
+
+    @property
+    def s_cell(self) -> NrMeasRepUeNotificationSCell:
+        """Gets the s_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :return: The s_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+        :rtype: NrMeasRepUeNotificationSCell
+        """
+        return self._s_cell
+
+    @s_cell.setter
+    def s_cell(self, s_cell: NrMeasRepUeNotificationSCell):
+        """Sets the s_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+
+
+        :param s_cell: The s_cell of this NrMeasRepUeNotificationServCellMeasInfo.
+        :type s_cell: NrMeasRepUeNotificationSCell
+        """
+
+        self._s_cell = s_cell
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce99a4ca7be97491bec13cadcea605c43b96f4b6
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.nr_meas_rep_ue_subscription_filter_criteria_nr_mrs import NrMeasRepUeSubscriptionFilterCriteriaNrMrs  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_nr_mrs: NrMeasRepUeSubscriptionFilterCriteriaNrMrs=None, subscription_type: str=None):  # noqa: E501
+        """NrMeasRepUeSubscription - a model defined in Swagger
+
+        :param links: The links of this NrMeasRepUeSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this NrMeasRepUeSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this NrMeasRepUeSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_nr_mrs: The filter_criteria_nr_mrs of this NrMeasRepUeSubscription.  # noqa: E501
+        :type filter_criteria_nr_mrs: NrMeasRepUeSubscriptionFilterCriteriaNrMrs
+        :param subscription_type: The subscription_type of this NrMeasRepUeSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_nr_mrs': NrMeasRepUeSubscriptionFilterCriteriaNrMrs,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_nr_mrs': 'filterCriteriaNrMrs',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_nr_mrs = filter_criteria_nr_mrs
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeSubscription of this NrMeasRepUeSubscription.  # noqa: E501
+        :rtype: NrMeasRepUeSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this NrMeasRepUeSubscription.
+
+
+        :return: The links of this NrMeasRepUeSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this NrMeasRepUeSubscription.
+
+
+        :param links: The links of this NrMeasRepUeSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this NrMeasRepUeSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this NrMeasRepUeSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this NrMeasRepUeSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this NrMeasRepUeSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this NrMeasRepUeSubscription.
+
+
+        :return: The expiry_deadline of this NrMeasRepUeSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this NrMeasRepUeSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this NrMeasRepUeSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_nr_mrs(self) -> NrMeasRepUeSubscriptionFilterCriteriaNrMrs:
+        """Gets the filter_criteria_nr_mrs of this NrMeasRepUeSubscription.
+
+
+        :return: The filter_criteria_nr_mrs of this NrMeasRepUeSubscription.
+        :rtype: NrMeasRepUeSubscriptionFilterCriteriaNrMrs
+        """
+        return self._filter_criteria_nr_mrs
+
+    @filter_criteria_nr_mrs.setter
+    def filter_criteria_nr_mrs(self, filter_criteria_nr_mrs: NrMeasRepUeSubscriptionFilterCriteriaNrMrs):
+        """Sets the filter_criteria_nr_mrs of this NrMeasRepUeSubscription.
+
+
+        :param filter_criteria_nr_mrs: The filter_criteria_nr_mrs of this NrMeasRepUeSubscription.
+        :type filter_criteria_nr_mrs: NrMeasRepUeSubscriptionFilterCriteriaNrMrs
+        """
+        if filter_criteria_nr_mrs is None:
+            raise ValueError("Invalid value for `filter_criteria_nr_mrs`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_nr_mrs = filter_criteria_nr_mrs
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this NrMeasRepUeSubscription.
+
+        Shall be set to \"NrMeasRepUeSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this NrMeasRepUeSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this NrMeasRepUeSubscription.
+
+        Shall be set to \"NrMeasRepUeSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this NrMeasRepUeSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.py
new file mode 100644
index 0000000000000000000000000000000000000000..fe361354247901d2886be58bde8968f583df0d71
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.py
@@ -0,0 +1,151 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.n_rcgi import NRcgi  # noqa: F401,E501
+from swagger_server.models.trigger_nr import TriggerNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class NrMeasRepUeSubscriptionFilterCriteriaNrMrs(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, associate_id: List[AssociateId]=None, nrcgi: List[NRcgi]=None, trigger_nr: List[TriggerNr]=None):  # noqa: E501
+        """NrMeasRepUeSubscriptionFilterCriteriaNrMrs - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.  # noqa: E501
+        :type app_instance_id: str
+        :param associate_id: The associate_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param nrcgi: The nrcgi of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.  # noqa: E501
+        :type nrcgi: List[NRcgi]
+        :param trigger_nr: The trigger_nr of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.  # noqa: E501
+        :type trigger_nr: List[TriggerNr]
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'associate_id': List[AssociateId],
+            'nrcgi': List[NRcgi],
+            'trigger_nr': List[TriggerNr]
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'associate_id': 'associateId',
+            'nrcgi': 'nrcgi',
+            'trigger_nr': 'triggerNr'
+        }
+        self._app_instance_id = app_instance_id
+        self._associate_id = associate_id
+        self._nrcgi = nrcgi
+        self._trigger_nr = trigger_nr
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'NrMeasRepUeSubscriptionFilterCriteriaNrMrs':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The NrMeasRepUeSubscription_filterCriteriaNrMrs of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.  # noqa: E501
+        :rtype: NrMeasRepUeSubscriptionFilterCriteriaNrMrs
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def nrcgi(self) -> List[NRcgi]:
+        """Gets the nrcgi of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        NR Cell Global Identier.  # noqa: E501
+
+        :return: The nrcgi of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :rtype: List[NRcgi]
+        """
+        return self._nrcgi
+
+    @nrcgi.setter
+    def nrcgi(self, nrcgi: List[NRcgi]):
+        """Sets the nrcgi of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        NR Cell Global Identier.  # noqa: E501
+
+        :param nrcgi: The nrcgi of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :type nrcgi: List[NRcgi]
+        """
+
+        self._nrcgi = nrcgi
+
+    @property
+    def trigger_nr(self) -> List[TriggerNr]:
+        """Gets the trigger_nr of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        Corresponds to a specific 5G UE Measurement Report trigger.  # noqa: E501
+
+        :return: The trigger_nr of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :rtype: List[TriggerNr]
+        """
+        return self._trigger_nr
+
+    @trigger_nr.setter
+    def trigger_nr(self, trigger_nr: List[TriggerNr]):
+        """Sets the trigger_nr of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+
+        Corresponds to a specific 5G UE Measurement Report trigger.  # noqa: E501
+
+        :param trigger_nr: The trigger_nr of this NrMeasRepUeSubscriptionFilterCriteriaNrMrs.
+        :type trigger_nr: List[TriggerNr]
+        """
+
+        self._trigger_nr = trigger_nr
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4b02be46f242d7b24768d36ce6ac09bd3e33d56
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class Plmn(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, mcc: str=None, mnc: str=None):  # noqa: E501
+        """Plmn - a model defined in Swagger
+
+        :param mcc: The mcc of this Plmn.  # noqa: E501
+        :type mcc: str
+        :param mnc: The mnc of this Plmn.  # noqa: E501
+        :type mnc: str
+        """
+        self.swagger_types = {
+            'mcc': str,
+            'mnc': str
+        }
+
+        self.attribute_map = {
+            'mcc': 'mcc',
+            'mnc': 'mnc'
+        }
+        self._mcc = mcc
+        self._mnc = mnc
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'Plmn':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The Plmn of this Plmn.  # noqa: E501
+        :rtype: Plmn
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def mcc(self) -> str:
+        """Gets the mcc of this Plmn.
+
+        The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mcc of this Plmn.
+        :rtype: str
+        """
+        return self._mcc
+
+    @mcc.setter
+    def mcc(self, mcc: str):
+        """Sets the mcc of this Plmn.
+
+        The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mcc: The mcc of this Plmn.
+        :type mcc: str
+        """
+        if mcc is None:
+            raise ValueError("Invalid value for `mcc`, must not be `None`")  # noqa: E501
+
+        self._mcc = mcc
+
+    @property
+    def mnc(self) -> str:
+        """Gets the mnc of this Plmn.
+
+        The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mnc of this Plmn.
+        :rtype: str
+        """
+        return self._mnc
+
+    @mnc.setter
+    def mnc(self, mnc: str):
+        """Sets the mnc of this Plmn.
+
+        The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mnc: The mnc of this Plmn.
+        :type mnc: str
+        """
+        if mnc is None:
+            raise ValueError("Invalid value for `mnc`, must not be `None`")  # noqa: E501
+
+        self._mnc = mnc
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ef00f01583f0e29f7827c4362ef47bc6b7e1988
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/plmn_info.py
@@ -0,0 +1,124 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.plmn import Plmn  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class PlmnInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, plmn: List[Plmn]=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """PlmnInfo - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this PlmnInfo.  # noqa: E501
+        :type app_instance_id: str
+        :param plmn: The plmn of this PlmnInfo.  # noqa: E501
+        :type plmn: List[Plmn]
+        :param time_stamp: The time_stamp of this PlmnInfo.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'plmn': List[Plmn],
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'plmn': 'plmn',
+            'time_stamp': 'timeStamp'
+        }
+        self._app_instance_id = app_instance_id
+        self._plmn = plmn
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'PlmnInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The PlmnInfo of this PlmnInfo.  # noqa: E501
+        :rtype: PlmnInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this PlmnInfo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this PlmnInfo.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this PlmnInfo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this PlmnInfo.
+        :type app_instance_id: str
+        """
+        if app_instance_id is None:
+            raise ValueError("Invalid value for `app_instance_id`, must not be `None`")  # noqa: E501
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def plmn(self) -> List[Plmn]:
+        """Gets the plmn of this PlmnInfo.
+
+        Public Land Mobile Network Identity.  # noqa: E501
+
+        :return: The plmn of this PlmnInfo.
+        :rtype: List[Plmn]
+        """
+        return self._plmn
+
+    @plmn.setter
+    def plmn(self, plmn: List[Plmn]):
+        """Sets the plmn of this PlmnInfo.
+
+        Public Land Mobile Network Identity.  # noqa: E501
+
+        :param plmn: The plmn of this PlmnInfo.
+        :type plmn: List[Plmn]
+        """
+        if plmn is None:
+            raise ValueError("Invalid value for `plmn`, must not be `None`")  # noqa: E501
+
+        self._plmn = plmn
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this PlmnInfo.
+
+
+        :return: The time_stamp of this PlmnInfo.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this PlmnInfo.
+
+
+        :param time_stamp: The time_stamp of this PlmnInfo.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/problem_details.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/problem_details.py
new file mode 100644
index 0000000000000000000000000000000000000000..cbb7c9ddc8cb80f25d316c77dfa97ec95daf083f
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/problem_details.py
@@ -0,0 +1,176 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class ProblemDetails(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, detail: str=None, instance: str=None, status: int=None, title: str=None, type: str=None):  # noqa: E501
+        """ProblemDetails - a model defined in Swagger
+
+        :param detail: The detail of this ProblemDetails.  # noqa: E501
+        :type detail: str
+        :param instance: The instance of this ProblemDetails.  # noqa: E501
+        :type instance: str
+        :param status: The status of this ProblemDetails.  # noqa: E501
+        :type status: int
+        :param title: The title of this ProblemDetails.  # noqa: E501
+        :type title: str
+        :param type: The type of this ProblemDetails.  # noqa: E501
+        :type type: str
+        """
+        self.swagger_types = {
+            'detail': str,
+            'instance': str,
+            'status': int,
+            'title': str,
+            'type': str
+        }
+
+        self.attribute_map = {
+            'detail': 'detail',
+            'instance': 'instance',
+            'status': 'status',
+            'title': 'title',
+            'type': 'type'
+        }
+        self._detail = detail
+        self._instance = instance
+        self._status = status
+        self._title = title
+        self._type = type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ProblemDetails':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ProblemDetails of this ProblemDetails.  # noqa: E501
+        :rtype: ProblemDetails
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def detail(self) -> str:
+        """Gets the detail of this ProblemDetails.
+
+        A human-readable explanation specific to this occurrence of the problem  # noqa: E501
+
+        :return: The detail of this ProblemDetails.
+        :rtype: str
+        """
+        return self._detail
+
+    @detail.setter
+    def detail(self, detail: str):
+        """Sets the detail of this ProblemDetails.
+
+        A human-readable explanation specific to this occurrence of the problem  # noqa: E501
+
+        :param detail: The detail of this ProblemDetails.
+        :type detail: str
+        """
+
+        self._detail = detail
+
+    @property
+    def instance(self) -> str:
+        """Gets the instance of this ProblemDetails.
+
+        A URI reference that identifies the specific occurrence of the problem  # noqa: E501
+
+        :return: The instance of this ProblemDetails.
+        :rtype: str
+        """
+        return self._instance
+
+    @instance.setter
+    def instance(self, instance: str):
+        """Sets the instance of this ProblemDetails.
+
+        A URI reference that identifies the specific occurrence of the problem  # noqa: E501
+
+        :param instance: The instance of this ProblemDetails.
+        :type instance: str
+        """
+
+        self._instance = instance
+
+    @property
+    def status(self) -> int:
+        """Gets the status of this ProblemDetails.
+
+        The HTTP status code for this occurrence of the problem  # noqa: E501
+
+        :return: The status of this ProblemDetails.
+        :rtype: int
+        """
+        return self._status
+
+    @status.setter
+    def status(self, status: int):
+        """Sets the status of this ProblemDetails.
+
+        The HTTP status code for this occurrence of the problem  # noqa: E501
+
+        :param status: The status of this ProblemDetails.
+        :type status: int
+        """
+
+        self._status = status
+
+    @property
+    def title(self) -> str:
+        """Gets the title of this ProblemDetails.
+
+        A short, human-readable summary of the problem type  # noqa: E501
+
+        :return: The title of this ProblemDetails.
+        :rtype: str
+        """
+        return self._title
+
+    @title.setter
+    def title(self, title: str):
+        """Sets the title of this ProblemDetails.
+
+        A short, human-readable summary of the problem type  # noqa: E501
+
+        :param title: The title of this ProblemDetails.
+        :type title: str
+        """
+
+        self._title = title
+
+    @property
+    def type(self) -> str:
+        """Gets the type of this ProblemDetails.
+
+        A URI reference according to IETF RFC 3986 that identifies the problem type  # noqa: E501
+
+        :return: The type of this ProblemDetails.
+        :rtype: str
+        """
+        return self._type
+
+    @type.setter
+    def type(self, type: str):
+        """Sets the type of this ProblemDetails.
+
+        A URI reference according to IETF RFC 3986 that identifies the problem type  # noqa: E501
+
+        :param type: The type of this ProblemDetails.
+        :type type: str
+        """
+
+        self._type = type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..52e4b320241c337b8239f2f74d2fffc34424b04a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification.py
@@ -0,0 +1,235 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.rab_est_notification_erab_qos_parameters import RabEstNotificationErabQosParameters  # noqa: F401,E501
+from swagger_server.models.rab_est_notification_temp_ue_id import RabEstNotificationTempUeId  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabEstNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: Ecgi=None, erab_id: int=None, erab_qos_parameters: RabEstNotificationErabQosParameters=None, notification_type: str=None, temp_ue_id: RabEstNotificationTempUeId=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """RabEstNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this RabEstNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this RabEstNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param erab_id: The erab_id of this RabEstNotification.  # noqa: E501
+        :type erab_id: int
+        :param erab_qos_parameters: The erab_qos_parameters of this RabEstNotification.  # noqa: E501
+        :type erab_qos_parameters: RabEstNotificationErabQosParameters
+        :param notification_type: The notification_type of this RabEstNotification.  # noqa: E501
+        :type notification_type: str
+        :param temp_ue_id: The temp_ue_id of this RabEstNotification.  # noqa: E501
+        :type temp_ue_id: RabEstNotificationTempUeId
+        :param time_stamp: The time_stamp of this RabEstNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': Ecgi,
+            'erab_id': int,
+            'erab_qos_parameters': RabEstNotificationErabQosParameters,
+            'notification_type': str,
+            'temp_ue_id': RabEstNotificationTempUeId,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'erab_id': 'erabId',
+            'erab_qos_parameters': 'erabQosParameters',
+            'notification_type': 'notificationType',
+            'temp_ue_id': 'tempUeId',
+            'time_stamp': 'timeStamp'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._erab_id = erab_id
+        self._erab_qos_parameters = erab_qos_parameters
+        self._notification_type = notification_type
+        self._temp_ue_id = temp_ue_id
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstNotification of this RabEstNotification.  # noqa: E501
+        :rtype: RabEstNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this RabEstNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow.   # noqa: E501
+
+        :return: The associate_id of this RabEstNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this RabEstNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow.   # noqa: E501
+
+        :param associate_id: The associate_id of this RabEstNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this RabEstNotification.
+
+
+        :return: The ecgi of this RabEstNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this RabEstNotification.
+
+
+        :param ecgi: The ecgi of this RabEstNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this RabEstNotification.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this RabEstNotification.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this RabEstNotification.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this RabEstNotification.
+        :type erab_id: int
+        """
+        if erab_id is None:
+            raise ValueError("Invalid value for `erab_id`, must not be `None`")  # noqa: E501
+
+        self._erab_id = erab_id
+
+    @property
+    def erab_qos_parameters(self) -> RabEstNotificationErabQosParameters:
+        """Gets the erab_qos_parameters of this RabEstNotification.
+
+
+        :return: The erab_qos_parameters of this RabEstNotification.
+        :rtype: RabEstNotificationErabQosParameters
+        """
+        return self._erab_qos_parameters
+
+    @erab_qos_parameters.setter
+    def erab_qos_parameters(self, erab_qos_parameters: RabEstNotificationErabQosParameters):
+        """Sets the erab_qos_parameters of this RabEstNotification.
+
+
+        :param erab_qos_parameters: The erab_qos_parameters of this RabEstNotification.
+        :type erab_qos_parameters: RabEstNotificationErabQosParameters
+        """
+
+        self._erab_qos_parameters = erab_qos_parameters
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this RabEstNotification.
+
+        Shall be set to \"RabEstNotification\".  # noqa: E501
+
+        :return: The notification_type of this RabEstNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this RabEstNotification.
+
+        Shall be set to \"RabEstNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this RabEstNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def temp_ue_id(self) -> RabEstNotificationTempUeId:
+        """Gets the temp_ue_id of this RabEstNotification.
+
+
+        :return: The temp_ue_id of this RabEstNotification.
+        :rtype: RabEstNotificationTempUeId
+        """
+        return self._temp_ue_id
+
+    @temp_ue_id.setter
+    def temp_ue_id(self, temp_ue_id: RabEstNotificationTempUeId):
+        """Sets the temp_ue_id of this RabEstNotification.
+
+
+        :param temp_ue_id: The temp_ue_id of this RabEstNotification.
+        :type temp_ue_id: RabEstNotificationTempUeId
+        """
+
+        self._temp_ue_id = temp_ue_id
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this RabEstNotification.
+
+
+        :return: The time_stamp of this RabEstNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this RabEstNotification.
+
+
+        :param time_stamp: The time_stamp of this RabEstNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters.py
new file mode 100644
index 0000000000000000000000000000000000000000..abe9c34c21591160325c04e00bbd88ee8518afb4
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters.py
@@ -0,0 +1,93 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.rab_est_notification_erab_qos_parameters_qos_information import RabEstNotificationErabQosParametersQosInformation  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabEstNotificationErabQosParameters(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, qci: int=None, qos_information: RabEstNotificationErabQosParametersQosInformation=None):  # noqa: E501
+        """RabEstNotificationErabQosParameters - a model defined in Swagger
+
+        :param qci: The qci of this RabEstNotificationErabQosParameters.  # noqa: E501
+        :type qci: int
+        :param qos_information: The qos_information of this RabEstNotificationErabQosParameters.  # noqa: E501
+        :type qos_information: RabEstNotificationErabQosParametersQosInformation
+        """
+        self.swagger_types = {
+            'qci': int,
+            'qos_information': RabEstNotificationErabQosParametersQosInformation
+        }
+
+        self.attribute_map = {
+            'qci': 'qci',
+            'qos_information': 'qosInformation'
+        }
+        self._qci = qci
+        self._qos_information = qos_information
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstNotificationErabQosParameters':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstNotification_erabQosParameters of this RabEstNotificationErabQosParameters.  # noqa: E501
+        :rtype: RabEstNotificationErabQosParameters
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def qci(self) -> int:
+        """Gets the qci of this RabEstNotificationErabQosParameters.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :return: The qci of this RabEstNotificationErabQosParameters.
+        :rtype: int
+        """
+        return self._qci
+
+    @qci.setter
+    def qci(self, qci: int):
+        """Sets the qci of this RabEstNotificationErabQosParameters.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :param qci: The qci of this RabEstNotificationErabQosParameters.
+        :type qci: int
+        """
+        if qci is None:
+            raise ValueError("Invalid value for `qci`, must not be `None`")  # noqa: E501
+
+        self._qci = qci
+
+    @property
+    def qos_information(self) -> RabEstNotificationErabQosParametersQosInformation:
+        """Gets the qos_information of this RabEstNotificationErabQosParameters.
+
+
+        :return: The qos_information of this RabEstNotificationErabQosParameters.
+        :rtype: RabEstNotificationErabQosParametersQosInformation
+        """
+        return self._qos_information
+
+    @qos_information.setter
+    def qos_information(self, qos_information: RabEstNotificationErabQosParametersQosInformation):
+        """Sets the qos_information of this RabEstNotificationErabQosParameters.
+
+
+        :param qos_information: The qos_information of this RabEstNotificationErabQosParameters.
+        :type qos_information: RabEstNotificationErabQosParametersQosInformation
+        """
+
+        self._qos_information = qos_information
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters_qos_information.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters_qos_information.py
new file mode 100644
index 0000000000000000000000000000000000000000..34e36699098c6d49dc3c9f40a5809d4655b7399c
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_erab_qos_parameters_qos_information.py
@@ -0,0 +1,156 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class RabEstNotificationErabQosParametersQosInformation(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, erab_gbr_dl: int=None, erab_gbr_ul: int=None, erab_mbr_dl: int=None, erab_mbr_ul: int=None):  # noqa: E501
+        """RabEstNotificationErabQosParametersQosInformation - a model defined in Swagger
+
+        :param erab_gbr_dl: The erab_gbr_dl of this RabEstNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_gbr_dl: int
+        :param erab_gbr_ul: The erab_gbr_ul of this RabEstNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_gbr_ul: int
+        :param erab_mbr_dl: The erab_mbr_dl of this RabEstNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_mbr_dl: int
+        :param erab_mbr_ul: The erab_mbr_ul of this RabEstNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_mbr_ul: int
+        """
+        self.swagger_types = {
+            'erab_gbr_dl': int,
+            'erab_gbr_ul': int,
+            'erab_mbr_dl': int,
+            'erab_mbr_ul': int
+        }
+
+        self.attribute_map = {
+            'erab_gbr_dl': 'erabGbrDl',
+            'erab_gbr_ul': 'erabGbrUl',
+            'erab_mbr_dl': 'erabMbrDl',
+            'erab_mbr_ul': 'erabMbrUl'
+        }
+        self._erab_gbr_dl = erab_gbr_dl
+        self._erab_gbr_ul = erab_gbr_ul
+        self._erab_mbr_dl = erab_mbr_dl
+        self._erab_mbr_ul = erab_mbr_ul
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstNotificationErabQosParametersQosInformation':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstNotification_erabQosParameters_qosInformation of this RabEstNotificationErabQosParametersQosInformation.  # noqa: E501
+        :rtype: RabEstNotificationErabQosParametersQosInformation
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def erab_gbr_dl(self) -> int:
+        """Gets the erab_gbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_gbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_gbr_dl
+
+    @erab_gbr_dl.setter
+    def erab_gbr_dl(self, erab_gbr_dl: int):
+        """Sets the erab_gbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_gbr_dl: The erab_gbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+        :type erab_gbr_dl: int
+        """
+        if erab_gbr_dl is None:
+            raise ValueError("Invalid value for `erab_gbr_dl`, must not be `None`")  # noqa: E501
+
+        self._erab_gbr_dl = erab_gbr_dl
+
+    @property
+    def erab_gbr_ul(self) -> int:
+        """Gets the erab_gbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_gbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_gbr_ul
+
+    @erab_gbr_ul.setter
+    def erab_gbr_ul(self, erab_gbr_ul: int):
+        """Sets the erab_gbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_gbr_ul: The erab_gbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+        :type erab_gbr_ul: int
+        """
+        if erab_gbr_ul is None:
+            raise ValueError("Invalid value for `erab_gbr_ul`, must not be `None`")  # noqa: E501
+
+        self._erab_gbr_ul = erab_gbr_ul
+
+    @property
+    def erab_mbr_dl(self) -> int:
+        """Gets the erab_mbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_mbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_mbr_dl
+
+    @erab_mbr_dl.setter
+    def erab_mbr_dl(self, erab_mbr_dl: int):
+        """Sets the erab_mbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_mbr_dl: The erab_mbr_dl of this RabEstNotificationErabQosParametersQosInformation.
+        :type erab_mbr_dl: int
+        """
+        if erab_mbr_dl is None:
+            raise ValueError("Invalid value for `erab_mbr_dl`, must not be `None`")  # noqa: E501
+
+        self._erab_mbr_dl = erab_mbr_dl
+
+    @property
+    def erab_mbr_ul(self) -> int:
+        """Gets the erab_mbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_mbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_mbr_ul
+
+    @erab_mbr_ul.setter
+    def erab_mbr_ul(self, erab_mbr_ul: int):
+        """Sets the erab_mbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_mbr_ul: The erab_mbr_ul of this RabEstNotificationErabQosParametersQosInformation.
+        :type erab_mbr_ul: int
+        """
+        if erab_mbr_ul is None:
+            raise ValueError("Invalid value for `erab_mbr_ul`, must not be `None`")  # noqa: E501
+
+        self._erab_mbr_ul = erab_mbr_ul
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_temp_ue_id.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_temp_ue_id.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b819172f5edf2cea1ccb5c9aa22e4e59c06ce09
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_notification_temp_ue_id.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class RabEstNotificationTempUeId(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, mmec: str=None, mtmsi: str=None):  # noqa: E501
+        """RabEstNotificationTempUeId - a model defined in Swagger
+
+        :param mmec: The mmec of this RabEstNotificationTempUeId.  # noqa: E501
+        :type mmec: str
+        :param mtmsi: The mtmsi of this RabEstNotificationTempUeId.  # noqa: E501
+        :type mtmsi: str
+        """
+        self.swagger_types = {
+            'mmec': str,
+            'mtmsi': str
+        }
+
+        self.attribute_map = {
+            'mmec': 'mmec',
+            'mtmsi': 'mtmsi'
+        }
+        self._mmec = mmec
+        self._mtmsi = mtmsi
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstNotificationTempUeId':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstNotification_tempUeId of this RabEstNotificationTempUeId.  # noqa: E501
+        :rtype: RabEstNotificationTempUeId
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def mmec(self) -> str:
+        """Gets the mmec of this RabEstNotificationTempUeId.
+
+        MMEC as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mmec of this RabEstNotificationTempUeId.
+        :rtype: str
+        """
+        return self._mmec
+
+    @mmec.setter
+    def mmec(self, mmec: str):
+        """Sets the mmec of this RabEstNotificationTempUeId.
+
+        MMEC as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mmec: The mmec of this RabEstNotificationTempUeId.
+        :type mmec: str
+        """
+        if mmec is None:
+            raise ValueError("Invalid value for `mmec`, must not be `None`")  # noqa: E501
+
+        self._mmec = mmec
+
+    @property
+    def mtmsi(self) -> str:
+        """Gets the mtmsi of this RabEstNotificationTempUeId.
+
+        M-TMSI as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The mtmsi of this RabEstNotificationTempUeId.
+        :rtype: str
+        """
+        return self._mtmsi
+
+    @mtmsi.setter
+    def mtmsi(self, mtmsi: str):
+        """Sets the mtmsi of this RabEstNotificationTempUeId.
+
+        M-TMSI as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param mtmsi: The mtmsi of this RabEstNotificationTempUeId.
+        :type mtmsi: str
+        """
+        if mtmsi is None:
+            raise ValueError("Invalid value for `mtmsi`, must not be `None`")  # noqa: E501
+
+        self._mtmsi = mtmsi
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ab918588d06a9d37acce2f40887b2c73571795b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.rab_est_subscription_filter_criteria_qci import RabEstSubscriptionFilterCriteriaQci  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabEstSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_qci: RabEstSubscriptionFilterCriteriaQci=None, subscription_type: str=None):  # noqa: E501
+        """RabEstSubscription - a model defined in Swagger
+
+        :param links: The links of this RabEstSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this RabEstSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this RabEstSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_qci: The filter_criteria_qci of this RabEstSubscription.  # noqa: E501
+        :type filter_criteria_qci: RabEstSubscriptionFilterCriteriaQci
+        :param subscription_type: The subscription_type of this RabEstSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_qci': RabEstSubscriptionFilterCriteriaQci,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_qci': 'filterCriteriaQci',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_qci = filter_criteria_qci
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstSubscription of this RabEstSubscription.  # noqa: E501
+        :rtype: RabEstSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this RabEstSubscription.
+
+
+        :return: The links of this RabEstSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this RabEstSubscription.
+
+
+        :param links: The links of this RabEstSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this RabEstSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this RabEstSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this RabEstSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this RabEstSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this RabEstSubscription.
+
+
+        :return: The expiry_deadline of this RabEstSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this RabEstSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this RabEstSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_qci(self) -> RabEstSubscriptionFilterCriteriaQci:
+        """Gets the filter_criteria_qci of this RabEstSubscription.
+
+
+        :return: The filter_criteria_qci of this RabEstSubscription.
+        :rtype: RabEstSubscriptionFilterCriteriaQci
+        """
+        return self._filter_criteria_qci
+
+    @filter_criteria_qci.setter
+    def filter_criteria_qci(self, filter_criteria_qci: RabEstSubscriptionFilterCriteriaQci):
+        """Sets the filter_criteria_qci of this RabEstSubscription.
+
+
+        :param filter_criteria_qci: The filter_criteria_qci of this RabEstSubscription.
+        :type filter_criteria_qci: RabEstSubscriptionFilterCriteriaQci
+        """
+        if filter_criteria_qci is None:
+            raise ValueError("Invalid value for `filter_criteria_qci`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_qci = filter_criteria_qci
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this RabEstSubscription.
+
+        Shall be set to \"RabEstSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this RabEstSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this RabEstSubscription.
+
+        Shall be set to \"RabEstSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this RabEstSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription_filter_criteria_qci.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription_filter_criteria_qci.py
new file mode 100644
index 0000000000000000000000000000000000000000..563c591ae3e171d077847458e9e805ae6e457329
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_est_subscription_filter_criteria_qci.py
@@ -0,0 +1,123 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabEstSubscriptionFilterCriteriaQci(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, ecgi: List[Ecgi]=None, qci: int=None):  # noqa: E501
+        """RabEstSubscriptionFilterCriteriaQci - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this RabEstSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type app_instance_id: str
+        :param ecgi: The ecgi of this RabEstSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param qci: The qci of this RabEstSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type qci: int
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'ecgi': List[Ecgi],
+            'qci': int
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'ecgi': 'ecgi',
+            'qci': 'qci'
+        }
+        self._app_instance_id = app_instance_id
+        self._ecgi = ecgi
+        self._qci = qci
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabEstSubscriptionFilterCriteriaQci':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabEstSubscription_filterCriteriaQci of this RabEstSubscriptionFilterCriteriaQci.  # noqa: E501
+        :rtype: RabEstSubscriptionFilterCriteriaQci
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this RabEstSubscriptionFilterCriteriaQci.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this RabEstSubscriptionFilterCriteriaQci.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this RabEstSubscriptionFilterCriteriaQci.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this RabEstSubscriptionFilterCriteriaQci.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this RabEstSubscriptionFilterCriteriaQci.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this RabEstSubscriptionFilterCriteriaQci.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this RabEstSubscriptionFilterCriteriaQci.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this RabEstSubscriptionFilterCriteriaQci.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def qci(self) -> int:
+        """Gets the qci of this RabEstSubscriptionFilterCriteriaQci.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :return: The qci of this RabEstSubscriptionFilterCriteriaQci.
+        :rtype: int
+        """
+        return self._qci
+
+    @qci.setter
+    def qci(self, qci: int):
+        """Sets the qci of this RabEstSubscriptionFilterCriteriaQci.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :param qci: The qci of this RabEstSubscriptionFilterCriteriaQci.
+        :type qci: int
+        """
+        if qci is None:
+            raise ValueError("Invalid value for `qci`, must not be `None`")  # noqa: E501
+
+        self._qci = qci
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..c5eab7e3e815ff036fbc47f7e24135b518fad605
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info.py
@@ -0,0 +1,152 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.rab_info_cell_user_info import RabInfoCellUserInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, cell_user_info: List[RabInfoCellUserInfo]=None, request_id: str=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """RabInfo - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this RabInfo.  # noqa: E501
+        :type app_instance_id: str
+        :param cell_user_info: The cell_user_info of this RabInfo.  # noqa: E501
+        :type cell_user_info: List[RabInfoCellUserInfo]
+        :param request_id: The request_id of this RabInfo.  # noqa: E501
+        :type request_id: str
+        :param time_stamp: The time_stamp of this RabInfo.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'cell_user_info': List[RabInfoCellUserInfo],
+            'request_id': str,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'cell_user_info': 'cellUserInfo',
+            'request_id': 'requestId',
+            'time_stamp': 'timeStamp'
+        }
+        self._app_instance_id = app_instance_id
+        self._cell_user_info = cell_user_info
+        self._request_id = request_id
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabInfo of this RabInfo.  # noqa: E501
+        :rtype: RabInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this RabInfo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this RabInfo.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this RabInfo.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this RabInfo.
+        :type app_instance_id: str
+        """
+        if app_instance_id is None:
+            raise ValueError("Invalid value for `app_instance_id`, must not be `None`")  # noqa: E501
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def cell_user_info(self) -> List[RabInfoCellUserInfo]:
+        """Gets the cell_user_info of this RabInfo.
+
+        The information on users per cell as defined below.  # noqa: E501
+
+        :return: The cell_user_info of this RabInfo.
+        :rtype: List[RabInfoCellUserInfo]
+        """
+        return self._cell_user_info
+
+    @cell_user_info.setter
+    def cell_user_info(self, cell_user_info: List[RabInfoCellUserInfo]):
+        """Sets the cell_user_info of this RabInfo.
+
+        The information on users per cell as defined below.  # noqa: E501
+
+        :param cell_user_info: The cell_user_info of this RabInfo.
+        :type cell_user_info: List[RabInfoCellUserInfo]
+        """
+
+        self._cell_user_info = cell_user_info
+
+    @property
+    def request_id(self) -> str:
+        """Gets the request_id of this RabInfo.
+
+        Unique identifier allocated by the service consumer for the RAB Information request.  # noqa: E501
+
+        :return: The request_id of this RabInfo.
+        :rtype: str
+        """
+        return self._request_id
+
+    @request_id.setter
+    def request_id(self, request_id: str):
+        """Sets the request_id of this RabInfo.
+
+        Unique identifier allocated by the service consumer for the RAB Information request.  # noqa: E501
+
+        :param request_id: The request_id of this RabInfo.
+        :type request_id: str
+        """
+        if request_id is None:
+            raise ValueError("Invalid value for `request_id`, must not be `None`")  # noqa: E501
+
+        self._request_id = request_id
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this RabInfo.
+
+
+        :return: The time_stamp of this RabInfo.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this RabInfo.
+
+
+        :param time_stamp: The time_stamp of this RabInfo.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_cell_user_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_cell_user_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..597a79be175371b5d990a07f701600fb7764bd19
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_cell_user_info.py
@@ -0,0 +1,92 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.rab_info_ue_info import RabInfoUeInfo  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabInfoCellUserInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ecgi: Ecgi=None, ue_info: List[RabInfoUeInfo]=None):  # noqa: E501
+        """RabInfoCellUserInfo - a model defined in Swagger
+
+        :param ecgi: The ecgi of this RabInfoCellUserInfo.  # noqa: E501
+        :type ecgi: Ecgi
+        :param ue_info: The ue_info of this RabInfoCellUserInfo.  # noqa: E501
+        :type ue_info: List[RabInfoUeInfo]
+        """
+        self.swagger_types = {
+            'ecgi': Ecgi,
+            'ue_info': List[RabInfoUeInfo]
+        }
+
+        self.attribute_map = {
+            'ecgi': 'ecgi',
+            'ue_info': 'ueInfo'
+        }
+        self._ecgi = ecgi
+        self._ue_info = ue_info
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabInfoCellUserInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabInfo_cellUserInfo of this RabInfoCellUserInfo.  # noqa: E501
+        :rtype: RabInfoCellUserInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this RabInfoCellUserInfo.
+
+
+        :return: The ecgi of this RabInfoCellUserInfo.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this RabInfoCellUserInfo.
+
+
+        :param ecgi: The ecgi of this RabInfoCellUserInfo.
+        :type ecgi: Ecgi
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def ue_info(self) -> List[RabInfoUeInfo]:
+        """Gets the ue_info of this RabInfoCellUserInfo.
+
+        Information on UEs in the specific cell as defined below.  # noqa: E501
+
+        :return: The ue_info of this RabInfoCellUserInfo.
+        :rtype: List[RabInfoUeInfo]
+        """
+        return self._ue_info
+
+    @ue_info.setter
+    def ue_info(self, ue_info: List[RabInfoUeInfo]):
+        """Sets the ue_info of this RabInfoCellUserInfo.
+
+        Information on UEs in the specific cell as defined below.  # noqa: E501
+
+        :param ue_info: The ue_info of this RabInfoCellUserInfo.
+        :type ue_info: List[RabInfoUeInfo]
+        """
+
+        self._ue_info = ue_info
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_erab_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_erab_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..1c19ab6b92a53bdcbfa840b69025ca66625f9c7c
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_erab_info.py
@@ -0,0 +1,91 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.rab_est_notification_erab_qos_parameters import RabEstNotificationErabQosParameters  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabInfoErabInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, erab_id: int=None, erab_qos_parameters: RabEstNotificationErabQosParameters=None):  # noqa: E501
+        """RabInfoErabInfo - a model defined in Swagger
+
+        :param erab_id: The erab_id of this RabInfoErabInfo.  # noqa: E501
+        :type erab_id: int
+        :param erab_qos_parameters: The erab_qos_parameters of this RabInfoErabInfo.  # noqa: E501
+        :type erab_qos_parameters: RabEstNotificationErabQosParameters
+        """
+        self.swagger_types = {
+            'erab_id': int,
+            'erab_qos_parameters': RabEstNotificationErabQosParameters
+        }
+
+        self.attribute_map = {
+            'erab_id': 'erabId',
+            'erab_qos_parameters': 'erabQosParameters'
+        }
+        self._erab_id = erab_id
+        self._erab_qos_parameters = erab_qos_parameters
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabInfoErabInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabInfo_erabInfo of this RabInfoErabInfo.  # noqa: E501
+        :rtype: RabInfoErabInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this RabInfoErabInfo.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this RabInfoErabInfo.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this RabInfoErabInfo.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this RabInfoErabInfo.
+        :type erab_id: int
+        """
+
+        self._erab_id = erab_id
+
+    @property
+    def erab_qos_parameters(self) -> RabEstNotificationErabQosParameters:
+        """Gets the erab_qos_parameters of this RabInfoErabInfo.
+
+
+        :return: The erab_qos_parameters of this RabInfoErabInfo.
+        :rtype: RabEstNotificationErabQosParameters
+        """
+        return self._erab_qos_parameters
+
+    @erab_qos_parameters.setter
+    def erab_qos_parameters(self, erab_qos_parameters: RabEstNotificationErabQosParameters):
+        """Sets the erab_qos_parameters of this RabInfoErabInfo.
+
+
+        :param erab_qos_parameters: The erab_qos_parameters of this RabInfoErabInfo.
+        :type erab_qos_parameters: RabEstNotificationErabQosParameters
+        """
+
+        self._erab_qos_parameters = erab_qos_parameters
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_ue_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_ue_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1e70527f2c119d382d90bbabfde4ca536fb1ee5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_info_ue_info.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.rab_info_erab_info import RabInfoErabInfo  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabInfoUeInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, erab_info: List[RabInfoErabInfo]=None):  # noqa: E501
+        """RabInfoUeInfo - a model defined in Swagger
+
+        :param associate_id: The associate_id of this RabInfoUeInfo.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param erab_info: The erab_info of this RabInfoUeInfo.  # noqa: E501
+        :type erab_info: List[RabInfoErabInfo]
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'erab_info': List[RabInfoErabInfo]
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'erab_info': 'erabInfo'
+        }
+        self._associate_id = associate_id
+        self._erab_info = erab_info
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabInfoUeInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabInfo_ueInfo of this RabInfoUeInfo.  # noqa: E501
+        :rtype: RabInfoUeInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this RabInfoUeInfo.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this RabInfoUeInfo.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this RabInfoUeInfo.
+
+        0 to N identifiers to associate the event for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this RabInfoUeInfo.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def erab_info(self) -> List[RabInfoErabInfo]:
+        """Gets the erab_info of this RabInfoUeInfo.
+
+        Information on E-RAB as defined below.  # noqa: E501
+
+        :return: The erab_info of this RabInfoUeInfo.
+        :rtype: List[RabInfoErabInfo]
+        """
+        return self._erab_info
+
+    @erab_info.setter
+    def erab_info(self, erab_info: List[RabInfoErabInfo]):
+        """Sets the erab_info of this RabInfoUeInfo.
+
+        Information on E-RAB as defined below.  # noqa: E501
+
+        :param erab_info: The erab_info of this RabInfoUeInfo.
+        :type erab_info: List[RabInfoErabInfo]
+        """
+
+        self._erab_info = erab_info
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..d6ae839a6970eb3a8393e1ac58d30a9bbf781210
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification.py
@@ -0,0 +1,208 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.rab_mod_notification_erab_qos_parameters import RabModNotificationErabQosParameters  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabModNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: Ecgi=None, erab_id: int=None, erab_qos_parameters: RabModNotificationErabQosParameters=None, notification_type: str=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """RabModNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this RabModNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this RabModNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param erab_id: The erab_id of this RabModNotification.  # noqa: E501
+        :type erab_id: int
+        :param erab_qos_parameters: The erab_qos_parameters of this RabModNotification.  # noqa: E501
+        :type erab_qos_parameters: RabModNotificationErabQosParameters
+        :param notification_type: The notification_type of this RabModNotification.  # noqa: E501
+        :type notification_type: str
+        :param time_stamp: The time_stamp of this RabModNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': Ecgi,
+            'erab_id': int,
+            'erab_qos_parameters': RabModNotificationErabQosParameters,
+            'notification_type': str,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'erab_id': 'erabId',
+            'erab_qos_parameters': 'erabQosParameters',
+            'notification_type': 'notificationType',
+            'time_stamp': 'timeStamp'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._erab_id = erab_id
+        self._erab_qos_parameters = erab_qos_parameters
+        self._notification_type = notification_type
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabModNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabModNotification of this RabModNotification.  # noqa: E501
+        :rtype: RabModNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this RabModNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow.   # noqa: E501
+
+        :return: The associate_id of this RabModNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this RabModNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow.   # noqa: E501
+
+        :param associate_id: The associate_id of this RabModNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this RabModNotification.
+
+
+        :return: The ecgi of this RabModNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this RabModNotification.
+
+
+        :param ecgi: The ecgi of this RabModNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this RabModNotification.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this RabModNotification.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this RabModNotification.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this RabModNotification.
+        :type erab_id: int
+        """
+        if erab_id is None:
+            raise ValueError("Invalid value for `erab_id`, must not be `None`")  # noqa: E501
+
+        self._erab_id = erab_id
+
+    @property
+    def erab_qos_parameters(self) -> RabModNotificationErabQosParameters:
+        """Gets the erab_qos_parameters of this RabModNotification.
+
+
+        :return: The erab_qos_parameters of this RabModNotification.
+        :rtype: RabModNotificationErabQosParameters
+        """
+        return self._erab_qos_parameters
+
+    @erab_qos_parameters.setter
+    def erab_qos_parameters(self, erab_qos_parameters: RabModNotificationErabQosParameters):
+        """Sets the erab_qos_parameters of this RabModNotification.
+
+
+        :param erab_qos_parameters: The erab_qos_parameters of this RabModNotification.
+        :type erab_qos_parameters: RabModNotificationErabQosParameters
+        """
+
+        self._erab_qos_parameters = erab_qos_parameters
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this RabModNotification.
+
+        Shall be set to \"RabModNotification\".  # noqa: E501
+
+        :return: The notification_type of this RabModNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this RabModNotification.
+
+        Shall be set to \"RabModNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this RabModNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this RabModNotification.
+
+
+        :return: The time_stamp of this RabModNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this RabModNotification.
+
+
+        :param time_stamp: The time_stamp of this RabModNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters.py
new file mode 100644
index 0000000000000000000000000000000000000000..43c3ad391f2413d435d87aaf347b8fd694045b89
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters.py
@@ -0,0 +1,93 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.rab_mod_notification_erab_qos_parameters_qos_information import RabModNotificationErabQosParametersQosInformation  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabModNotificationErabQosParameters(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, qci: int=None, qos_information: RabModNotificationErabQosParametersQosInformation=None):  # noqa: E501
+        """RabModNotificationErabQosParameters - a model defined in Swagger
+
+        :param qci: The qci of this RabModNotificationErabQosParameters.  # noqa: E501
+        :type qci: int
+        :param qos_information: The qos_information of this RabModNotificationErabQosParameters.  # noqa: E501
+        :type qos_information: RabModNotificationErabQosParametersQosInformation
+        """
+        self.swagger_types = {
+            'qci': int,
+            'qos_information': RabModNotificationErabQosParametersQosInformation
+        }
+
+        self.attribute_map = {
+            'qci': 'qci',
+            'qos_information': 'qosInformation'
+        }
+        self._qci = qci
+        self._qos_information = qos_information
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabModNotificationErabQosParameters':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabModNotification_erabQosParameters of this RabModNotificationErabQosParameters.  # noqa: E501
+        :rtype: RabModNotificationErabQosParameters
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def qci(self) -> int:
+        """Gets the qci of this RabModNotificationErabQosParameters.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :return: The qci of this RabModNotificationErabQosParameters.
+        :rtype: int
+        """
+        return self._qci
+
+    @qci.setter
+    def qci(self, qci: int):
+        """Sets the qci of this RabModNotificationErabQosParameters.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :param qci: The qci of this RabModNotificationErabQosParameters.
+        :type qci: int
+        """
+        if qci is None:
+            raise ValueError("Invalid value for `qci`, must not be `None`")  # noqa: E501
+
+        self._qci = qci
+
+    @property
+    def qos_information(self) -> RabModNotificationErabQosParametersQosInformation:
+        """Gets the qos_information of this RabModNotificationErabQosParameters.
+
+
+        :return: The qos_information of this RabModNotificationErabQosParameters.
+        :rtype: RabModNotificationErabQosParametersQosInformation
+        """
+        return self._qos_information
+
+    @qos_information.setter
+    def qos_information(self, qos_information: RabModNotificationErabQosParametersQosInformation):
+        """Sets the qos_information of this RabModNotificationErabQosParameters.
+
+
+        :param qos_information: The qos_information of this RabModNotificationErabQosParameters.
+        :type qos_information: RabModNotificationErabQosParametersQosInformation
+        """
+
+        self._qos_information = qos_information
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters_qos_information.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters_qos_information.py
new file mode 100644
index 0000000000000000000000000000000000000000..103239a517e638c4e3c0e12b4ba684c1f5f5ea06
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_notification_erab_qos_parameters_qos_information.py
@@ -0,0 +1,156 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class RabModNotificationErabQosParametersQosInformation(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, erab_gbr_dl: int=None, erab_gbr_ul: int=None, erab_mbr_dl: int=None, erab_mbr_ul: int=None):  # noqa: E501
+        """RabModNotificationErabQosParametersQosInformation - a model defined in Swagger
+
+        :param erab_gbr_dl: The erab_gbr_dl of this RabModNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_gbr_dl: int
+        :param erab_gbr_ul: The erab_gbr_ul of this RabModNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_gbr_ul: int
+        :param erab_mbr_dl: The erab_mbr_dl of this RabModNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_mbr_dl: int
+        :param erab_mbr_ul: The erab_mbr_ul of this RabModNotificationErabQosParametersQosInformation.  # noqa: E501
+        :type erab_mbr_ul: int
+        """
+        self.swagger_types = {
+            'erab_gbr_dl': int,
+            'erab_gbr_ul': int,
+            'erab_mbr_dl': int,
+            'erab_mbr_ul': int
+        }
+
+        self.attribute_map = {
+            'erab_gbr_dl': 'erabGbrDl',
+            'erab_gbr_ul': 'erabGbrUl',
+            'erab_mbr_dl': 'erabMbrDl',
+            'erab_mbr_ul': 'erabMbrUl'
+        }
+        self._erab_gbr_dl = erab_gbr_dl
+        self._erab_gbr_ul = erab_gbr_ul
+        self._erab_mbr_dl = erab_mbr_dl
+        self._erab_mbr_ul = erab_mbr_ul
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabModNotificationErabQosParametersQosInformation':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabModNotification_erabQosParameters_qosInformation of this RabModNotificationErabQosParametersQosInformation.  # noqa: E501
+        :rtype: RabModNotificationErabQosParametersQosInformation
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def erab_gbr_dl(self) -> int:
+        """Gets the erab_gbr_dl of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_gbr_dl of this RabModNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_gbr_dl
+
+    @erab_gbr_dl.setter
+    def erab_gbr_dl(self, erab_gbr_dl: int):
+        """Sets the erab_gbr_dl of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_gbr_dl: The erab_gbr_dl of this RabModNotificationErabQosParametersQosInformation.
+        :type erab_gbr_dl: int
+        """
+        if erab_gbr_dl is None:
+            raise ValueError("Invalid value for `erab_gbr_dl`, must not be `None`")  # noqa: E501
+
+        self._erab_gbr_dl = erab_gbr_dl
+
+    @property
+    def erab_gbr_ul(self) -> int:
+        """Gets the erab_gbr_ul of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_gbr_ul of this RabModNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_gbr_ul
+
+    @erab_gbr_ul.setter
+    def erab_gbr_ul(self, erab_gbr_ul: int):
+        """Sets the erab_gbr_ul of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_gbr_ul: The erab_gbr_ul of this RabModNotificationErabQosParametersQosInformation.
+        :type erab_gbr_ul: int
+        """
+        if erab_gbr_ul is None:
+            raise ValueError("Invalid value for `erab_gbr_ul`, must not be `None`")  # noqa: E501
+
+        self._erab_gbr_ul = erab_gbr_ul
+
+    @property
+    def erab_mbr_dl(self) -> int:
+        """Gets the erab_mbr_dl of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_mbr_dl of this RabModNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_mbr_dl
+
+    @erab_mbr_dl.setter
+    def erab_mbr_dl(self, erab_mbr_dl: int):
+        """Sets the erab_mbr_dl of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_mbr_dl: The erab_mbr_dl of this RabModNotificationErabQosParametersQosInformation.
+        :type erab_mbr_dl: int
+        """
+        if erab_mbr_dl is None:
+            raise ValueError("Invalid value for `erab_mbr_dl`, must not be `None`")  # noqa: E501
+
+        self._erab_mbr_dl = erab_mbr_dl
+
+    @property
+    def erab_mbr_ul(self) -> int:
+        """Gets the erab_mbr_ul of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :return: The erab_mbr_ul of this RabModNotificationErabQosParametersQosInformation.
+        :rtype: int
+        """
+        return self._erab_mbr_ul
+
+    @erab_mbr_ul.setter
+    def erab_mbr_ul(self, erab_mbr_ul: int):
+        """Sets the erab_mbr_ul of this RabModNotificationErabQosParametersQosInformation.
+
+        This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.  # noqa: E501
+
+        :param erab_mbr_ul: The erab_mbr_ul of this RabModNotificationErabQosParametersQosInformation.
+        :type erab_mbr_ul: int
+        """
+        if erab_mbr_ul is None:
+            raise ValueError("Invalid value for `erab_mbr_ul`, must not be `None`")  # noqa: E501
+
+        self._erab_mbr_ul = erab_mbr_ul
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..4419251299b2d0856ad970c7be370820b39e918b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.rab_mod_subscription_filter_criteria_qci import RabModSubscriptionFilterCriteriaQci  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabModSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_qci: RabModSubscriptionFilterCriteriaQci=None, subscription_type: str=None):  # noqa: E501
+        """RabModSubscription - a model defined in Swagger
+
+        :param links: The links of this RabModSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this RabModSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this RabModSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_qci: The filter_criteria_qci of this RabModSubscription.  # noqa: E501
+        :type filter_criteria_qci: RabModSubscriptionFilterCriteriaQci
+        :param subscription_type: The subscription_type of this RabModSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_qci': RabModSubscriptionFilterCriteriaQci,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_qci': 'filterCriteriaQci',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_qci = filter_criteria_qci
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabModSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabModSubscription of this RabModSubscription.  # noqa: E501
+        :rtype: RabModSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this RabModSubscription.
+
+
+        :return: The links of this RabModSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this RabModSubscription.
+
+
+        :param links: The links of this RabModSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this RabModSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this RabModSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this RabModSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this RabModSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this RabModSubscription.
+
+
+        :return: The expiry_deadline of this RabModSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this RabModSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this RabModSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_qci(self) -> RabModSubscriptionFilterCriteriaQci:
+        """Gets the filter_criteria_qci of this RabModSubscription.
+
+
+        :return: The filter_criteria_qci of this RabModSubscription.
+        :rtype: RabModSubscriptionFilterCriteriaQci
+        """
+        return self._filter_criteria_qci
+
+    @filter_criteria_qci.setter
+    def filter_criteria_qci(self, filter_criteria_qci: RabModSubscriptionFilterCriteriaQci):
+        """Sets the filter_criteria_qci of this RabModSubscription.
+
+
+        :param filter_criteria_qci: The filter_criteria_qci of this RabModSubscription.
+        :type filter_criteria_qci: RabModSubscriptionFilterCriteriaQci
+        """
+        if filter_criteria_qci is None:
+            raise ValueError("Invalid value for `filter_criteria_qci`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_qci = filter_criteria_qci
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this RabModSubscription.
+
+        Shall be set to \"RabModSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this RabModSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this RabModSubscription.
+
+        Shall be set to \"RabModSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this RabModSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription_filter_criteria_qci.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription_filter_criteria_qci.py
new file mode 100644
index 0000000000000000000000000000000000000000..3d8e5107ca200cd5451a2edb244dde713ed501b5
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_mod_subscription_filter_criteria_qci.py
@@ -0,0 +1,153 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabModSubscriptionFilterCriteriaQci(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, app_instance_id: str=None, ecgi: List[Ecgi]=None, erab_id: int=None, qci: int=None):  # noqa: E501
+        """RabModSubscriptionFilterCriteriaQci - a model defined in Swagger
+
+        :param app_instance_id: The app_instance_id of this RabModSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type app_instance_id: str
+        :param ecgi: The ecgi of this RabModSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param erab_id: The erab_id of this RabModSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type erab_id: int
+        :param qci: The qci of this RabModSubscriptionFilterCriteriaQci.  # noqa: E501
+        :type qci: int
+        """
+        self.swagger_types = {
+            'app_instance_id': str,
+            'ecgi': List[Ecgi],
+            'erab_id': int,
+            'qci': int
+        }
+
+        self.attribute_map = {
+            'app_instance_id': 'appInstanceId',
+            'ecgi': 'ecgi',
+            'erab_id': 'erabId',
+            'qci': 'qci'
+        }
+        self._app_instance_id = app_instance_id
+        self._ecgi = ecgi
+        self._erab_id = erab_id
+        self._qci = qci
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabModSubscriptionFilterCriteriaQci':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabModSubscription_filterCriteriaQci of this RabModSubscriptionFilterCriteriaQci.  # noqa: E501
+        :rtype: RabModSubscriptionFilterCriteriaQci
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def app_instance_id(self) -> str:
+        """Gets the app_instance_id of this RabModSubscriptionFilterCriteriaQci.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :return: The app_instance_id of this RabModSubscriptionFilterCriteriaQci.
+        :rtype: str
+        """
+        return self._app_instance_id
+
+    @app_instance_id.setter
+    def app_instance_id(self, app_instance_id: str):
+        """Sets the app_instance_id of this RabModSubscriptionFilterCriteriaQci.
+
+        Unique identifier for the MEC application instance.  # noqa: E501
+
+        :param app_instance_id: The app_instance_id of this RabModSubscriptionFilterCriteriaQci.
+        :type app_instance_id: str
+        """
+
+        self._app_instance_id = app_instance_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this RabModSubscriptionFilterCriteriaQci.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this RabModSubscriptionFilterCriteriaQci.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this RabModSubscriptionFilterCriteriaQci.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this RabModSubscriptionFilterCriteriaQci.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this RabModSubscriptionFilterCriteriaQci.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this RabModSubscriptionFilterCriteriaQci.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this RabModSubscriptionFilterCriteriaQci.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this RabModSubscriptionFilterCriteriaQci.
+        :type erab_id: int
+        """
+        if erab_id is None:
+            raise ValueError("Invalid value for `erab_id`, must not be `None`")  # noqa: E501
+
+        self._erab_id = erab_id
+
+    @property
+    def qci(self) -> int:
+        """Gets the qci of this RabModSubscriptionFilterCriteriaQci.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :return: The qci of this RabModSubscriptionFilterCriteriaQci.
+        :rtype: int
+        """
+        return self._qci
+
+    @qci.setter
+    def qci(self, qci: int):
+        """Sets the qci of this RabModSubscriptionFilterCriteriaQci.
+
+        QoS Class Identifier as defined in ETSI TS 123 401 [i.4].  # noqa: E501
+
+        :param qci: The qci of this RabModSubscriptionFilterCriteriaQci.
+        :type qci: int
+        """
+        if qci is None:
+            raise ValueError("Invalid value for `qci`, must not be `None`")  # noqa: E501
+
+        self._qci = qci
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..b2b02730e43c94d49e0b7166097ccac9f346e721
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification.py
@@ -0,0 +1,180 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.rab_rel_notification_erab_release_info import RabRelNotificationErabReleaseInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabRelNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: Ecgi=None, erab_release_info: RabRelNotificationErabReleaseInfo=None, notification_type: str=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """RabRelNotification - a model defined in Swagger
+
+        :param associate_id: The associate_id of this RabRelNotification.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this RabRelNotification.  # noqa: E501
+        :type ecgi: Ecgi
+        :param erab_release_info: The erab_release_info of this RabRelNotification.  # noqa: E501
+        :type erab_release_info: RabRelNotificationErabReleaseInfo
+        :param notification_type: The notification_type of this RabRelNotification.  # noqa: E501
+        :type notification_type: str
+        :param time_stamp: The time_stamp of this RabRelNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': Ecgi,
+            'erab_release_info': RabRelNotificationErabReleaseInfo,
+            'notification_type': str,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'erab_release_info': 'erabReleaseInfo',
+            'notification_type': 'notificationType',
+            'time_stamp': 'timeStamp'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._erab_release_info = erab_release_info
+        self._notification_type = notification_type
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabRelNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabRelNotification of this RabRelNotification.  # noqa: E501
+        :rtype: RabRelNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this RabRelNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow as defined below.  # noqa: E501
+
+        :return: The associate_id of this RabRelNotification.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this RabRelNotification.
+
+        0 to N identifiers to bind the event for a specific UE or flow as defined below.  # noqa: E501
+
+        :param associate_id: The associate_id of this RabRelNotification.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> Ecgi:
+        """Gets the ecgi of this RabRelNotification.
+
+
+        :return: The ecgi of this RabRelNotification.
+        :rtype: Ecgi
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: Ecgi):
+        """Sets the ecgi of this RabRelNotification.
+
+
+        :param ecgi: The ecgi of this RabRelNotification.
+        :type ecgi: Ecgi
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def erab_release_info(self) -> RabRelNotificationErabReleaseInfo:
+        """Gets the erab_release_info of this RabRelNotification.
+
+
+        :return: The erab_release_info of this RabRelNotification.
+        :rtype: RabRelNotificationErabReleaseInfo
+        """
+        return self._erab_release_info
+
+    @erab_release_info.setter
+    def erab_release_info(self, erab_release_info: RabRelNotificationErabReleaseInfo):
+        """Sets the erab_release_info of this RabRelNotification.
+
+
+        :param erab_release_info: The erab_release_info of this RabRelNotification.
+        :type erab_release_info: RabRelNotificationErabReleaseInfo
+        """
+        if erab_release_info is None:
+            raise ValueError("Invalid value for `erab_release_info`, must not be `None`")  # noqa: E501
+
+        self._erab_release_info = erab_release_info
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this RabRelNotification.
+
+        Shall be set to \"RabRelNotification\".  # noqa: E501
+
+        :return: The notification_type of this RabRelNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this RabRelNotification.
+
+        Shall be set to \"RabRelNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this RabRelNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this RabRelNotification.
+
+
+        :return: The time_stamp of this RabRelNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this RabRelNotification.
+
+
+        :param time_stamp: The time_stamp of this RabRelNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification_erab_release_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification_erab_release_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a669aba44edc12b9659138aec14caae3ad68b98
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_notification_erab_release_info.py
@@ -0,0 +1,66 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class RabRelNotificationErabReleaseInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, erab_id: int=None):  # noqa: E501
+        """RabRelNotificationErabReleaseInfo - a model defined in Swagger
+
+        :param erab_id: The erab_id of this RabRelNotificationErabReleaseInfo.  # noqa: E501
+        :type erab_id: int
+        """
+        self.swagger_types = {
+            'erab_id': int
+        }
+
+        self.attribute_map = {
+            'erab_id': 'erabId'
+        }
+        self._erab_id = erab_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabRelNotificationErabReleaseInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabRelNotification_erabReleaseInfo of this RabRelNotificationErabReleaseInfo.  # noqa: E501
+        :rtype: RabRelNotificationErabReleaseInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this RabRelNotificationErabReleaseInfo.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this RabRelNotificationErabReleaseInfo.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this RabRelNotificationErabReleaseInfo.
+
+        The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this RabRelNotificationErabReleaseInfo.
+        :type erab_id: int
+        """
+        if erab_id is None:
+            raise ValueError("Invalid value for `erab_id`, must not be `None`")  # noqa: E501
+
+        self._erab_id = erab_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..9ff7b36b9b415f43c29a56e42f2fcb3aebc51f8a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rab_rel_subscription.py
@@ -0,0 +1,179 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.rab_mod_subscription_filter_criteria_qci import RabModSubscriptionFilterCriteriaQci  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class RabRelSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, expiry_deadline: TimeStamp=None, filter_criteria_qci: RabModSubscriptionFilterCriteriaQci=None, subscription_type: str=None):  # noqa: E501
+        """RabRelSubscription - a model defined in Swagger
+
+        :param links: The links of this RabRelSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this RabRelSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param expiry_deadline: The expiry_deadline of this RabRelSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param filter_criteria_qci: The filter_criteria_qci of this RabRelSubscription.  # noqa: E501
+        :type filter_criteria_qci: RabModSubscriptionFilterCriteriaQci
+        :param subscription_type: The subscription_type of this RabRelSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'expiry_deadline': TimeStamp,
+            'filter_criteria_qci': RabModSubscriptionFilterCriteriaQci,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'expiry_deadline': 'expiryDeadline',
+            'filter_criteria_qci': 'filterCriteriaQci',
+            'subscription_type': 'subscriptionType'
+        }
+        self._links = links
+        self._callback_reference = callback_reference
+        self._expiry_deadline = expiry_deadline
+        self._filter_criteria_qci = filter_criteria_qci
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RabRelSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RabRelSubscription of this RabRelSubscription.  # noqa: E501
+        :rtype: RabRelSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this RabRelSubscription.
+
+
+        :return: The links of this RabRelSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this RabRelSubscription.
+
+
+        :param links: The links of this RabRelSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this RabRelSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :return: The callback_reference of this RabRelSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this RabRelSubscription.
+
+        URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this RabRelSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this RabRelSubscription.
+
+
+        :return: The expiry_deadline of this RabRelSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this RabRelSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this RabRelSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def filter_criteria_qci(self) -> RabModSubscriptionFilterCriteriaQci:
+        """Gets the filter_criteria_qci of this RabRelSubscription.
+
+
+        :return: The filter_criteria_qci of this RabRelSubscription.
+        :rtype: RabModSubscriptionFilterCriteriaQci
+        """
+        return self._filter_criteria_qci
+
+    @filter_criteria_qci.setter
+    def filter_criteria_qci(self, filter_criteria_qci: RabModSubscriptionFilterCriteriaQci):
+        """Sets the filter_criteria_qci of this RabRelSubscription.
+
+
+        :param filter_criteria_qci: The filter_criteria_qci of this RabRelSubscription.
+        :type filter_criteria_qci: RabModSubscriptionFilterCriteriaQci
+        """
+        if filter_criteria_qci is None:
+            raise ValueError("Invalid value for `filter_criteria_qci`, must not be `None`")  # noqa: E501
+
+        self._filter_criteria_qci = filter_criteria_qci
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this RabRelSubscription.
+
+        Shall be set to \"RabRelSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this RabRelSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this RabRelSubscription.
+
+        Shall be set to \"RabRelSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this RabRelSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index.py
new file mode 100644
index 0000000000000000000000000000000000000000..72d15724b7ab4b06e08a2961359b0ede78f7f269
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index.py
@@ -0,0 +1,91 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerCsiRsIndex(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, csi_rs_index: int=None, csi_rs_results: MeasQuantityResultsNr=None):  # noqa: E501
+        """ResultsPerCsiRsIndex - a model defined in Swagger
+
+        :param csi_rs_index: The csi_rs_index of this ResultsPerCsiRsIndex.  # noqa: E501
+        :type csi_rs_index: int
+        :param csi_rs_results: The csi_rs_results of this ResultsPerCsiRsIndex.  # noqa: E501
+        :type csi_rs_results: MeasQuantityResultsNr
+        """
+        self.swagger_types = {
+            'csi_rs_index': int,
+            'csi_rs_results': MeasQuantityResultsNr
+        }
+
+        self.attribute_map = {
+            'csi_rs_index': 'csiRsIndex',
+            'csi_rs_results': 'csiRsResults'
+        }
+        self._csi_rs_index = csi_rs_index
+        self._csi_rs_results = csi_rs_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerCsiRsIndex':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerCsiRsIndex of this ResultsPerCsiRsIndex.  # noqa: E501
+        :rtype: ResultsPerCsiRsIndex
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def csi_rs_index(self) -> int:
+        """Gets the csi_rs_index of this ResultsPerCsiRsIndex.
+
+
+        :return: The csi_rs_index of this ResultsPerCsiRsIndex.
+        :rtype: int
+        """
+        return self._csi_rs_index
+
+    @csi_rs_index.setter
+    def csi_rs_index(self, csi_rs_index: int):
+        """Sets the csi_rs_index of this ResultsPerCsiRsIndex.
+
+
+        :param csi_rs_index: The csi_rs_index of this ResultsPerCsiRsIndex.
+        :type csi_rs_index: int
+        """
+        if csi_rs_index is None:
+            raise ValueError("Invalid value for `csi_rs_index`, must not be `None`")  # noqa: E501
+
+        self._csi_rs_index = csi_rs_index
+
+    @property
+    def csi_rs_results(self) -> MeasQuantityResultsNr:
+        """Gets the csi_rs_results of this ResultsPerCsiRsIndex.
+
+
+        :return: The csi_rs_results of this ResultsPerCsiRsIndex.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._csi_rs_results
+
+    @csi_rs_results.setter
+    def csi_rs_results(self, csi_rs_results: MeasQuantityResultsNr):
+        """Sets the csi_rs_results of this ResultsPerCsiRsIndex.
+
+
+        :param csi_rs_results: The csi_rs_results of this ResultsPerCsiRsIndex.
+        :type csi_rs_results: MeasQuantityResultsNr
+        """
+
+        self._csi_rs_results = csi_rs_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list.py
new file mode 100644
index 0000000000000000000000000000000000000000..6707ad9afdaec523ecd65e44697382baa07c6a7e
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list.py
@@ -0,0 +1,63 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.results_per_csi_rs_index_list_results_per_csi_rs_index import ResultsPerCsiRsIndexListResultsPerCsiRsIndex  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerCsiRsIndexList(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, results_per_csi_rs_index: List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]=None):  # noqa: E501
+        """ResultsPerCsiRsIndexList - a model defined in Swagger
+
+        :param results_per_csi_rs_index: The results_per_csi_rs_index of this ResultsPerCsiRsIndexList.  # noqa: E501
+        :type results_per_csi_rs_index: List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]
+        """
+        self.swagger_types = {
+            'results_per_csi_rs_index': List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]
+        }
+
+        self.attribute_map = {
+            'results_per_csi_rs_index': 'resultsPerCsiRsIndex'
+        }
+        self._results_per_csi_rs_index = results_per_csi_rs_index
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerCsiRsIndexList':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerCsiRsIndexList of this ResultsPerCsiRsIndexList.  # noqa: E501
+        :rtype: ResultsPerCsiRsIndexList
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def results_per_csi_rs_index(self) -> List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]:
+        """Gets the results_per_csi_rs_index of this ResultsPerCsiRsIndexList.
+
+
+        :return: The results_per_csi_rs_index of this ResultsPerCsiRsIndexList.
+        :rtype: List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]
+        """
+        return self._results_per_csi_rs_index
+
+    @results_per_csi_rs_index.setter
+    def results_per_csi_rs_index(self, results_per_csi_rs_index: List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]):
+        """Sets the results_per_csi_rs_index of this ResultsPerCsiRsIndexList.
+
+
+        :param results_per_csi_rs_index: The results_per_csi_rs_index of this ResultsPerCsiRsIndexList.
+        :type results_per_csi_rs_index: List[ResultsPerCsiRsIndexListResultsPerCsiRsIndex]
+        """
+
+        self._results_per_csi_rs_index = results_per_csi_rs_index
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list_results_per_csi_rs_index.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list_results_per_csi_rs_index.py
new file mode 100644
index 0000000000000000000000000000000000000000..3b4aa241a7f78b8e808a7b3aa953d4518ce08a0b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_csi_rs_index_list_results_per_csi_rs_index.py
@@ -0,0 +1,89 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerCsiRsIndexListResultsPerCsiRsIndex(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, csi_rs_index: int=None, csi_rs_results: MeasQuantityResultsNr=None):  # noqa: E501
+        """ResultsPerCsiRsIndexListResultsPerCsiRsIndex - a model defined in Swagger
+
+        :param csi_rs_index: The csi_rs_index of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.  # noqa: E501
+        :type csi_rs_index: int
+        :param csi_rs_results: The csi_rs_results of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.  # noqa: E501
+        :type csi_rs_results: MeasQuantityResultsNr
+        """
+        self.swagger_types = {
+            'csi_rs_index': int,
+            'csi_rs_results': MeasQuantityResultsNr
+        }
+
+        self.attribute_map = {
+            'csi_rs_index': 'csiRsIndex',
+            'csi_rs_results': 'csiRsResults'
+        }
+        self._csi_rs_index = csi_rs_index
+        self._csi_rs_results = csi_rs_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerCsiRsIndexListResultsPerCsiRsIndex':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerCsiRsIndexList_resultsPerCsiRsIndex of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.  # noqa: E501
+        :rtype: ResultsPerCsiRsIndexListResultsPerCsiRsIndex
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def csi_rs_index(self) -> int:
+        """Gets the csi_rs_index of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+
+
+        :return: The csi_rs_index of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+        :rtype: int
+        """
+        return self._csi_rs_index
+
+    @csi_rs_index.setter
+    def csi_rs_index(self, csi_rs_index: int):
+        """Sets the csi_rs_index of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+
+
+        :param csi_rs_index: The csi_rs_index of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+        :type csi_rs_index: int
+        """
+
+        self._csi_rs_index = csi_rs_index
+
+    @property
+    def csi_rs_results(self) -> MeasQuantityResultsNr:
+        """Gets the csi_rs_results of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+
+
+        :return: The csi_rs_results of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._csi_rs_results
+
+    @csi_rs_results.setter
+    def csi_rs_results(self, csi_rs_results: MeasQuantityResultsNr):
+        """Sets the csi_rs_results of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+
+
+        :param csi_rs_results: The csi_rs_results of this ResultsPerCsiRsIndexListResultsPerCsiRsIndex.
+        :type csi_rs_results: MeasQuantityResultsNr
+        """
+
+        self._csi_rs_results = csi_rs_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index.py
new file mode 100644
index 0000000000000000000000000000000000000000..5577d1d1a9f5cd101d5b4b19e0a82694753d4093
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index.py
@@ -0,0 +1,91 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerSsbIndex(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ssb_index: int=None, ssb_results: MeasQuantityResultsNr=None):  # noqa: E501
+        """ResultsPerSsbIndex - a model defined in Swagger
+
+        :param ssb_index: The ssb_index of this ResultsPerSsbIndex.  # noqa: E501
+        :type ssb_index: int
+        :param ssb_results: The ssb_results of this ResultsPerSsbIndex.  # noqa: E501
+        :type ssb_results: MeasQuantityResultsNr
+        """
+        self.swagger_types = {
+            'ssb_index': int,
+            'ssb_results': MeasQuantityResultsNr
+        }
+
+        self.attribute_map = {
+            'ssb_index': 'ssbIndex',
+            'ssb_results': 'ssbResults'
+        }
+        self._ssb_index = ssb_index
+        self._ssb_results = ssb_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerSsbIndex':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerSsbIndex of this ResultsPerSsbIndex.  # noqa: E501
+        :rtype: ResultsPerSsbIndex
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ssb_index(self) -> int:
+        """Gets the ssb_index of this ResultsPerSsbIndex.
+
+
+        :return: The ssb_index of this ResultsPerSsbIndex.
+        :rtype: int
+        """
+        return self._ssb_index
+
+    @ssb_index.setter
+    def ssb_index(self, ssb_index: int):
+        """Sets the ssb_index of this ResultsPerSsbIndex.
+
+
+        :param ssb_index: The ssb_index of this ResultsPerSsbIndex.
+        :type ssb_index: int
+        """
+        if ssb_index is None:
+            raise ValueError("Invalid value for `ssb_index`, must not be `None`")  # noqa: E501
+
+        self._ssb_index = ssb_index
+
+    @property
+    def ssb_results(self) -> MeasQuantityResultsNr:
+        """Gets the ssb_results of this ResultsPerSsbIndex.
+
+
+        :return: The ssb_results of this ResultsPerSsbIndex.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._ssb_results
+
+    @ssb_results.setter
+    def ssb_results(self, ssb_results: MeasQuantityResultsNr):
+        """Sets the ssb_results of this ResultsPerSsbIndex.
+
+
+        :param ssb_results: The ssb_results of this ResultsPerSsbIndex.
+        :type ssb_results: MeasQuantityResultsNr
+        """
+
+        self._ssb_results = ssb_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list.py
new file mode 100644
index 0000000000000000000000000000000000000000..cea0f8fcdd31eada941574cef6425af28f361743
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list.py
@@ -0,0 +1,63 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.results_per_ssb_index_list_results_per_ssb_index import ResultsPerSsbIndexListResultsPerSsbIndex  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerSsbIndexList(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, results_per_ssb_index: List[ResultsPerSsbIndexListResultsPerSsbIndex]=None):  # noqa: E501
+        """ResultsPerSsbIndexList - a model defined in Swagger
+
+        :param results_per_ssb_index: The results_per_ssb_index of this ResultsPerSsbIndexList.  # noqa: E501
+        :type results_per_ssb_index: List[ResultsPerSsbIndexListResultsPerSsbIndex]
+        """
+        self.swagger_types = {
+            'results_per_ssb_index': List[ResultsPerSsbIndexListResultsPerSsbIndex]
+        }
+
+        self.attribute_map = {
+            'results_per_ssb_index': 'resultsPerSsbIndex'
+        }
+        self._results_per_ssb_index = results_per_ssb_index
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerSsbIndexList':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerSsbIndexList of this ResultsPerSsbIndexList.  # noqa: E501
+        :rtype: ResultsPerSsbIndexList
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def results_per_ssb_index(self) -> List[ResultsPerSsbIndexListResultsPerSsbIndex]:
+        """Gets the results_per_ssb_index of this ResultsPerSsbIndexList.
+
+
+        :return: The results_per_ssb_index of this ResultsPerSsbIndexList.
+        :rtype: List[ResultsPerSsbIndexListResultsPerSsbIndex]
+        """
+        return self._results_per_ssb_index
+
+    @results_per_ssb_index.setter
+    def results_per_ssb_index(self, results_per_ssb_index: List[ResultsPerSsbIndexListResultsPerSsbIndex]):
+        """Sets the results_per_ssb_index of this ResultsPerSsbIndexList.
+
+
+        :param results_per_ssb_index: The results_per_ssb_index of this ResultsPerSsbIndexList.
+        :type results_per_ssb_index: List[ResultsPerSsbIndexListResultsPerSsbIndex]
+        """
+
+        self._results_per_ssb_index = results_per_ssb_index
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list_results_per_ssb_index.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list_results_per_ssb_index.py
new file mode 100644
index 0000000000000000000000000000000000000000..dcf1f3ff8ce69e4c76076c92db10f11c916ead22
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/results_per_ssb_index_list_results_per_ssb_index.py
@@ -0,0 +1,89 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.meas_quantity_results_nr import MeasQuantityResultsNr  # noqa: F401,E501
+from swagger_server import util
+
+
+class ResultsPerSsbIndexListResultsPerSsbIndex(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ssb_index: int=None, ssb_results: MeasQuantityResultsNr=None):  # noqa: E501
+        """ResultsPerSsbIndexListResultsPerSsbIndex - a model defined in Swagger
+
+        :param ssb_index: The ssb_index of this ResultsPerSsbIndexListResultsPerSsbIndex.  # noqa: E501
+        :type ssb_index: int
+        :param ssb_results: The ssb_results of this ResultsPerSsbIndexListResultsPerSsbIndex.  # noqa: E501
+        :type ssb_results: MeasQuantityResultsNr
+        """
+        self.swagger_types = {
+            'ssb_index': int,
+            'ssb_results': MeasQuantityResultsNr
+        }
+
+        self.attribute_map = {
+            'ssb_index': 'ssbIndex',
+            'ssb_results': 'ssbResults'
+        }
+        self._ssb_index = ssb_index
+        self._ssb_results = ssb_results
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'ResultsPerSsbIndexListResultsPerSsbIndex':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The ResultsPerSsbIndexList_resultsPerSsbIndex of this ResultsPerSsbIndexListResultsPerSsbIndex.  # noqa: E501
+        :rtype: ResultsPerSsbIndexListResultsPerSsbIndex
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ssb_index(self) -> int:
+        """Gets the ssb_index of this ResultsPerSsbIndexListResultsPerSsbIndex.
+
+
+        :return: The ssb_index of this ResultsPerSsbIndexListResultsPerSsbIndex.
+        :rtype: int
+        """
+        return self._ssb_index
+
+    @ssb_index.setter
+    def ssb_index(self, ssb_index: int):
+        """Sets the ssb_index of this ResultsPerSsbIndexListResultsPerSsbIndex.
+
+
+        :param ssb_index: The ssb_index of this ResultsPerSsbIndexListResultsPerSsbIndex.
+        :type ssb_index: int
+        """
+
+        self._ssb_index = ssb_index
+
+    @property
+    def ssb_results(self) -> MeasQuantityResultsNr:
+        """Gets the ssb_results of this ResultsPerSsbIndexListResultsPerSsbIndex.
+
+
+        :return: The ssb_results of this ResultsPerSsbIndexListResultsPerSsbIndex.
+        :rtype: MeasQuantityResultsNr
+        """
+        return self._ssb_results
+
+    @ssb_results.setter
+    def ssb_results(self, ssb_results: MeasQuantityResultsNr):
+        """Sets the ssb_results of this ResultsPerSsbIndexListResultsPerSsbIndex.
+
+
+        :param ssb_results: The ssb_results of this ResultsPerSsbIndexListResultsPerSsbIndex.
+        :type ssb_results: MeasQuantityResultsNr
+        """
+
+        self._ssb_results = ssb_results
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rs_index_results.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rs_index_results.py
new file mode 100644
index 0000000000000000000000000000000000000000..4171a3e79eebc3abd2e041d2bd8e5faec4ed8a66
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/rs_index_results.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.results_per_csi_rs_index_list import ResultsPerCsiRsIndexList  # noqa: F401,E501
+from swagger_server.models.results_per_ssb_index_list import ResultsPerSsbIndexList  # noqa: F401,E501
+from swagger_server import util
+
+
+class RsIndexResults(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, results_csi_rs_indexes: ResultsPerCsiRsIndexList=None, results_ssb_indexes: ResultsPerSsbIndexList=None):  # noqa: E501
+        """RsIndexResults - a model defined in Swagger
+
+        :param results_csi_rs_indexes: The results_csi_rs_indexes of this RsIndexResults.  # noqa: E501
+        :type results_csi_rs_indexes: ResultsPerCsiRsIndexList
+        :param results_ssb_indexes: The results_ssb_indexes of this RsIndexResults.  # noqa: E501
+        :type results_ssb_indexes: ResultsPerSsbIndexList
+        """
+        self.swagger_types = {
+            'results_csi_rs_indexes': ResultsPerCsiRsIndexList,
+            'results_ssb_indexes': ResultsPerSsbIndexList
+        }
+
+        self.attribute_map = {
+            'results_csi_rs_indexes': 'resultsCsiRsIndexes',
+            'results_ssb_indexes': 'resultsSsbIndexes'
+        }
+        self._results_csi_rs_indexes = results_csi_rs_indexes
+        self._results_ssb_indexes = results_ssb_indexes
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'RsIndexResults':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The RsIndexResults of this RsIndexResults.  # noqa: E501
+        :rtype: RsIndexResults
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def results_csi_rs_indexes(self) -> ResultsPerCsiRsIndexList:
+        """Gets the results_csi_rs_indexes of this RsIndexResults.
+
+
+        :return: The results_csi_rs_indexes of this RsIndexResults.
+        :rtype: ResultsPerCsiRsIndexList
+        """
+        return self._results_csi_rs_indexes
+
+    @results_csi_rs_indexes.setter
+    def results_csi_rs_indexes(self, results_csi_rs_indexes: ResultsPerCsiRsIndexList):
+        """Sets the results_csi_rs_indexes of this RsIndexResults.
+
+
+        :param results_csi_rs_indexes: The results_csi_rs_indexes of this RsIndexResults.
+        :type results_csi_rs_indexes: ResultsPerCsiRsIndexList
+        """
+        if results_csi_rs_indexes is None:
+            raise ValueError("Invalid value for `results_csi_rs_indexes`, must not be `None`")  # noqa: E501
+
+        self._results_csi_rs_indexes = results_csi_rs_indexes
+
+    @property
+    def results_ssb_indexes(self) -> ResultsPerSsbIndexList:
+        """Gets the results_ssb_indexes of this RsIndexResults.
+
+
+        :return: The results_ssb_indexes of this RsIndexResults.
+        :rtype: ResultsPerSsbIndexList
+        """
+        return self._results_ssb_indexes
+
+    @results_ssb_indexes.setter
+    def results_ssb_indexes(self, results_ssb_indexes: ResultsPerSsbIndexList):
+        """Sets the results_ssb_indexes of this RsIndexResults.
+
+
+        :param results_ssb_indexes: The results_ssb_indexes of this RsIndexResults.
+        :type results_ssb_indexes: ResultsPerSsbIndexList
+        """
+        if results_ssb_indexes is None:
+            raise ValueError("Invalid value for `results_ssb_indexes`, must not be `None`")  # noqa: E501
+
+        self._results_ssb_indexes = results_ssb_indexes
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..c1c091c91f3c9410c02c3cd9ea5e065e0cb25a30
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.s1_bearer_info_s1_ue_info import S1BearerInfoS1UeInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, s1_ue_info: List[S1BearerInfoS1UeInfo]=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """S1BearerInfo - a model defined in Swagger
+
+        :param s1_ue_info: The s1_ue_info of this S1BearerInfo.  # noqa: E501
+        :type s1_ue_info: List[S1BearerInfoS1UeInfo]
+        :param time_stamp: The time_stamp of this S1BearerInfo.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            's1_ue_info': List[S1BearerInfoS1UeInfo],
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            's1_ue_info': 's1UeInfo',
+            'time_stamp': 'timeStamp'
+        }
+        self._s1_ue_info = s1_ue_info
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerInfo of this S1BearerInfo.  # noqa: E501
+        :rtype: S1BearerInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def s1_ue_info(self) -> List[S1BearerInfoS1UeInfo]:
+        """Gets the s1_ue_info of this S1BearerInfo.
+
+        Information on a specific UE as defined below.  # noqa: E501
+
+        :return: The s1_ue_info of this S1BearerInfo.
+        :rtype: List[S1BearerInfoS1UeInfo]
+        """
+        return self._s1_ue_info
+
+    @s1_ue_info.setter
+    def s1_ue_info(self, s1_ue_info: List[S1BearerInfoS1UeInfo]):
+        """Sets the s1_ue_info of this S1BearerInfo.
+
+        Information on a specific UE as defined below.  # noqa: E501
+
+        :param s1_ue_info: The s1_ue_info of this S1BearerInfo.
+        :type s1_ue_info: List[S1BearerInfoS1UeInfo]
+        """
+        if s1_ue_info is None:
+            raise ValueError("Invalid value for `s1_ue_info`, must not be `None`")  # noqa: E501
+
+        self._s1_ue_info = s1_ue_info
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this S1BearerInfo.
+
+
+        :return: The time_stamp of this S1BearerInfo.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this S1BearerInfo.
+
+
+        :param time_stamp: The time_stamp of this S1BearerInfo.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_enb_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_enb_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd6693cecec8e4ac57e8ea72d5ec795fd4d988a1
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_enb_info.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class S1BearerInfoEnbInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ip_address: str=None, tunnel_id: str=None):  # noqa: E501
+        """S1BearerInfoEnbInfo - a model defined in Swagger
+
+        :param ip_address: The ip_address of this S1BearerInfoEnbInfo.  # noqa: E501
+        :type ip_address: str
+        :param tunnel_id: The tunnel_id of this S1BearerInfoEnbInfo.  # noqa: E501
+        :type tunnel_id: str
+        """
+        self.swagger_types = {
+            'ip_address': str,
+            'tunnel_id': str
+        }
+
+        self.attribute_map = {
+            'ip_address': 'ipAddress',
+            'tunnel_id': 'tunnelId'
+        }
+        self._ip_address = ip_address
+        self._tunnel_id = tunnel_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerInfoEnbInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerInfo_enbInfo of this S1BearerInfoEnbInfo.  # noqa: E501
+        :rtype: S1BearerInfoEnbInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ip_address(self) -> str:
+        """Gets the ip_address of this S1BearerInfoEnbInfo.
+
+        eNB transport layer address of this S1 bearer.  # noqa: E501
+
+        :return: The ip_address of this S1BearerInfoEnbInfo.
+        :rtype: str
+        """
+        return self._ip_address
+
+    @ip_address.setter
+    def ip_address(self, ip_address: str):
+        """Sets the ip_address of this S1BearerInfoEnbInfo.
+
+        eNB transport layer address of this S1 bearer.  # noqa: E501
+
+        :param ip_address: The ip_address of this S1BearerInfoEnbInfo.
+        :type ip_address: str
+        """
+        if ip_address is None:
+            raise ValueError("Invalid value for `ip_address`, must not be `None`")  # noqa: E501
+
+        self._ip_address = ip_address
+
+    @property
+    def tunnel_id(self) -> str:
+        """Gets the tunnel_id of this S1BearerInfoEnbInfo.
+
+        eNB GTP-U TEID of this S1 bearer.  # noqa: E501
+
+        :return: The tunnel_id of this S1BearerInfoEnbInfo.
+        :rtype: str
+        """
+        return self._tunnel_id
+
+    @tunnel_id.setter
+    def tunnel_id(self, tunnel_id: str):
+        """Sets the tunnel_id of this S1BearerInfoEnbInfo.
+
+        eNB GTP-U TEID of this S1 bearer.  # noqa: E501
+
+        :param tunnel_id: The tunnel_id of this S1BearerInfoEnbInfo.
+        :type tunnel_id: str
+        """
+        if tunnel_id is None:
+            raise ValueError("Invalid value for `tunnel_id`, must not be `None`")  # noqa: E501
+
+        self._tunnel_id = tunnel_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_bearer_info_detailed.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_bearer_info_detailed.py
new file mode 100644
index 0000000000000000000000000000000000000000..6005588904fddbb356a173b03e582ea64044a28c
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_bearer_info_detailed.py
@@ -0,0 +1,118 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.s1_bearer_info_enb_info import S1BearerInfoEnbInfo  # noqa: F401,E501
+from swagger_server.models.s1_bearer_info_sgw_info import S1BearerInfoSGwInfo  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerInfoS1BearerInfoDetailed(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, enb_info: S1BearerInfoEnbInfo=None, erab_id: int=None, s_gw_info: S1BearerInfoSGwInfo=None):  # noqa: E501
+        """S1BearerInfoS1BearerInfoDetailed - a model defined in Swagger
+
+        :param enb_info: The enb_info of this S1BearerInfoS1BearerInfoDetailed.  # noqa: E501
+        :type enb_info: S1BearerInfoEnbInfo
+        :param erab_id: The erab_id of this S1BearerInfoS1BearerInfoDetailed.  # noqa: E501
+        :type erab_id: int
+        :param s_gw_info: The s_gw_info of this S1BearerInfoS1BearerInfoDetailed.  # noqa: E501
+        :type s_gw_info: S1BearerInfoSGwInfo
+        """
+        self.swagger_types = {
+            'enb_info': S1BearerInfoEnbInfo,
+            'erab_id': int,
+            's_gw_info': S1BearerInfoSGwInfo
+        }
+
+        self.attribute_map = {
+            'enb_info': 'enbInfo',
+            'erab_id': 'erabId',
+            's_gw_info': 'sGwInfo'
+        }
+        self._enb_info = enb_info
+        self._erab_id = erab_id
+        self._s_gw_info = s_gw_info
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerInfoS1BearerInfoDetailed':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerInfo_s1BearerInfoDetailed of this S1BearerInfoS1BearerInfoDetailed.  # noqa: E501
+        :rtype: S1BearerInfoS1BearerInfoDetailed
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def enb_info(self) -> S1BearerInfoEnbInfo:
+        """Gets the enb_info of this S1BearerInfoS1BearerInfoDetailed.
+
+
+        :return: The enb_info of this S1BearerInfoS1BearerInfoDetailed.
+        :rtype: S1BearerInfoEnbInfo
+        """
+        return self._enb_info
+
+    @enb_info.setter
+    def enb_info(self, enb_info: S1BearerInfoEnbInfo):
+        """Sets the enb_info of this S1BearerInfoS1BearerInfoDetailed.
+
+
+        :param enb_info: The enb_info of this S1BearerInfoS1BearerInfoDetailed.
+        :type enb_info: S1BearerInfoEnbInfo
+        """
+
+        self._enb_info = enb_info
+
+    @property
+    def erab_id(self) -> int:
+        """Gets the erab_id of this S1BearerInfoS1BearerInfoDetailed.
+
+        The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this S1BearerInfoS1BearerInfoDetailed.
+        :rtype: int
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: int):
+        """Sets the erab_id of this S1BearerInfoS1BearerInfoDetailed.
+
+        The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this S1BearerInfoS1BearerInfoDetailed.
+        :type erab_id: int
+        """
+
+        self._erab_id = erab_id
+
+    @property
+    def s_gw_info(self) -> S1BearerInfoSGwInfo:
+        """Gets the s_gw_info of this S1BearerInfoS1BearerInfoDetailed.
+
+
+        :return: The s_gw_info of this S1BearerInfoS1BearerInfoDetailed.
+        :rtype: S1BearerInfoSGwInfo
+        """
+        return self._s_gw_info
+
+    @s_gw_info.setter
+    def s_gw_info(self, s_gw_info: S1BearerInfoSGwInfo):
+        """Sets the s_gw_info of this S1BearerInfoS1BearerInfoDetailed.
+
+
+        :param s_gw_info: The s_gw_info of this S1BearerInfoS1BearerInfoDetailed.
+        :type s_gw_info: S1BearerInfoSGwInfo
+        """
+
+        self._s_gw_info = s_gw_info
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_ue_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_ue_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb0cd021f6cc2e4a54bcadc5d8e83a47d16c3ade
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_s1_ue_info.py
@@ -0,0 +1,150 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.cell_change_notification_temp_ue_id import CellChangeNotificationTempUeId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.s1_bearer_info_s1_bearer_info_detailed import S1BearerInfoS1BearerInfoDetailed  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerInfoS1UeInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None, s1_bearer_info_detailed: List[S1BearerInfoS1BearerInfoDetailed]=None, temp_ue_id: CellChangeNotificationTempUeId=None):  # noqa: E501
+        """S1BearerInfoS1UeInfo - a model defined in Swagger
+
+        :param associate_id: The associate_id of this S1BearerInfoS1UeInfo.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this S1BearerInfoS1UeInfo.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param s1_bearer_info_detailed: The s1_bearer_info_detailed of this S1BearerInfoS1UeInfo.  # noqa: E501
+        :type s1_bearer_info_detailed: List[S1BearerInfoS1BearerInfoDetailed]
+        :param temp_ue_id: The temp_ue_id of this S1BearerInfoS1UeInfo.  # noqa: E501
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi],
+            's1_bearer_info_detailed': List[S1BearerInfoS1BearerInfoDetailed],
+            'temp_ue_id': CellChangeNotificationTempUeId
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            's1_bearer_info_detailed': 's1BearerInfoDetailed',
+            'temp_ue_id': 'tempUeId'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._s1_bearer_info_detailed = s1_bearer_info_detailed
+        self._temp_ue_id = temp_ue_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerInfoS1UeInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerInfo_s1UeInfo of this S1BearerInfoS1UeInfo.  # noqa: E501
+        :rtype: S1BearerInfoS1UeInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this S1BearerInfoS1UeInfo.
+
+        1 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this S1BearerInfoS1UeInfo.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this S1BearerInfoS1UeInfo.
+
+        1 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this S1BearerInfoS1UeInfo.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this S1BearerInfoS1UeInfo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this S1BearerInfoS1UeInfo.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this S1BearerInfoS1UeInfo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this S1BearerInfoS1UeInfo.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def s1_bearer_info_detailed(self) -> List[S1BearerInfoS1BearerInfoDetailed]:
+        """Gets the s1_bearer_info_detailed of this S1BearerInfoS1UeInfo.
+
+        S1 bearer information as defined below.  # noqa: E501
+
+        :return: The s1_bearer_info_detailed of this S1BearerInfoS1UeInfo.
+        :rtype: List[S1BearerInfoS1BearerInfoDetailed]
+        """
+        return self._s1_bearer_info_detailed
+
+    @s1_bearer_info_detailed.setter
+    def s1_bearer_info_detailed(self, s1_bearer_info_detailed: List[S1BearerInfoS1BearerInfoDetailed]):
+        """Sets the s1_bearer_info_detailed of this S1BearerInfoS1UeInfo.
+
+        S1 bearer information as defined below.  # noqa: E501
+
+        :param s1_bearer_info_detailed: The s1_bearer_info_detailed of this S1BearerInfoS1UeInfo.
+        :type s1_bearer_info_detailed: List[S1BearerInfoS1BearerInfoDetailed]
+        """
+
+        self._s1_bearer_info_detailed = s1_bearer_info_detailed
+
+    @property
+    def temp_ue_id(self) -> CellChangeNotificationTempUeId:
+        """Gets the temp_ue_id of this S1BearerInfoS1UeInfo.
+
+
+        :return: The temp_ue_id of this S1BearerInfoS1UeInfo.
+        :rtype: CellChangeNotificationTempUeId
+        """
+        return self._temp_ue_id
+
+    @temp_ue_id.setter
+    def temp_ue_id(self, temp_ue_id: CellChangeNotificationTempUeId):
+        """Sets the temp_ue_id of this S1BearerInfoS1UeInfo.
+
+
+        :param temp_ue_id: The temp_ue_id of this S1BearerInfoS1UeInfo.
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        """
+
+        self._temp_ue_id = temp_ue_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_sgw_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_sgw_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..6a71a6e9827e748192d62e171f499a9ec0890a0a
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_info_sgw_info.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class S1BearerInfoSGwInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, ip_address: str=None, tunnel_id: str=None):  # noqa: E501
+        """S1BearerInfoSGwInfo - a model defined in Swagger
+
+        :param ip_address: The ip_address of this S1BearerInfoSGwInfo.  # noqa: E501
+        :type ip_address: str
+        :param tunnel_id: The tunnel_id of this S1BearerInfoSGwInfo.  # noqa: E501
+        :type tunnel_id: str
+        """
+        self.swagger_types = {
+            'ip_address': str,
+            'tunnel_id': str
+        }
+
+        self.attribute_map = {
+            'ip_address': 'ipAddress',
+            'tunnel_id': 'tunnelId'
+        }
+        self._ip_address = ip_address
+        self._tunnel_id = tunnel_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerInfoSGwInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerInfo_sGwInfo of this S1BearerInfoSGwInfo.  # noqa: E501
+        :rtype: S1BearerInfoSGwInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def ip_address(self) -> str:
+        """Gets the ip_address of this S1BearerInfoSGwInfo.
+
+        SGW transport layer address of this S1 bearer.  # noqa: E501
+
+        :return: The ip_address of this S1BearerInfoSGwInfo.
+        :rtype: str
+        """
+        return self._ip_address
+
+    @ip_address.setter
+    def ip_address(self, ip_address: str):
+        """Sets the ip_address of this S1BearerInfoSGwInfo.
+
+        SGW transport layer address of this S1 bearer.  # noqa: E501
+
+        :param ip_address: The ip_address of this S1BearerInfoSGwInfo.
+        :type ip_address: str
+        """
+        if ip_address is None:
+            raise ValueError("Invalid value for `ip_address`, must not be `None`")  # noqa: E501
+
+        self._ip_address = ip_address
+
+    @property
+    def tunnel_id(self) -> str:
+        """Gets the tunnel_id of this S1BearerInfoSGwInfo.
+
+        SGW GTP-U TEID of this S1 bearer.  # noqa: E501
+
+        :return: The tunnel_id of this S1BearerInfoSGwInfo.
+        :rtype: str
+        """
+        return self._tunnel_id
+
+    @tunnel_id.setter
+    def tunnel_id(self, tunnel_id: str):
+        """Sets the tunnel_id of this S1BearerInfoSGwInfo.
+
+        SGW GTP-U TEID of this S1 bearer.  # noqa: E501
+
+        :param tunnel_id: The tunnel_id of this S1BearerInfoSGwInfo.
+        :type tunnel_id: str
+        """
+        if tunnel_id is None:
+            raise ValueError("Invalid value for `tunnel_id`, must not be `None`")  # noqa: E501
+
+        self._tunnel_id = tunnel_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..fcb261e319d8832f2ee04a437d6e3de8632f429d
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification.py
@@ -0,0 +1,152 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.s1_bearer_notification_s1_ue_info import S1BearerNotificationS1UeInfo  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerNotification(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, notification_type: str=None, s1_event: int=None, s1_ue_info: S1BearerNotificationS1UeInfo=None, time_stamp: TimeStamp=None):  # noqa: E501
+        """S1BearerNotification - a model defined in Swagger
+
+        :param notification_type: The notification_type of this S1BearerNotification.  # noqa: E501
+        :type notification_type: str
+        :param s1_event: The s1_event of this S1BearerNotification.  # noqa: E501
+        :type s1_event: int
+        :param s1_ue_info: The s1_ue_info of this S1BearerNotification.  # noqa: E501
+        :type s1_ue_info: S1BearerNotificationS1UeInfo
+        :param time_stamp: The time_stamp of this S1BearerNotification.  # noqa: E501
+        :type time_stamp: TimeStamp
+        """
+        self.swagger_types = {
+            'notification_type': str,
+            's1_event': int,
+            's1_ue_info': S1BearerNotificationS1UeInfo,
+            'time_stamp': TimeStamp
+        }
+
+        self.attribute_map = {
+            'notification_type': 'notificationType',
+            's1_event': 's1Event',
+            's1_ue_info': 's1UeInfo',
+            'time_stamp': 'timeStamp'
+        }
+        self._notification_type = notification_type
+        self._s1_event = s1_event
+        self._s1_ue_info = s1_ue_info
+        self._time_stamp = time_stamp
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerNotification':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerNotification of this S1BearerNotification.  # noqa: E501
+        :rtype: S1BearerNotification
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def notification_type(self) -> str:
+        """Gets the notification_type of this S1BearerNotification.
+
+        Shall be set to \"S1BearerNotification\".  # noqa: E501
+
+        :return: The notification_type of this S1BearerNotification.
+        :rtype: str
+        """
+        return self._notification_type
+
+    @notification_type.setter
+    def notification_type(self, notification_type: str):
+        """Sets the notification_type of this S1BearerNotification.
+
+        Shall be set to \"S1BearerNotification\".  # noqa: E501
+
+        :param notification_type: The notification_type of this S1BearerNotification.
+        :type notification_type: str
+        """
+        if notification_type is None:
+            raise ValueError("Invalid value for `notification_type`, must not be `None`")  # noqa: E501
+
+        self._notification_type = notification_type
+
+    @property
+    def s1_event(self) -> int:
+        """Gets the s1_event of this S1BearerNotification.
+
+        The subscribed event that triggered this notification in S1BearerSubscription.  # noqa: E501
+
+        :return: The s1_event of this S1BearerNotification.
+        :rtype: int
+        """
+        return self._s1_event
+
+    @s1_event.setter
+    def s1_event(self, s1_event: int):
+        """Sets the s1_event of this S1BearerNotification.
+
+        The subscribed event that triggered this notification in S1BearerSubscription.  # noqa: E501
+
+        :param s1_event: The s1_event of this S1BearerNotification.
+        :type s1_event: int
+        """
+        if s1_event is None:
+            raise ValueError("Invalid value for `s1_event`, must not be `None`")  # noqa: E501
+
+        self._s1_event = s1_event
+
+    @property
+    def s1_ue_info(self) -> S1BearerNotificationS1UeInfo:
+        """Gets the s1_ue_info of this S1BearerNotification.
+
+
+        :return: The s1_ue_info of this S1BearerNotification.
+        :rtype: S1BearerNotificationS1UeInfo
+        """
+        return self._s1_ue_info
+
+    @s1_ue_info.setter
+    def s1_ue_info(self, s1_ue_info: S1BearerNotificationS1UeInfo):
+        """Sets the s1_ue_info of this S1BearerNotification.
+
+
+        :param s1_ue_info: The s1_ue_info of this S1BearerNotification.
+        :type s1_ue_info: S1BearerNotificationS1UeInfo
+        """
+        if s1_ue_info is None:
+            raise ValueError("Invalid value for `s1_ue_info`, must not be `None`")  # noqa: E501
+
+        self._s1_ue_info = s1_ue_info
+
+    @property
+    def time_stamp(self) -> TimeStamp:
+        """Gets the time_stamp of this S1BearerNotification.
+
+
+        :return: The time_stamp of this S1BearerNotification.
+        :rtype: TimeStamp
+        """
+        return self._time_stamp
+
+    @time_stamp.setter
+    def time_stamp(self, time_stamp: TimeStamp):
+        """Sets the time_stamp of this S1BearerNotification.
+
+
+        :param time_stamp: The time_stamp of this S1BearerNotification.
+        :type time_stamp: TimeStamp
+        """
+
+        self._time_stamp = time_stamp
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification_s1_ue_info.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification_s1_ue_info.py
new file mode 100644
index 0000000000000000000000000000000000000000..dcca90098bfa9b9b5732bce6e34c8858b7f7b022
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_notification_s1_ue_info.py
@@ -0,0 +1,154 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.cell_change_notification_temp_ue_id import CellChangeNotificationTempUeId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server.models.s1_bearer_info_s1_bearer_info_detailed import S1BearerInfoS1BearerInfoDetailed  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerNotificationS1UeInfo(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None, s1_bearer_info: List[S1BearerInfoS1BearerInfoDetailed]=None, temp_ue_id: CellChangeNotificationTempUeId=None):  # noqa: E501
+        """S1BearerNotificationS1UeInfo - a model defined in Swagger
+
+        :param associate_id: The associate_id of this S1BearerNotificationS1UeInfo.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this S1BearerNotificationS1UeInfo.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param s1_bearer_info: The s1_bearer_info of this S1BearerNotificationS1UeInfo.  # noqa: E501
+        :type s1_bearer_info: List[S1BearerInfoS1BearerInfoDetailed]
+        :param temp_ue_id: The temp_ue_id of this S1BearerNotificationS1UeInfo.  # noqa: E501
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi],
+            's1_bearer_info': List[S1BearerInfoS1BearerInfoDetailed],
+            'temp_ue_id': CellChangeNotificationTempUeId
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            's1_bearer_info': 's1BearerInfo',
+            'temp_ue_id': 'tempUeId'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._s1_bearer_info = s1_bearer_info
+        self._temp_ue_id = temp_ue_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerNotificationS1UeInfo':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerNotification_s1UeInfo of this S1BearerNotificationS1UeInfo.  # noqa: E501
+        :rtype: S1BearerNotificationS1UeInfo
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this S1BearerNotificationS1UeInfo.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :return: The associate_id of this S1BearerNotificationS1UeInfo.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this S1BearerNotificationS1UeInfo.
+
+        0 to N identifiers to associate the information for a specific UE or flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this S1BearerNotificationS1UeInfo.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this S1BearerNotificationS1UeInfo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this S1BearerNotificationS1UeInfo.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this S1BearerNotificationS1UeInfo.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this S1BearerNotificationS1UeInfo.
+        :type ecgi: List[Ecgi]
+        """
+        if ecgi is None:
+            raise ValueError("Invalid value for `ecgi`, must not be `None`")  # noqa: E501
+
+        self._ecgi = ecgi
+
+    @property
+    def s1_bearer_info(self) -> List[S1BearerInfoS1BearerInfoDetailed]:
+        """Gets the s1_bearer_info of this S1BearerNotificationS1UeInfo.
+
+        S1 bearer information as defined below.  # noqa: E501
+
+        :return: The s1_bearer_info of this S1BearerNotificationS1UeInfo.
+        :rtype: List[S1BearerInfoS1BearerInfoDetailed]
+        """
+        return self._s1_bearer_info
+
+    @s1_bearer_info.setter
+    def s1_bearer_info(self, s1_bearer_info: List[S1BearerInfoS1BearerInfoDetailed]):
+        """Sets the s1_bearer_info of this S1BearerNotificationS1UeInfo.
+
+        S1 bearer information as defined below.  # noqa: E501
+
+        :param s1_bearer_info: The s1_bearer_info of this S1BearerNotificationS1UeInfo.
+        :type s1_bearer_info: List[S1BearerInfoS1BearerInfoDetailed]
+        """
+        if s1_bearer_info is None:
+            raise ValueError("Invalid value for `s1_bearer_info`, must not be `None`")  # noqa: E501
+
+        self._s1_bearer_info = s1_bearer_info
+
+    @property
+    def temp_ue_id(self) -> CellChangeNotificationTempUeId:
+        """Gets the temp_ue_id of this S1BearerNotificationS1UeInfo.
+
+
+        :return: The temp_ue_id of this S1BearerNotificationS1UeInfo.
+        :rtype: CellChangeNotificationTempUeId
+        """
+        return self._temp_ue_id
+
+    @temp_ue_id.setter
+    def temp_ue_id(self, temp_ue_id: CellChangeNotificationTempUeId):
+        """Sets the temp_ue_id of this S1BearerNotificationS1UeInfo.
+
+
+        :param temp_ue_id: The temp_ue_id of this S1BearerNotificationS1UeInfo.
+        :type temp_ue_id: CellChangeNotificationTempUeId
+        """
+
+        self._temp_ue_id = temp_ue_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c2b66fa366643684e18c1cec8850f69bdb2f537
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription.py
@@ -0,0 +1,210 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.ca_reconf_subscription_links import CaReconfSubscriptionLinks  # noqa: F401,E501
+from swagger_server.models.enum import Enum  # noqa: F401,E501
+from swagger_server.models.s1_bearer_subscription_s1_bearer_subscription_criteria import S1BearerSubscriptionS1BearerSubscriptionCriteria  # noqa: F401,E501
+from swagger_server.models.time_stamp import TimeStamp  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, s1_bearer_subscription_criteria: S1BearerSubscriptionS1BearerSubscriptionCriteria=None, links: CaReconfSubscriptionLinks=None, callback_reference: str=None, event_type: List[Enum]=None, expiry_deadline: TimeStamp=None, subscription_type: str=None):  # noqa: E501
+        """S1BearerSubscription - a model defined in Swagger
+
+        :param s1_bearer_subscription_criteria: The s1_bearer_subscription_criteria of this S1BearerSubscription.  # noqa: E501
+        :type s1_bearer_subscription_criteria: S1BearerSubscriptionS1BearerSubscriptionCriteria
+        :param links: The links of this S1BearerSubscription.  # noqa: E501
+        :type links: CaReconfSubscriptionLinks
+        :param callback_reference: The callback_reference of this S1BearerSubscription.  # noqa: E501
+        :type callback_reference: str
+        :param event_type: The event_type of this S1BearerSubscription.  # noqa: E501
+        :type event_type: List[Enum]
+        :param expiry_deadline: The expiry_deadline of this S1BearerSubscription.  # noqa: E501
+        :type expiry_deadline: TimeStamp
+        :param subscription_type: The subscription_type of this S1BearerSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            's1_bearer_subscription_criteria': S1BearerSubscriptionS1BearerSubscriptionCriteria,
+            'links': CaReconfSubscriptionLinks,
+            'callback_reference': str,
+            'event_type': List[Enum],
+            'expiry_deadline': TimeStamp,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            's1_bearer_subscription_criteria': 'S1BearerSubscriptionCriteria',
+            'links': '_links',
+            'callback_reference': 'callbackReference',
+            'event_type': 'eventType',
+            'expiry_deadline': 'expiryDeadline',
+            'subscription_type': 'subscriptionType'
+        }
+        self._s1_bearer_subscription_criteria = s1_bearer_subscription_criteria
+        self._links = links
+        self._callback_reference = callback_reference
+        self._event_type = event_type
+        self._expiry_deadline = expiry_deadline
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerSubscription of this S1BearerSubscription.  # noqa: E501
+        :rtype: S1BearerSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def s1_bearer_subscription_criteria(self) -> S1BearerSubscriptionS1BearerSubscriptionCriteria:
+        """Gets the s1_bearer_subscription_criteria of this S1BearerSubscription.
+
+
+        :return: The s1_bearer_subscription_criteria of this S1BearerSubscription.
+        :rtype: S1BearerSubscriptionS1BearerSubscriptionCriteria
+        """
+        return self._s1_bearer_subscription_criteria
+
+    @s1_bearer_subscription_criteria.setter
+    def s1_bearer_subscription_criteria(self, s1_bearer_subscription_criteria: S1BearerSubscriptionS1BearerSubscriptionCriteria):
+        """Sets the s1_bearer_subscription_criteria of this S1BearerSubscription.
+
+
+        :param s1_bearer_subscription_criteria: The s1_bearer_subscription_criteria of this S1BearerSubscription.
+        :type s1_bearer_subscription_criteria: S1BearerSubscriptionS1BearerSubscriptionCriteria
+        """
+        if s1_bearer_subscription_criteria is None:
+            raise ValueError("Invalid value for `s1_bearer_subscription_criteria`, must not be `None`")  # noqa: E501
+
+        self._s1_bearer_subscription_criteria = s1_bearer_subscription_criteria
+
+    @property
+    def links(self) -> CaReconfSubscriptionLinks:
+        """Gets the links of this S1BearerSubscription.
+
+
+        :return: The links of this S1BearerSubscription.
+        :rtype: CaReconfSubscriptionLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: CaReconfSubscriptionLinks):
+        """Sets the links of this S1BearerSubscription.
+
+
+        :param links: The links of this S1BearerSubscription.
+        :type links: CaReconfSubscriptionLinks
+        """
+
+        self._links = links
+
+    @property
+    def callback_reference(self) -> str:
+        """Gets the callback_reference of this S1BearerSubscription.
+
+        URI selected by the service consumer, to receive notifications on the subscribed RNIS information. This shall be included in the request and response.  # noqa: E501
+
+        :return: The callback_reference of this S1BearerSubscription.
+        :rtype: str
+        """
+        return self._callback_reference
+
+    @callback_reference.setter
+    def callback_reference(self, callback_reference: str):
+        """Sets the callback_reference of this S1BearerSubscription.
+
+        URI selected by the service consumer, to receive notifications on the subscribed RNIS information. This shall be included in the request and response.  # noqa: E501
+
+        :param callback_reference: The callback_reference of this S1BearerSubscription.
+        :type callback_reference: str
+        """
+        if callback_reference is None:
+            raise ValueError("Invalid value for `callback_reference`, must not be `None`")  # noqa: E501
+
+        self._callback_reference = callback_reference
+
+    @property
+    def event_type(self) -> List[Enum]:
+        """Gets the event_type of this S1BearerSubscription.
+
+        Description of the subscribed event. The event is included both in the request and in the response. \\nFor the eventType, the following values are currently defined: <p>0 = RESERVED. <p>1 = S1_BEARER_ESTABLISH. <p>2 = S1_BEARER_MODIFY. <p>3 = S1_BEARER_RELEASE.  # noqa: E501
+
+        :return: The event_type of this S1BearerSubscription.
+        :rtype: List[Enum]
+        """
+        return self._event_type
+
+    @event_type.setter
+    def event_type(self, event_type: List[Enum]):
+        """Sets the event_type of this S1BearerSubscription.
+
+        Description of the subscribed event. The event is included both in the request and in the response. \\nFor the eventType, the following values are currently defined: <p>0 = RESERVED. <p>1 = S1_BEARER_ESTABLISH. <p>2 = S1_BEARER_MODIFY. <p>3 = S1_BEARER_RELEASE.  # noqa: E501
+
+        :param event_type: The event_type of this S1BearerSubscription.
+        :type event_type: List[Enum]
+        """
+        if event_type is None:
+            raise ValueError("Invalid value for `event_type`, must not be `None`")  # noqa: E501
+
+        self._event_type = event_type
+
+    @property
+    def expiry_deadline(self) -> TimeStamp:
+        """Gets the expiry_deadline of this S1BearerSubscription.
+
+
+        :return: The expiry_deadline of this S1BearerSubscription.
+        :rtype: TimeStamp
+        """
+        return self._expiry_deadline
+
+    @expiry_deadline.setter
+    def expiry_deadline(self, expiry_deadline: TimeStamp):
+        """Sets the expiry_deadline of this S1BearerSubscription.
+
+
+        :param expiry_deadline: The expiry_deadline of this S1BearerSubscription.
+        :type expiry_deadline: TimeStamp
+        """
+
+        self._expiry_deadline = expiry_deadline
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this S1BearerSubscription.
+
+        Shall be set to \"S1BearerSubscription\".  # noqa: E501
+
+        :return: The subscription_type of this S1BearerSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this S1BearerSubscription.
+
+        Shall be set to \"S1BearerSubscription\".  # noqa: E501
+
+        :param subscription_type: The subscription_type of this S1BearerSubscription.
+        :type subscription_type: str
+        """
+        if subscription_type is None:
+            raise ValueError("Invalid value for `subscription_type`, must not be `None`")  # noqa: E501
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription_s1_bearer_subscription_criteria.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription_s1_bearer_subscription_criteria.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a52127b1758f3d18fd15ebf6be16ba929e0008c
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/s1_bearer_subscription_s1_bearer_subscription_criteria.py
@@ -0,0 +1,122 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.associate_id import AssociateId  # noqa: F401,E501
+from swagger_server.models.ecgi import Ecgi  # noqa: F401,E501
+from swagger_server import util
+
+
+class S1BearerSubscriptionS1BearerSubscriptionCriteria(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, associate_id: List[AssociateId]=None, ecgi: List[Ecgi]=None, erab_id: List[int]=None):  # noqa: E501
+        """S1BearerSubscriptionS1BearerSubscriptionCriteria - a model defined in Swagger
+
+        :param associate_id: The associate_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.  # noqa: E501
+        :type associate_id: List[AssociateId]
+        :param ecgi: The ecgi of this S1BearerSubscriptionS1BearerSubscriptionCriteria.  # noqa: E501
+        :type ecgi: List[Ecgi]
+        :param erab_id: The erab_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.  # noqa: E501
+        :type erab_id: List[int]
+        """
+        self.swagger_types = {
+            'associate_id': List[AssociateId],
+            'ecgi': List[Ecgi],
+            'erab_id': List[int]
+        }
+
+        self.attribute_map = {
+            'associate_id': 'associateId',
+            'ecgi': 'ecgi',
+            'erab_id': 'erabId'
+        }
+        self._associate_id = associate_id
+        self._ecgi = ecgi
+        self._erab_id = erab_id
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'S1BearerSubscriptionS1BearerSubscriptionCriteria':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The S1BearerSubscription_S1BearerSubscriptionCriteria of this S1BearerSubscriptionS1BearerSubscriptionCriteria.  # noqa: E501
+        :rtype: S1BearerSubscriptionS1BearerSubscriptionCriteria
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def associate_id(self) -> List[AssociateId]:
+        """Gets the associate_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        0 to N identifiers to associate the events for a specific UE or a flow.  # noqa: E501
+
+        :return: The associate_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :rtype: List[AssociateId]
+        """
+        return self._associate_id
+
+    @associate_id.setter
+    def associate_id(self, associate_id: List[AssociateId]):
+        """Sets the associate_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        0 to N identifiers to associate the events for a specific UE or a flow.  # noqa: E501
+
+        :param associate_id: The associate_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :type associate_id: List[AssociateId]
+        """
+
+        self._associate_id = associate_id
+
+    @property
+    def ecgi(self) -> List[Ecgi]:
+        """Gets the ecgi of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :return: The ecgi of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :rtype: List[Ecgi]
+        """
+        return self._ecgi
+
+    @ecgi.setter
+    def ecgi(self, ecgi: List[Ecgi]):
+        """Sets the ecgi of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        E-UTRAN Cell Global Identifier.  # noqa: E501
+
+        :param ecgi: The ecgi of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :type ecgi: List[Ecgi]
+        """
+
+        self._ecgi = ecgi
+
+    @property
+    def erab_id(self) -> List[int]:
+        """Gets the erab_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :return: The erab_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :rtype: List[int]
+        """
+        return self._erab_id
+
+    @erab_id.setter
+    def erab_id(self, erab_id: List[int]):
+        """Sets the erab_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+
+        The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].  # noqa: E501
+
+        :param erab_id: The erab_id of this S1BearerSubscriptionS1BearerSubscriptionCriteria.
+        :type erab_id: List[int]
+        """
+
+        self._erab_id = erab_id
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4551d4c8668f44b5160d48792170fff9bebd3b4
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list.py
@@ -0,0 +1,65 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.subscription_link_list_links import SubscriptionLinkListLinks  # noqa: F401,E501
+from swagger_server import util
+
+
+class SubscriptionLinkList(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, links: SubscriptionLinkListLinks=None):  # noqa: E501
+        """SubscriptionLinkList - a model defined in Swagger
+
+        :param links: The links of this SubscriptionLinkList.  # noqa: E501
+        :type links: SubscriptionLinkListLinks
+        """
+        self.swagger_types = {
+            'links': SubscriptionLinkListLinks
+        }
+
+        self.attribute_map = {
+            'links': '_links'
+        }
+        self._links = links
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'SubscriptionLinkList':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The SubscriptionLinkList of this SubscriptionLinkList.  # noqa: E501
+        :rtype: SubscriptionLinkList
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def links(self) -> SubscriptionLinkListLinks:
+        """Gets the links of this SubscriptionLinkList.
+
+
+        :return: The links of this SubscriptionLinkList.
+        :rtype: SubscriptionLinkListLinks
+        """
+        return self._links
+
+    @links.setter
+    def links(self, links: SubscriptionLinkListLinks):
+        """Sets the links of this SubscriptionLinkList.
+
+
+        :param links: The links of this SubscriptionLinkList.
+        :type links: SubscriptionLinkListLinks
+        """
+        if links is None:
+            raise ValueError("Invalid value for `links`, must not be `None`")  # noqa: E501
+
+        self._links = links
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links.py
new file mode 100644
index 0000000000000000000000000000000000000000..552fe6f57cfb27e6d19fd932d2463aca71484c5f
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links.py
@@ -0,0 +1,94 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server.models.link_type import LinkType  # noqa: F401,E501
+from swagger_server.models.subscription_link_list_links_subscription import SubscriptionLinkListLinksSubscription  # noqa: F401,E501
+from swagger_server import util
+
+
+class SubscriptionLinkListLinks(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, _self: LinkType=None, subscription: List[SubscriptionLinkListLinksSubscription]=None):  # noqa: E501
+        """SubscriptionLinkListLinks - a model defined in Swagger
+
+        :param _self: The _self of this SubscriptionLinkListLinks.  # noqa: E501
+        :type _self: LinkType
+        :param subscription: The subscription of this SubscriptionLinkListLinks.  # noqa: E501
+        :type subscription: List[SubscriptionLinkListLinksSubscription]
+        """
+        self.swagger_types = {
+            '_self': LinkType,
+            'subscription': List[SubscriptionLinkListLinksSubscription]
+        }
+
+        self.attribute_map = {
+            '_self': 'self',
+            'subscription': 'subscription'
+        }
+        self.__self = _self
+        self._subscription = subscription
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'SubscriptionLinkListLinks':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The SubscriptionLinkList__links of this SubscriptionLinkListLinks.  # noqa: E501
+        :rtype: SubscriptionLinkListLinks
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def _self(self) -> LinkType:
+        """Gets the _self of this SubscriptionLinkListLinks.
+
+
+        :return: The _self of this SubscriptionLinkListLinks.
+        :rtype: LinkType
+        """
+        return self.__self
+
+    @_self.setter
+    def _self(self, _self: LinkType):
+        """Sets the _self of this SubscriptionLinkListLinks.
+
+
+        :param _self: The _self of this SubscriptionLinkListLinks.
+        :type _self: LinkType
+        """
+        if _self is None:
+            raise ValueError("Invalid value for `_self`, must not be `None`")  # noqa: E501
+
+        self.__self = _self
+
+    @property
+    def subscription(self) -> List[SubscriptionLinkListLinksSubscription]:
+        """Gets the subscription of this SubscriptionLinkListLinks.
+
+        A link to a subscription.  # noqa: E501
+
+        :return: The subscription of this SubscriptionLinkListLinks.
+        :rtype: List[SubscriptionLinkListLinksSubscription]
+        """
+        return self._subscription
+
+    @subscription.setter
+    def subscription(self, subscription: List[SubscriptionLinkListLinksSubscription]):
+        """Sets the subscription of this SubscriptionLinkListLinks.
+
+        A link to a subscription.  # noqa: E501
+
+        :param subscription: The subscription of this SubscriptionLinkListLinks.
+        :type subscription: List[SubscriptionLinkListLinksSubscription]
+        """
+
+        self._subscription = subscription
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links_subscription.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links_subscription.py
new file mode 100644
index 0000000000000000000000000000000000000000..3479b5168262444b534df35da03d83bf90567305
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/subscription_link_list_links_subscription.py
@@ -0,0 +1,92 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class SubscriptionLinkListLinksSubscription(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, href: str=None, subscription_type: str=None):  # noqa: E501
+        """SubscriptionLinkListLinksSubscription - a model defined in Swagger
+
+        :param href: The href of this SubscriptionLinkListLinksSubscription.  # noqa: E501
+        :type href: str
+        :param subscription_type: The subscription_type of this SubscriptionLinkListLinksSubscription.  # noqa: E501
+        :type subscription_type: str
+        """
+        self.swagger_types = {
+            'href': str,
+            'subscription_type': str
+        }
+
+        self.attribute_map = {
+            'href': 'href',
+            'subscription_type': 'subscriptionType'
+        }
+        self._href = href
+        self._subscription_type = subscription_type
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'SubscriptionLinkListLinksSubscription':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The SubscriptionLinkList__links_subscription of this SubscriptionLinkListLinksSubscription.  # noqa: E501
+        :rtype: SubscriptionLinkListLinksSubscription
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def href(self) -> str:
+        """Gets the href of this SubscriptionLinkListLinksSubscription.
+
+        The URI referring to the subscription.  # noqa: E501
+
+        :return: The href of this SubscriptionLinkListLinksSubscription.
+        :rtype: str
+        """
+        return self._href
+
+    @href.setter
+    def href(self, href: str):
+        """Sets the href of this SubscriptionLinkListLinksSubscription.
+
+        The URI referring to the subscription.  # noqa: E501
+
+        :param href: The href of this SubscriptionLinkListLinksSubscription.
+        :type href: str
+        """
+
+        self._href = href
+
+    @property
+    def subscription_type(self) -> str:
+        """Gets the subscription_type of this SubscriptionLinkListLinksSubscription.
+
+        Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type event defined in clause 6.3.  # noqa: E501
+
+        :return: The subscription_type of this SubscriptionLinkListLinksSubscription.
+        :rtype: str
+        """
+        return self._subscription_type
+
+    @subscription_type.setter
+    def subscription_type(self, subscription_type: str):
+        """Sets the subscription_type of this SubscriptionLinkListLinksSubscription.
+
+        Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type event defined in clause 6.3.  # noqa: E501
+
+        :param subscription_type: The subscription_type of this SubscriptionLinkListLinksSubscription.
+        :type subscription_type: str
+        """
+
+        self._subscription_type = subscription_type
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/time_stamp.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/time_stamp.py
new file mode 100644
index 0000000000000000000000000000000000000000..b59df50eadfb2427daa4ee89fb005aa0dda2ee94
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/time_stamp.py
@@ -0,0 +1,96 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class TimeStamp(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+    def __init__(self, nano_seconds: int=None, seconds: int=None):  # noqa: E501
+        """TimeStamp - a model defined in Swagger
+
+        :param nano_seconds: The nano_seconds of this TimeStamp.  # noqa: E501
+        :type nano_seconds: int
+        :param seconds: The seconds of this TimeStamp.  # noqa: E501
+        :type seconds: int
+        """
+        self.swagger_types = {
+            'nano_seconds': int,
+            'seconds': int
+        }
+
+        self.attribute_map = {
+            'nano_seconds': 'nanoSeconds',
+            'seconds': 'seconds'
+        }
+        self._nano_seconds = nano_seconds
+        self._seconds = seconds
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'TimeStamp':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The TimeStamp of this TimeStamp.  # noqa: E501
+        :rtype: TimeStamp
+        """
+        return util.deserialize_model(dikt, cls)
+
+    @property
+    def nano_seconds(self) -> int:
+        """Gets the nano_seconds of this TimeStamp.
+
+        The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.  # noqa: E501
+
+        :return: The nano_seconds of this TimeStamp.
+        :rtype: int
+        """
+        return self._nano_seconds
+
+    @nano_seconds.setter
+    def nano_seconds(self, nano_seconds: int):
+        """Sets the nano_seconds of this TimeStamp.
+
+        The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.  # noqa: E501
+
+        :param nano_seconds: The nano_seconds of this TimeStamp.
+        :type nano_seconds: int
+        """
+        if nano_seconds is None:
+            raise ValueError("Invalid value for `nano_seconds`, must not be `None`")  # noqa: E501
+
+        self._nano_seconds = nano_seconds
+
+    @property
+    def seconds(self) -> int:
+        """Gets the seconds of this TimeStamp.
+
+        The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.  # noqa: E501
+
+        :return: The seconds of this TimeStamp.
+        :rtype: int
+        """
+        return self._seconds
+
+    @seconds.setter
+    def seconds(self, seconds: int):
+        """Sets the seconds of this TimeStamp.
+
+        The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.  # noqa: E501
+
+        :param seconds: The seconds of this TimeStamp.
+        :type seconds: int
+        """
+        if seconds is None:
+            raise ValueError("Invalid value for `seconds`, must not be `None`")  # noqa: E501
+
+        self._seconds = seconds
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea0e0566e9cac5b65da48796a2286a05e4c86a3f
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger.py
@@ -0,0 +1,63 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class Trigger(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+
+    """
+    allowed enum values
+    """
+    _0 = "0"
+    _1 = "1"
+    _2 = "2"
+    _3 = "3"
+    _4 = "4"
+    _5 = "5"
+    _10 = "10"
+    _11 = "11"
+    _12 = "12"
+    _13 = "13"
+    _14 = "14"
+    _15 = "15"
+    _20 = "20"
+    _21 = "21"
+    _30 = "30"
+    _31 = "31"
+    _40 = "40"
+    _41 = "41"
+    _42 = "42"
+    _50 = "50"
+    _51 = "51"
+    _60 = "60"
+    _61 = "61"
+    def __init__(self):  # noqa: E501
+        """Trigger - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'Trigger':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The Trigger of this Trigger.  # noqa: E501
+        :rtype: Trigger
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger_nr.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger_nr.py
new file mode 100644
index 0000000000000000000000000000000000000000..a90d39005406545ea81e766c445750e0fa0fc2b0
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/models/trigger_nr.py
@@ -0,0 +1,53 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+from datetime import date, datetime  # noqa: F401
+
+from typing import List, Dict  # noqa: F401
+
+from swagger_server.models.base_model_ import Model
+from swagger_server import util
+
+
+class TriggerNr(Model):
+    """NOTE: This class is auto generated by the swagger code generator program.
+
+    Do not edit the class manually.
+    """
+
+    """
+    allowed enum values
+    """
+    _0 = "0"
+    _1 = "1"
+    _2 = "2"
+    _10 = "10"
+    _11 = "11"
+    _12 = "12"
+    _13 = "13"
+    _14 = "14"
+    _15 = "15"
+    _20 = "20"
+    _21 = "21"
+    _30 = "30"
+    _31 = "31"
+    def __init__(self):  # noqa: E501
+        """TriggerNr - a model defined in Swagger
+
+        """
+        self.swagger_types = {
+        }
+
+        self.attribute_map = {
+        }
+
+    @classmethod
+    def from_dict(cls, dikt) -> 'TriggerNr':
+        """Returns the dict as a model
+
+        :param dikt: A dict.
+        :type: dict
+        :return: The TriggerNr of this TriggerNr.  # noqa: E501
+        :rtype: TriggerNr
+        """
+        return util.deserialize_model(dikt, cls)
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/swagger/swagger.yaml b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/swagger/swagger.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fdba56e8d3a929b22e210c87387e726d8cdd331b
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/swagger/swagger.yaml
@@ -0,0 +1,4932 @@
+openapi: 3.0.0
+info:
+  title: ETSI GS MEC 012 - Radio Network Information API
+  description: The ETSI MEC ISG MEC012 Radio Network Information API described using
+    OpenAPI.
+  contact:
+    url: https://forge.etsi.org/rep/mec/gs012-rnis-api
+  license:
+    name: BSD-3-Clause
+    url: https://forge.etsi.org/legal-matters
+  version: 2.1.1
+externalDocs:
+  description: "ETSI GS MEC 012 Radio Network Information API, V2.1.1"
+  url: http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_mec012v020101p.pdf
+servers:
+- url: https://localhost/rni/v2
+tags:
+- name: rni
+paths:
+  /queries/rab_info:
+    get:
+      tags:
+      - rni
+      summary: Retrieve information on Radio Access Bearers
+      description: Queries information about the Radio Access Bearers
+      operationId: rab_info_get
+      parameters:
+      - name: app_ins_id
+        in: query
+        description: Application instance identifier
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: string
+        x-exportParamName: AppInsId
+        x-optionalDataType: String
+      - name: cell_id
+        in: query
+        description: Comma separated list of E-UTRAN Cell Identities
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: CellId
+      - name: ue_ipv4_address
+        in: query
+        description: Comma separated list of IE IPv4 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv4Address
+      - name: ue_ipv6_address
+        in: query
+        description: Comma separated list of IE IPv6 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv6Address
+      - name: nated_ip_address
+        in: query
+        description: Comma separated list of IE NATed IP addresses as defined for
+          the type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: NatedIpAddress
+      - name: gtp_teid
+        in: query
+        description: Comma separated list of GTP TEID addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: GtpTeid
+      - name: erab_id
+        in: query
+        description: E-RAB identifier
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: ErabId
+        x-optionalDataType: Int32
+      - name: qci
+        in: query
+        description: QoS Class Identifier as defined in ETSI TS 123 401
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: Qci
+        x-optionalDataType: Int32
+      - name: erab_mbr_dl
+        in: query
+        description: Maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: ErabMbrDl
+        x-optionalDataType: Int32
+      - name: erab_mbr_ul
+        in: query
+        description: Maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: ErabMbrUl
+        x-optionalDataType: Int32
+      - name: erab_gbr_dl
+        in: query
+        description: Guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123
+          401
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: ErabGbrDl
+        x-optionalDataType: Int32
+      - name: erab_gbr_ul
+        in: query
+        description: Guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+          format: int32
+        x-exportParamName: ErabGbrUl
+        x-optionalDataType: Int32
+      responses:
+        "200":
+          description: Successful response to rab_info request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RabInfo'
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: queries
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+  /queries/plmn_info:
+    get:
+      tags:
+      - rni
+      summary: Retrieve information on the underlying Mobile Network that the MEC
+        application is associated to
+      description: Queries information about the Mobile Network
+      operationId: plmn_info_get
+      parameters:
+      - name: app_ins_id
+        in: query
+        description: Comma separated list of Application instance identifiers
+        required: true
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: AppInsIdArr
+      responses:
+        "200":
+          description: Successful response to plmn_info request
+          content:
+            application/json:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PlmnInfo'
+                x-content-type: application/json
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: queries
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+  /queries/s1_bearer_info:
+    get:
+      tags:
+      - rni
+      summary: Retrieve S1-U bearer information related to specific UE(s)
+      description: Queries information about the S1 bearer(s)
+      operationId: s1_bearer_info_get
+      parameters:
+      - name: temp_ue_id
+        in: query
+        description: Comma separated list of temporary identifiers allocated for the
+          specific UE as defined in   ETSI TS 136 413
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: TempUeId
+      - name: ue_ipv4_address
+        in: query
+        description: Comma separated list of IE IPv4 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv4Address
+      - name: ue_ipv6_address
+        in: query
+        description: Comma separated list of IE IPv6 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv6Address
+      - name: nated_ip_address
+        in: query
+        description: Comma separated list of IE NATed IP addresses as defined for
+          the type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: NatedIpAddress
+      - name: gtp_teid
+        in: query
+        description: Comma separated list of GTP TEID addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: GtpTeid
+      - name: cell_id
+        in: query
+        description: Comma separated list of E-UTRAN Cell Identities
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: CellId
+      - name: erab_id
+        in: query
+        description: Comma separated list of E-RAB identifiers
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: integer
+            format: int32
+        x-exportParamName: ErabIdArr
+      responses:
+        "200":
+          description: Successful response to s1_bearer_info request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/S1BearerInfo'
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: queries
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+  /queries/layer2_meas:
+    get:
+      tags:
+      - rni
+      summary: Retrieve information on layer 2 measurements
+      description: Queries information about the layer 2 measurements.
+      operationId: layer2_meas_info_get
+      parameters:
+      - name: app_ins_id
+        in: query
+        description: Application instance identifier
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: string
+        x-exportParamName: AppInsId
+        x-optionalDataType: String
+      - name: cell_id
+        in: query
+        description: Comma separated list of E-UTRAN Cell Identities
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: CellId
+      - name: ue_ipv4_address
+        in: query
+        description: Comma separated list of IE IPv4 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv4Address
+      - name: ue_ipv6_address
+        in: query
+        description: Comma separated list of IE IPv6 addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: UeIpv6Address
+      - name: nated_ip_address
+        in: query
+        description: Comma separated list of IE NATed IP addresses as defined for
+          the type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: NatedIpAddress
+      - name: gtp_teid
+        in: query
+        description: Comma separated list of GTP TEID addresses as defined for the
+          type for AssociateId
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: array
+          items:
+            type: string
+        x-exportParamName: GtpTeid
+      - name: dl_gbr_prb_usage_cell
+        in: query
+        description: PRB usage for downlink GBR traffic in percentage as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrPrbUsageCell
+      - name: ul_gbr_prb_usage_cell
+        in: query
+        description: PRB usage for uplink GBR traffic in percentage as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrPrbUsageCell
+      - name: dl_nongbr_prb_usage_cell
+        in: query
+        description: PRB usage for downlink non-GBR traffic in percentage as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrPrbUsageCell
+      - name: ul_nongbr_prb_usage_cell
+        in: query
+        description: PRB usage for uplink non-GBR traffic in percentage as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrPrbUsageCell
+      - name: dl_total_prb_usage_cell
+        in: query
+        description: PRB usage for total downlink traffic in percentage as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlTotalPrbUsageCell
+      - name: ul_total_prb_usage_cell
+        in: query
+        description: PRB usage for total uplink traffic in percentage as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlTotalPrbUsageCell
+      - name: received_dedicated_preambles_cell
+        in: query
+        description: Received dedicated preambles in percentage as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: ReceivedDedicatedPreamblesCell
+      - name: received_randomly_selected_preambles_low_range_cell
+        in: query
+        description: Received randomly selected preambles in the low range in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: ReceivedRandomPreamblesLowRangeCell
+      - name: received_randomly_selected_preambles_high_range_cell
+        in: query
+        description: Received rendomly selected preambles in the high range in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: ReceivedRandomPreamblesHighRangeCell
+      - name: number_of_active_ue_dl_gbr_cell
+        in: query
+        description: Number of active UEs with downlink GBR traffic as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: NumberOfActiveUeDlGbrCell
+      - name: number_of_active_ue_ul_gbr_cell
+        in: query
+        description: Number of active UEs with uplink GBR traffic as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: NumberOfActiveUeUlGbrCell
+      - name: number_of_active_ue_dl_nongbr_cell
+        in: query
+        description: Number of active UEs with downlink non-GBR traffic as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: NumberOfActiveUeDlNonGbrCell
+      - name: number_of_active_ue_ul_nongbr_cell
+        in: query
+        description: Number of active UEs with uplink non-GBR traffic as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: NumberOfActiveUeUlNonGbrCell
+      - name: dl_gbr_pdr_cell
+        in: query
+        description: Packet discard rate for downlink GBR traffic in percentage as
+          defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrPdrCell
+      - name: ul_gbr_pdr_cell
+        in: query
+        description: Packet discard rate for uplink GBR traffic in percentage as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrPdrCell
+      - name: dl_nongbr_pdr_cell
+        in: query
+        description: Packet discard rate for downlink non-GBR traffic in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrPdrCell
+      - name: ul_nongbr_pdr_cell
+        in: query
+        description: Packet discard rate for uplink non-GBR traffic in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrPdrCell
+      - name: dl_gbr_delay_ue
+        in: query
+        description: Packet delay of downlink GBR traffic of a UE as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrDelayUe
+      - name: ul_gbr_delay_ue
+        in: query
+        description: Packet delay of uplink GBR traffic of a UE as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrDelayUe
+      - name: dl_nongbr_delay_ue
+        in: query
+        description: Packet delay of downlink non-GBR traffic of a UE as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrDelayUe
+      - name: ul_nongbr_delay_ue
+        in: query
+        description: Packet delay of uplink non-GBR traffic of a UE as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrDelayUe
+      - name: dl_gbr_pdr_ue
+        in: query
+        description: Packet discard rate of downlink GBR traffic of a UE in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrPdrUe
+      - name: ul_gbr_pdr_ue
+        in: query
+        description: Packet discard rate of uplink GBR traffic of a UE in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrPdrUe
+      - name: dl_nongbr_pdr_ue
+        in: query
+        description: Packet discard rate of downlink non-GBR traffic of a UE in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrPdrUe
+      - name: ul_nongbr_pdr_ue
+        in: query
+        description: Packet discard rate of uplink non-GBR traffic of a UE in percentage
+          as defined in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrPdrUe
+      - name: dl_gbr_throughput_ue
+        in: query
+        description: Scheduled throughput of downlink GBR traffic of a UE as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrThroughputUe
+      - name: ul_gbr_throughput_ue
+        in: query
+        description: Scheduled throughput of uplink GBR traffic of a UE as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrThroughputUe
+      - name: dl_nongbr_throughput_ue
+        in: query
+        description: Scheduled throughput of downlink non-GBR traffic of a UE as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrThroughputUe
+      - name: ul_nongbr_throughput_ue
+        in: query
+        description: Scheduled throughput of uplink non-GBR traffic of a UE as defined
+          in ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrThroughputUe
+      - name: dl_gbr_data_volume_ue
+        in: query
+        description: Data volume of downlink GBR traffic of a UE as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlGbrDataVolumeUe
+      - name: ul_gbr_data_volume_ue
+        in: query
+        description: Data volume of uplink GBR traffic of a UE as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlGbrDataVolumeUe
+      - name: dl_nongbr_data_volume_ue
+        in: query
+        description: Data volume of downlink non-GBR traffic of a UE as defined in
+          ETSI TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: DlNonGbrDataVolumeUe
+      - name: ul_nongbr_data_volume_ue
+        in: query
+        description: Data volume of uplink non-GBR traffic of a UE as defined in ETSI
+          TS 136 314
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: integer
+        x-exportParamName: UlNonGbrDataVolumeUe
+      responses:
+        "200":
+          description: Successful response to layer2 measurements info request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/L2Meas'
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "414":
+          description: "URI Too Long : used to indicate that the server is refusing\
+            \ to process the request because the request URI is longer than the server\
+            \ is willing or able to process."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: queries
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+  /subscriptions:
+    get:
+      tags:
+      - rni
+      summary: Retrieve information on subscriptions for notifications
+      description: Queries information on subscriptions for notifications
+      operationId: subscription_link_list_subscriptions_get
+      parameters:
+      - name: subscription_type
+        in: query
+        description: "Filter on a specific subscription type. Permitted values: cell_change,\
+          \ rab_est, rab_mod, rab_rel, meas_rep_ue, nr_meas_rep_ue, timing_advance_ue,\
+          \ ca_reconf, s1_bearer."
+        required: false
+        style: form
+        explode: true
+        schema:
+          type: string
+        x-exportParamName: SubscriptionType
+      responses:
+        "200":
+          description: Response body contains the list of links to requestors subscriptions.
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SubscriptionLinkList'
+              example:
+                _links:
+                  self:
+                    href: http://meAppServer.example.com/rni/v2/subscriptions
+                subscription:
+                - _links:
+                    self:
+                      href: http://meAppServer.example.com/rni/v2/subscriptions/sub123
+                  callbackReference: http://my.callback.com/rni-cell-change/some-id
+                  subscriptionType: CellChangeSubscription
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: subscriptions
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+    post:
+      tags:
+      - rni
+      summary: Create a new subscription
+      description: Creates a new subscription to Radio Network Information notifications
+      operationId: subscriptions_post
+      requestBody:
+        description: Subscription to be created
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/InlineSubscription'
+            example:
+              subscriptionType: CellChangeSubscription
+              callbackReference: http://my.callback.com/rni-cell-change/some-id
+              filterCriteriaAssocHo:
+                appInstanceId: myApp
+                associateId:
+                - type: 1
+                  value: 10.100.0.1
+                ecgi:
+                - plmn:
+                    mnc: "01"
+                    mcc: "001"
+                  cellId: ACBDEFA
+                hoStatus:
+                - 1
+                - 2
+              expiryDeadline:
+                seconds: 1977836800
+                nanoseconds: 0
+        required: true
+      responses:
+        "201":
+          description: Successful subscription
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InlineSubscription'
+              example:
+                subscriptionType: CellChangeSubscription
+                callbackReference: http://my.callback.com/rni-cell-change/some-id
+                _links:
+                  self:
+                    href: http://meAppServer.example.com/rni/v2/subscriptions/sub123
+                filterCriteriaAssocHo:
+                  appInstanceId: myApp
+                  associateId:
+                  - type: 1
+                    value: 10.100.0.1
+                  ecgi:
+                  - plmn:
+                      mnc: "01"
+                      mcc: "001"
+                    cellId: ACBDEFA
+                  hoStatus:
+                  - 1
+                  - 2
+                expiryDeadline:
+                  seconds: 1977836800
+                  nanoseconds: 0
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "415":
+          description: "Precondition failed :  used when a condition has failed during\
+            \ conditional requests, e.g. when using ETags to avoid write conflicts\
+            \ when using PUT"
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "422":
+          description: "Unprocessable Entity : used to indicate that the server understands\
+            \ the content type of the request entity and that the syntax of the request\
+            \ entity is correct but that the server is unable to process the contained\
+            \ instructions. This error condition can occur if an JSON request body\
+            \ is syntactically correct but semantically incorrect, for example if\
+            \ the target area for the request is considered too large. This error\
+            \ condition can also occur if the capabilities required by the request\
+            \ are not supported."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+              example:
+                application/problem+json:
+                  type: https://meAppServer.example.com/rni/v2/probs/too-many targets
+                  title: Too many targets
+                  status: "422"
+                  detail: The target area for the request is considered too large
+                  instance: /meAppClient.example.com/77777/msgs/abc
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      callbacks:
+        notification:
+          '{$request.body#/notificationSubscription.callbackReference}':
+            post:
+              summary: Callback POST used to send a notification
+              description: "Notification from RNIS, content based on subscription\
+                \ type"
+              operationId: notificationPOST
+              requestBody:
+                description: Subscription notification
+                content:
+                  application/json:
+                    schema:
+                      $ref: '#/components/schemas/InlineNotification'
+                    example:
+                      notificationType: CellChangeNotification
+                      associateId:
+                      - type: 1
+                        value: 10.100.0.1
+                      hoStatus: 1
+                      srcEcgi:
+                        plmn:
+                          mnc: "01"
+                          mcc: "001"
+                        cellId: ACBDEFA
+                      tempUeId:
+                        mmec: 1
+                        mtmsi: 1011231231234
+                      timeStamp:
+                        seconds: 1977836800
+                        nanoseconds: 0
+                      trgEcgi:
+                        plmn:
+                          mnc: "01"
+                          mcc: "001"
+                        cellId: FEDCBAA
+                required: true
+              responses:
+                "204":
+                  description: No Content
+      x-swagger-router-controller: subscriptions
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+  /subscriptions/{subscriptionId}:
+    get:
+      tags:
+      - rni
+      summary: Retrieve information on current specific subscription
+      description: "Queries information about an existing subscription, identified\
+        \ by its self-referring URI returned on creation (initial POST)"
+      operationId: subscriptions_get
+      parameters:
+      - name: subscriptionId
+        in: path
+        description: "Subscription Id, specifically the \"Self-referring URI\" returned\
+          \ in the subscription request"
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+          format: uri
+        x-exportParamName: SubscriptionId
+      responses:
+        "200":
+          description: Subscription information regarding subscription notifications
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InlineSubscription'
+              example:
+                subscriptionType: CellChangeSubscription
+                callbackReference: http://my.callback.com/rni-cell-change/some-id
+                _links:
+                  self:
+                    href: http://meAppServer.example.com/rni/v2/subscriptions/sub123
+                filterCriteriaAssocHo:
+                  appInstanceId: myApp
+                  associateId:
+                  - type: 1
+                    value: 10.100.0.1
+                  ecgi:
+                  - plmn:
+                      mnc: "01"
+                      mcc: "001"
+                    cellId: ACBDEFA
+                  hoStatus:
+                  - 1
+                  - 2
+                expiryDeadline:
+                  seconds: 1977836800
+                  nanoseconds: 0
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: subscriptions
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+    put:
+      tags:
+      - rni
+      summary: Modify an existing subscription
+      description: "Updates an existing subscription, identified by its self-referring\
+        \ URI returned on creation (initial POST)"
+      operationId: subscriptions_put
+      parameters:
+      - name: subscriptionId
+        in: path
+        description: "Subscription Id, specifically the \"Self-referring URI\" returned\
+          \ in the subscription request"
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+          format: uri
+        x-exportParamName: SubscriptionId
+      requestBody:
+        description: Subscription to be modified
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/InlineSubscription'
+            example:
+              subscriptionType: CellChangeSubscription
+              callbackReference: http://my.callback.com/rni-cell-change/some-id
+              _links:
+                self:
+                  href: http://meAppServer.example.com/rni/v2/subscriptions/sub123
+              filterCriteriaAssocHo:
+                appInstanceId: myApp
+                associateId:
+                - type: 1
+                  value: 10.100.0.1
+                ecgi:
+                - plmn:
+                    mnc: "01"
+                    mcc: "001"
+                  cellId: ACBDEFA
+                hoStatus:
+                - 1
+                - 2
+              expiryDeadline:
+                seconds: 1977836800
+                nanoseconds: 0
+        required: true
+      responses:
+        "200":
+          description: Successful subscription to response to subscription notifications
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/InlineSubscription'
+              example:
+                subscriptionType: CellChangeSubscription
+                callbackReference: http://my.callback.com/rni-cell-change/some-id
+                _links:
+                  self:
+                    href: http://meAppServer.example.com/rni/v2/subscriptions/sub123
+                filterCriteriaAssocHo:
+                  appInstanceId: myApp
+                  associateId:
+                  - type: 1
+                    value: 10.100.0.1
+                  ecgi:
+                  - plmn:
+                      mnc: "01"
+                      mcc: "001"
+                    cellId: ACBDEFA
+                  hoStatus:
+                  - 1
+                  - 2
+                expiryDeadline:
+                  seconds: 1977836800
+                  nanoseconds: 0
+        "400":
+          description: "Bad Request : used to indicate that incorrect parameters were\
+            \ passed to the request."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "406":
+          description: "Not Acceptable : used to indicate that the server cannot provide\
+            \ the any of the content formats supported by the client."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "412":
+          description: "Precondition failed :  used when a condition has failed during\
+            \ conditional requests, e.g. when using ETags to avoid write conflicts\
+            \ when using PUT"
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "422":
+          description: "Unprocessable Entity : used to indicate that the server understands\
+            \ the content type of the request entity and that the syntax of the request\
+            \ entity is correct but that the server is unable to process the contained\
+            \ instructions. This error condition can occur if an JSON request body\
+            \ is syntactically correct but semantically incorrect, for example if\
+            \ the target area for the request is considered too large. This error\
+            \ condition can also occur if the capabilities required by the request\
+            \ are not supported."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+              example:
+                application/problem+json:
+                  type: https://meAppServer.example.com/rni/v2/probs/too-many targets
+                  title: Too many targets
+                  status: "422"
+                  detail: The target area for the request is considered too large
+                  instance: /meAppClient.example.com/77777/msgs/abc
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: subscriptions
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+    delete:
+      tags:
+      - rni
+      summary: Cancel an existing subscription
+      description: "Cancels an existing subscription, identified by its self-referring\
+        \ URI returned on creation (initial POST)"
+      operationId: subscriptions_delete
+      parameters:
+      - name: subscriptionId
+        in: path
+        description: "Subscription Id, specifically the \"Self-referring URI\" returned\
+          \ in the subscription request"
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+          format: uri
+        x-exportParamName: SubscriptionId
+      responses:
+        "204":
+          description: No Content
+        "401":
+          description: "Unauthorized :  used when the client did not submit credentials."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "403":
+          description: "Forbidden :  operation is not allowed given the current status\
+            \ of the resource."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "404":
+          description: "Not Found :  used when a client provided a URI that cannot\
+            \ be mapped to a valid resource URI."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+        "429":
+          description: "Too Many Requests : used when a rate limiter has triggered."
+          content:
+            application/problem+json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+      x-swagger-router-controller: subscriptions
+      x-openapi-router-controller: swagger_server.controllers.rni_controller
+components:
+  schemas:
+    AssociateId:
+      properties:
+        type:
+          type: integer
+          description: "Numeric value (0-255) corresponding to specified type of identifier\
+            \ as following: <p>0 = reserved. <p>1 = UE_IPv4_ADDRESS. <p>2 = UE_IPV6_ADDRESS.\
+            \ <p>3 = NATED_IP_ADDRESS. <p>4 = GTP_TEID."
+          enum:
+          - 0
+          - 1
+          - 2
+          - 3
+          - 4
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Enum
+        value:
+          type: string
+          description: Value for the identifier.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      example:
+        type: 0
+        value: value
+    CaReconfNotification:
+      required:
+      - ecgi
+      - notificationType
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        carrierAggregationMeasInfo:
+          minItems: 0
+          required:
+          - cellIdNei
+          - cellIdSrv
+          type: array
+          description: This parameter can be repeated to contain information of all
+            the carriers assign for Carrier Aggregation up to M.
+          items:
+            $ref: '#/components/schemas/CaReconfNotification_carrierAggregationMeasInfo'
+          x-etsi-mec-cardinality: 0..M
+          x-etsi-mec-origin-type: Structure (inlined)
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        notificationType:
+          type: string
+          description: Shall be set to "CaReConfNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        secondaryCellAdd:
+          minItems: 0
+          required:
+          - ecgi
+          type: array
+          description: ""
+          items:
+            $ref: '#/components/schemas/CaReconfNotification_secondaryCellAdd'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        secondaryCellRemove:
+          minItems: 0
+          required:
+          - ecgi
+          type: array
+          description: ""
+          items:
+            $ref: '#/components/schemas/CaReconfNotification_secondaryCellAdd'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.8
+    CaReconfSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaAssoc
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaAssoc:
+          $ref: '#/components/schemas/CaReconfSubscription_filterCriteriaAssoc'
+        subscriptionType:
+          type: string
+          description: Shall be set to "CaReconfSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.8
+    CellChangeNotification:
+      required:
+      - hoStatus
+      - notificationType
+      - srcEcgi
+      - trgEcgi
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        hoStatus:
+          type: integer
+          description: "Indicate the status of the UE handover procedure. Values are\
+            \ defined as following: <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3\
+            \ = COMPLETED. <p>4 = REJECTED. <p>5 = CANCELLED."
+          enum:
+          - 1
+          - 2
+          - 3
+          - 4
+          - 5
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Enum
+        notificationType:
+          type: string
+          description: Shall be set to "CellChangeNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        srcEcgi:
+          $ref: '#/components/schemas/Ecgi'
+        tempUeId:
+          $ref: '#/components/schemas/CellChangeNotification_tempUeId'
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+        trgEcgi:
+          minItems: 1
+          type: array
+          description: |-
+            E-UTRAN Cell Global Identifier of the target cell.
+            NOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Ecgi
+      x-etsi-ref: 6.4.2
+    CellChangeSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaAssocHo
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumerto receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaAssocHo:
+          $ref: '#/components/schemas/CellChangeSubscription_filterCriteriaAssocHo'
+        subscriptionType:
+          type: string
+          description: Shall be set to "CellChangeSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.2
+    CellId:
+      type: string
+      description: "String representing the E-UTRAN Cell Identity. Encoded as a bit\
+        \ string (size (28)) as defined in ETSI TS 136 413 [i.3]."
+    Ecgi:
+      required:
+      - cellId
+      - plmn
+      type: object
+      properties:
+        cellId:
+          $ref: '#/components/schemas/CellId'
+        plmn:
+          $ref: '#/components/schemas/Plmn'
+      example:
+        plmn:
+          mnc: mnc
+          mcc: mcc
+        cellId: cellId
+      x-etsi-ref: 6.5.6
+    Enum:
+      type: integer
+    ExpiryNotification:
+      required:
+      - _links
+      - expiryDeadline
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/ExpiryNotification__links'
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.9
+    L2Meas:
+      type: object
+      properties:
+        cellInfo:
+          minItems: 0
+          required:
+          - ecgi
+          type: array
+          description: The per cell measurement information as defined below.
+          items:
+            $ref: '#/components/schemas/L2Meas_cellInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        cellUEInfo:
+          minItems: 0
+          required:
+          - associateId
+          - ecgi
+          type: array
+          description: The per cell per UE layer 2 measurements information as defined
+            below.
+          items:
+            $ref: '#/components/schemas/L2Meas_cellUEInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      example:
+        timeStamp:
+          seconds: 3
+          nanoSeconds: 9
+        cellUEInfo:
+        - dl_gbr_delay_ue: 4
+          ul_nongbr_data_volume_ue: 2
+          dl_nongbr_delay_ue: 6
+          ul_gbr_delay_ue: 3
+          ul_gbr_throughput_ue: 1
+          ul_nongbr_delay_ue: 6
+          dl_nongbr_throughput_ue: 9
+          ul_gbr_data_volume_ue: 6
+          dl_nongbr_data_volume_ue: 9
+          ecgi: null
+          dl_gbr_data_volume_ue: 1
+          associateId:
+            type: 0
+            value: value
+          dl_gbr_throughput_ue: 9
+          dl_nongbr_pdr_ue: 8
+          ul_nongbr_throughput_ue: 5
+          ul_nongbr_pdr_ue: 6
+          dl_gbr_pdr_ue: 5
+          ul_gbr_pdr_ue: 6
+        - dl_gbr_delay_ue: 4
+          ul_nongbr_data_volume_ue: 2
+          dl_nongbr_delay_ue: 6
+          ul_gbr_delay_ue: 3
+          ul_gbr_throughput_ue: 1
+          ul_nongbr_delay_ue: 6
+          dl_nongbr_throughput_ue: 9
+          ul_gbr_data_volume_ue: 6
+          dl_nongbr_data_volume_ue: 9
+          ecgi: null
+          dl_gbr_data_volume_ue: 1
+          associateId:
+            type: 0
+            value: value
+          dl_gbr_throughput_ue: 9
+          dl_nongbr_pdr_ue: 8
+          ul_nongbr_throughput_ue: 5
+          ul_nongbr_pdr_ue: 6
+          dl_gbr_pdr_ue: 5
+          ul_gbr_pdr_ue: 6
+        cellInfo:
+        - number_of_active_ue_dl_nongbr_cell: 7
+          ul_total_prb_usage_cell: 7
+          received_dedicated_preambles_cell: 2
+          dl_total_prb_usage_cell: 5
+          ul_gbr_prb_usage_cell: 1
+          dl_gbr_pdr_cell: 0
+          number_of_active_ue_ul_gbr_cell: 9
+          ul_nongbr_pdr_cell: 1
+          dl_nongbr_pdr_cell: 1
+          number_of_active_ue_dl_gbr_cell: 2
+          ecgi:
+            plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          ul_gbr_pdr_cell: 1
+          ul_nongbr_prb_usage_cell: 6
+          received_randomly_selected_preambles_low_range_cell: 7
+          number_of_active_ue_ul_nongbr_cell: 3
+          received_randomly_selected_preambles_high_range_cell: 4
+          dl_nongbr_prb_usage_cell: 5
+          dl_gbr_prb_usage_cell: 6
+        - number_of_active_ue_dl_nongbr_cell: 7
+          ul_total_prb_usage_cell: 7
+          received_dedicated_preambles_cell: 2
+          dl_total_prb_usage_cell: 5
+          ul_gbr_prb_usage_cell: 1
+          dl_gbr_pdr_cell: 0
+          number_of_active_ue_ul_gbr_cell: 9
+          ul_nongbr_pdr_cell: 1
+          dl_nongbr_pdr_cell: 1
+          number_of_active_ue_dl_gbr_cell: 2
+          ecgi:
+            plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          ul_gbr_pdr_cell: 1
+          ul_nongbr_prb_usage_cell: 6
+          received_randomly_selected_preambles_low_range_cell: 7
+          number_of_active_ue_ul_nongbr_cell: 3
+          received_randomly_selected_preambles_high_range_cell: 4
+          dl_nongbr_prb_usage_cell: 5
+          dl_gbr_prb_usage_cell: 6
+      x-etsi-ref: 6.2.4a
+    LinkType:
+      required:
+      - href
+      type: object
+      properties:
+        href:
+          type: string
+          description: URI referring to a resource
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+      example:
+        href: http://example.com/aeiou
+      x-etsi-ref: 6.5.2
+    MeasQuantityResultsNr:
+      type: object
+      properties:
+        rsrp:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_138\
+            \ 331 [i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrq:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 138\
+            \ 331 [i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinr:
+          type: integer
+          description: "Reference Signal to Interference & Noise Ratio as defined\
+            \ in ETSI TS 138 331 [i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+      x-etsi-ref: 6.5.11
+    MeasRepUeNotification:
+      required:
+      - ecgi
+      - notificationType
+      - rsrp
+      - rsrq
+      - trigger
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        carrierAggregationMeasInfo:
+          minItems: 0
+          required:
+          - cellIdSrv
+          type: array
+          description: This parameter can be repeated to contain information of all
+            the carriers assign for Carrier Aggregation up to M.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_carrierAggregationMeasInfo'
+          x-etsi-mec-cardinality: 0..M
+          x-etsi-mec-origin-type: Structure (inlined)
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        eutranNeighbourCellMeasInfo:
+          minItems: 0
+          required:
+          - ecgi
+          type: array
+          description: This parameter can be repeated to contain information of all
+            the neighbouring cells up to N.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_eutranNeighbourCellMeasInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        heightUe:
+          type: integer
+          description: "Indicates height of the UE in meters relative to the sea level\
+            \ as defined in ETSI TS 136.331 [i.7]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Int
+        newRadioMeasInfo:
+          minItems: 0
+          required:
+          - nrCarrierFreq
+          - nrSCs
+          type: array
+          description: 5G New Radio secondary serving cells measurement information.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_newRadioMeasInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        newRadioMeasNeiInfo:
+          minItems: 0
+          required:
+          - nrNCellInfo
+          type: array
+          description: Measurement quantities concerning the 5G NR neighbours.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_newRadioMeasNeiInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        notificationType:
+          type: string
+          description: Shall be set to "MeasRepUeNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        rsrp:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        rsrpEx:
+          type: integer
+          description: "Extended Reference Signal Received Power, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrq:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        rsrqEx:
+          type: integer
+          description: "Extended Reference Signal Received Quality, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinr:
+          type: integer
+          description: "Reference Signal \"Signal to Interference plus Noise Ratio\"\
+            , with value mapping defined in ETSI TS\_136\_133\_[i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+        trigger:
+          $ref: '#/components/schemas/Trigger'
+      x-etsi-ref: 6.4.6
+    MeasRepUeSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaAssocTri
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaAssocTri:
+          $ref: '#/components/schemas/MeasRepUeSubscription_filterCriteriaAssocTri'
+        subscriptionType:
+          type: string
+          description: Shall be set to "MeasRepUeSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.6
+    MeasTaNotification:
+      required:
+      - ecgi
+      - notificationType
+      - timingAdvance
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        notificationType:
+          type: string
+          description: Shall be set to "MeasTaNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+        timingAdvance:
+          type: integer
+          description: "The timing advance as defined in ETSI TS 136 214 [i.5]."
+          format: uint32
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint32
+      x-etsi-ref: 6.4.7
+    MeasTaSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaAssoc
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaAssoc:
+          $ref: '#/components/schemas/CaReconfSubscription_filterCriteriaAssoc'
+        subscriptionType:
+          type: string
+          description: Shall be set to "MeasTaSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.7
+    NRcgi:
+      required:
+      - nrcellId
+      - plmn
+      type: object
+      properties:
+        nrcellId:
+          $ref: '#/components/schemas/NrCellId'
+        plmn:
+          $ref: '#/components/schemas/Plmn'
+      x-etsi-ref: 6.5.7
+    NrCellId:
+      type: string
+      description: "String representing the NR Cell Identity. Encoded as a bit string\
+        \ (size (36)) as defined in ETSI TS 138 423 [i.17]."
+    NrMeasRepUeNotification:
+      required:
+      - notificationType
+      - triggerNr
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        eutraNeighCellMeasInfo:
+          minItems: 0
+          required:
+          - ecgi
+          type: array
+          description: This parameter can be repeated to contain measurement information
+            of all the neighbouring cells up to N. It shall not be included if nrNeighCellMeasInfo
+            is included.
+          items:
+            $ref: '#/components/schemas/NrMeasRepUeNotification_eutraNeighCellMeasInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        notificationType:
+          type: string
+          description: Shall be set to "NrMeasRepUeNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        nrNeighCellMeasInfo:
+          minItems: 0
+          required:
+          - nrcgi
+          type: array
+          description: This parameter can be repeated to contain measurement information
+            of all the neighbouring cells up to N. It shall not be included if eutraNeighCellMeasInfo
+            is included.
+          items:
+            $ref: '#/components/schemas/NrMeasRepUeNotification_nrNeighCellMeasInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        servCellMeasInfo:
+          minItems: 0
+          required:
+          - nrcgi
+          - sCell
+          type: array
+          description: This parameter can be repeated to contain information of all
+            the serving cells up to N.
+          items:
+            $ref: '#/components/schemas/NrMeasRepUeNotification_servCellMeasInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+        triggerNr:
+          $ref: '#/components/schemas/TriggerNr'
+      x-etsi-ref: 6.4.11
+    NrMeasRepUeSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaNrMrs
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaNrMrs:
+          $ref: '#/components/schemas/NrMeasRepUeSubscription_filterCriteriaNrMrs'
+        subscriptionType:
+          type: string
+          description: Shall be set to "NrMeasRepUeSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.11
+    Plmn:
+      required:
+      - mcc
+      - mnc
+      type: object
+      properties:
+        mcc:
+          type: string
+          description: "The Mobile Country Code part of PLMN Identity as defined in\
+            \ ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        mnc:
+          type: string
+          description: "The Mobile Network Code part of PLMN Identity as defined in\
+            \ ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      example:
+        mnc: mnc
+        mcc: mcc
+      x-etsi-ref: 6.5.5
+    PlmnInfo:
+      required:
+      - appInstanceId
+      - plmn
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        plmn:
+          minItems: 1
+          type: array
+          description: Public Land Mobile Network Identity.
+          items:
+            $ref: '#/components/schemas/Plmn'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Plmn
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      example:
+        appInstanceId: appInstanceId
+        timeStamp:
+          seconds: 3
+          nanoSeconds: 9
+        plmn:
+        - mnc: mnc
+          mcc: mcc
+        - mnc: mnc
+          mcc: mcc
+      x-etsi-ref: 6.2.2
+    ProblemDetails:
+      type: object
+      properties:
+        detail:
+          type: string
+          description: A human-readable explanation specific to this occurrence of
+            the problem
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        instance:
+          type: string
+          description: A URI reference that identifies the specific occurrence of
+            the problem
+          format: uri
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: URI
+        status:
+          type: integer
+          description: The HTTP status code for this occurrence of the problem
+          format: uint32
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint32
+        title:
+          type: string
+          description: "A short, human-readable summary of the problem type"
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        type:
+          type: string
+          description: A URI reference according to IETF RFC 3986 that identifies
+            the problem type
+          format: uri
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: URI
+    RabEstNotification:
+      required:
+      - ecgi
+      - erabId
+      - notificationType
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: '0 to N identifiers to bind the event for a specific UE or
+            flow. '
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a Radio Access bearer\
+            \ for specific UE as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabQosParameters:
+          $ref: '#/components/schemas/RabEstNotification_erabQosParameters'
+        notificationType:
+          type: string
+          description: Shall be set to "RabEstNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        tempUeId:
+          $ref: '#/components/schemas/RabEstNotification_tempUeId'
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.3
+    RabEstSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaQci
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaQci:
+          $ref: '#/components/schemas/RabEstSubscription_filterCriteriaQci'
+        subscriptionType:
+          type: string
+          description: Shall be set to "RabEstSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.3
+    RabInfo:
+      required:
+      - appInstanceId
+      - requestId
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        cellUserInfo:
+          minItems: 0
+          required:
+          - ecgi
+          - ueInfo
+          type: array
+          description: The information on users per cell as defined below.
+          items:
+            $ref: '#/components/schemas/RabInfo_cellUserInfo'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        requestId:
+          type: string
+          description: Unique identifier allocated by the service consumer for the
+            RAB Information request.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      example:
+        appInstanceId: appInstanceId
+        cellUserInfo:
+        - ueInfo:
+          - associateId:
+            - type: 0
+              value: value
+            - type: 0
+              value: value
+            erabInfo:
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+          - associateId:
+            - type: 0
+              value: value
+            - type: 0
+              value: value
+            erabInfo:
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+          ecgi:
+            plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+        - ueInfo:
+          - associateId:
+            - type: 0
+              value: value
+            - type: 0
+              value: value
+            erabInfo:
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+          - associateId:
+            - type: 0
+              value: value
+            - type: 0
+              value: value
+            erabInfo:
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+            - erabId: 6
+              erabQosParameters:
+                qosInformation:
+                  erabGbrDl: 5
+                  erabGbrUl: 5
+                  erabMbrUl: 7
+                  erabMbrDl: 2
+                qci: 1
+          ecgi:
+            plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+        timeStamp:
+          seconds: 3
+          nanoSeconds: 9
+        requestId: requestId
+      x-etsi-ref: 6.2.3
+    RabModNotification:
+      required:
+      - ecgi
+      - erabId
+      - notificationType
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: '0 to N identifiers to bind the event for a specific UE or
+            flow. '
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a Radio Access bearer\
+            \ for specific UE as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabQosParameters:
+          $ref: '#/components/schemas/RabModNotification_erabQosParameters'
+        notificationType:
+          type: string
+          description: Shall be set to "RabModNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.4
+    RabModSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaQci
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaQci:
+          $ref: '#/components/schemas/RabModSubscription_filterCriteriaQci'
+        subscriptionType:
+          type: string
+          description: Shall be set to "RabModSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.4
+    RabRelNotification:
+      required:
+      - ecgi
+      - erabReleaseInfo
+      - notificationType
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to bind the event for a specific UE or flow
+            as defined below.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        erabReleaseInfo:
+          $ref: '#/components/schemas/RabRelNotification_erabReleaseInfo'
+        notificationType:
+          type: string
+          description: Shall be set to "RabRelNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.5
+    RabRelSubscription:
+      required:
+      - callbackReference
+      - filterCriteriaQci
+      - subscriptionType
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: URI selected by the service consumer to receive notifications
+            on the subscribed RNIS information. This shall be included both in the
+            request and in response.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        filterCriteriaQci:
+          $ref: '#/components/schemas/RabModSubscription_filterCriteriaQci'
+        subscriptionType:
+          type: string
+          description: Shall be set to "RabRelSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.5
+    ResultsPerCsiRsIndex:
+      required:
+      - csiRsIndex
+      type: object
+      properties:
+        csiRsIndex:
+          type: integer
+          description: ""
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        csiRsResults:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+      description: ""
+    ResultsPerCsiRsIndexList:
+      type: object
+      properties:
+        resultsPerCsiRsIndex:
+          minItems: 0
+          required:
+          - csiRsIndex
+          type: array
+          description: ""
+          items:
+            $ref: '#/components/schemas/ResultsPerCsiRsIndexList_resultsPerCsiRsIndex'
+          x-etsi-mec-cardinality: 0..P
+          x-etsi-mec-origin-type: Structure (inline)
+      x-etsi-ref: 6.5.10
+    ResultsPerSsbIndex:
+      required:
+      - ssbIndex
+      type: object
+      properties:
+        ssbIndex:
+          type: integer
+          description: ""
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        ssbResults:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+      description: ""
+    ResultsPerSsbIndexList:
+      type: object
+      properties:
+        resultsPerSsbIndex:
+          minItems: 0
+          required:
+          - ssbIndex
+          type: array
+          description: ""
+          items:
+            $ref: '#/components/schemas/ResultsPerSsbIndexList_resultsPerSsbIndex'
+          x-etsi-mec-cardinality: 0..P
+          x-etsi-mec-origin-type: Structure (inline)
+      x-etsi-ref: 6.5.9
+    RsIndexResults:
+      required:
+      - resultsCsiRsIndexes
+      - resultsSsbIndexes
+      type: object
+      properties:
+        resultsCsiRsIndexes:
+          $ref: '#/components/schemas/ResultsPerCsiRsIndexList'
+        resultsSsbIndexes:
+          $ref: '#/components/schemas/ResultsPerSsbIndexList'
+      x-etsi-ref: 6.5.8
+    S1BearerInfo:
+      required:
+      - s1UeInfo
+      type: object
+      properties:
+        s1UeInfo:
+          minItems: 1
+          required:
+          - associateId
+          - ecgi
+          - s1BearerInfoDetailed
+          type: array
+          description: Information on a specific UE as defined below.
+          items:
+            $ref: '#/components/schemas/S1BearerInfo_s1UeInfo'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      example:
+        timeStamp:
+          seconds: 3
+          nanoSeconds: 9
+        s1UeInfo:
+        - associateId:
+          - type: 0
+            value: value
+          - type: 0
+            value: value
+          s1BearerInfoDetailed:
+          - erabId: 0
+            enbInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+            sGwInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+          - erabId: 0
+            enbInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+            sGwInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+          ecgi:
+          - plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          - plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          tempUeId:
+            mtmsi: mtmsi
+            mmec: mmec
+        - associateId:
+          - type: 0
+            value: value
+          - type: 0
+            value: value
+          s1BearerInfoDetailed:
+          - erabId: 0
+            enbInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+            sGwInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+          - erabId: 0
+            enbInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+            sGwInfo:
+              tunnelId: tunnelId
+              ipAddress: ipAddress
+          ecgi:
+          - plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          - plmn:
+              mnc: mnc
+              mcc: mcc
+            cellId: cellId
+          tempUeId:
+            mtmsi: mtmsi
+            mmec: mmec
+      x-etsi-ref: 6.2.4
+    S1BearerNotification:
+      required:
+      - notificationType
+      - s1Event
+      - s1UeInfo
+      type: object
+      properties:
+        notificationType:
+          type: string
+          description: Shall be set to "S1BearerNotification".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        s1Event:
+          type: integer
+          description: The subscribed event that triggered this notification in S1BearerSubscription.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Enum
+        s1UeInfo:
+          $ref: '#/components/schemas/S1BearerNotification_s1UeInfo'
+        timeStamp:
+          $ref: '#/components/schemas/TimeStamp'
+      x-etsi-ref: 6.4.10
+    S1BearerSubscription:
+      required:
+      - S1BearerSubscriptionCriteria
+      - callbackReference
+      - eventType
+      - subscriptionType
+      type: object
+      properties:
+        S1BearerSubscriptionCriteria:
+          $ref: '#/components/schemas/S1BearerSubscription_S1BearerSubscriptionCriteria'
+        _links:
+          $ref: '#/components/schemas/CaReconfSubscription__links'
+        callbackReference:
+          type: string
+          description: "URI selected by the service consumer, to receive notifications\
+            \ on the subscribed RNIS information. This shall be included in the request\
+            \ and response."
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        eventType:
+          minItems: 1
+          type: array
+          description: "Description of the subscribed event. The event is included\
+            \ both in the request and in the response. \\nFor the eventType, the following\
+            \ values are currently defined: <p>0 = RESERVED. <p>1 = S1_BEARER_ESTABLISH.\
+            \ <p>2 = S1_BEARER_MODIFY. <p>3 = S1_BEARER_RELEASE."
+          items:
+            $ref: '#/components/schemas/Enum'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Enum
+        expiryDeadline:
+          $ref: '#/components/schemas/TimeStamp'
+        subscriptionType:
+          type: string
+          description: Shall be set to "S1BearerSubscription".
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      x-etsi-ref: 6.3.9
+    SubscriptionLinkList:
+      required:
+      - _links
+      type: object
+      properties:
+        _links:
+          $ref: '#/components/schemas/SubscriptionLinkList__links'
+      example:
+        _links:
+          self:
+            href: http://example.com/aeiou
+          subscription:
+          - subscriptionType: subscriptionType
+            href: http://example.com/aeiou
+          - subscriptionType: subscriptionType
+            href: http://example.com/aeiou
+      x-etsi-ref: 6.3.10
+    TimeStamp:
+      required:
+      - nanoSeconds
+      - seconds
+      type: object
+      properties:
+        nanoSeconds:
+          type: integer
+          description: "The nanoseconds part of the time. Time is defined as Unix-time\
+            \ since January 1, 1970, 00:00:00 UTC."
+          format: uint32
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint32
+        seconds:
+          type: integer
+          description: "The seconds part of the time. Time is defined as Unixtime\
+            \ since January 1, 1970, 00:00:00 UTC."
+          format: uint32
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint32
+      example:
+        seconds: 3
+        nanoSeconds: 9
+      x-etsi-ref: 6.5.3
+    Trigger:
+      type: integer
+      description: "As defined in Ref ETSI TS 136 331 [i.7] <p>0 = NOT_AVAILABLE <p>1\
+        \ = PERIODICAL_REPORT_STRONGEST_CELLS <p>2 = PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON\
+        \ <p>3 = PERIODICAL_REPORT_CGI <p>4 = INTRA_PERIODICAL_REPORT_STRONGEST_CELLS\
+        \ <p>5 = INTRA_PERIODICAL_REPORT_CGI <p>10 = EVENT_A1 <p>11 = EVENT_A2 <p>12\
+        \ = EVENT_A3 <p>13 = EVENT_A4 <p>14 = EVENT_A5 <p>15 = EVENT_A6 <p>20 = EVENT_B1\
+        \ <p>21 = EVENT_B2 <p>20 = EVENT_B1-NR <p>21 = EVENT_B2-NR <p>30 = EVENT_C1\
+        \ <p>31 = EVENT_C2 <p>40 = EVENT_W1 <p>41 = EVENT_W2 <p>42 = EVENT_W3 <p>50\
+        \ = EVENT_V1 <p>51 = EVENT_V2 <p>60 = EVENT_H1 <p>61 = EVENT_H2"
+      enum:
+      - 0
+      - 1
+      - 2
+      - 3
+      - 4
+      - 5
+      - 10
+      - 11
+      - 12
+      - 13
+      - 14
+      - 15
+      - 20
+      - 21
+      - 30
+      - 31
+      - 40
+      - 41
+      - 42
+      - 50
+      - 51
+      - 60
+      - 61
+    TriggerNr:
+      type: integer
+      description: "The enumeration Trigger represents specified triggers for a 5G\
+        \ UE Measurement Report. Full details can be found in ETSI TS 138 331 [i.13]).\
+        \ <p>0 = NOT_AVAILABLE <p>1 = NR_PERIODICAL <p>2 = NR_CGI <p>10 = EVENT_A1\
+        \ <p>11 = EVENT_A2 <p>12 = EVENT_A3 <p>13 = EVENT_A4 <p>14 = EVENT_A5 <p>15\
+        \ = EVENT_A6 <p>20 = INTER_RAT_PERIODICAL <p>21 = INTER_RAT_CGI <p>30 = EVENT_B1\
+        \ <p>31 = EVENT_B2"
+      enum:
+      - 0
+      - 1
+      - 2
+      - 10
+      - 11
+      - 12
+      - 13
+      - 14
+      - 15
+      - 20
+      - 21
+      - 30
+      - 31
+    InlineSubscription:
+      discriminator:
+        propertyName: subscription_type
+      oneOf:
+      - $ref: '#/components/schemas/CellChangeSubscription'
+      - $ref: '#/components/schemas/RabEstSubscription'
+      - $ref: '#/components/schemas/RabModSubscription'
+      - $ref: '#/components/schemas/RabRelSubscription'
+      - $ref: '#/components/schemas/MeasRepUeSubscription'
+      - $ref: '#/components/schemas/NrMeasRepUeSubscription'
+      - $ref: '#/components/schemas/MeasTaSubscription'
+      - $ref: '#/components/schemas/CaReconfSubscription'
+      - $ref: '#/components/schemas/S1BearerSubscription'
+    InlineNotification:
+      discriminator:
+        propertyName: notification_type
+      oneOf:
+      - $ref: '#/components/schemas/CellChangeNotification'
+      - $ref: '#/components/schemas/RabEstNotification'
+      - $ref: '#/components/schemas/RabModNotification'
+      - $ref: '#/components/schemas/RabRelNotification'
+      - $ref: '#/components/schemas/MeasRepUeNotification'
+      - $ref: '#/components/schemas/NrMeasRepUeNotification'
+      - $ref: '#/components/schemas/MeasTaNotification'
+      - $ref: '#/components/schemas/CaReconfNotification'
+      - $ref: '#/components/schemas/S1BearerNotification'
+    CaReconfNotification_carrierAggregationMeasInfo:
+      type: object
+      properties:
+        cellIdNei:
+          $ref: '#/components/schemas/CellId'
+        cellIdSrv:
+          $ref: '#/components/schemas/CellId'
+        rsrpNei:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint32
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint32
+        rsrpSrv:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint32
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint32
+        rsrqNei:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint32
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint32
+        rsrqSrv:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint32
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint32
+    CaReconfNotification_secondaryCellAdd:
+      type: object
+      properties:
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+    CaReconfSubscription__links:
+      required:
+      - self
+      type: object
+      properties:
+        self:
+          $ref: '#/components/schemas/LinkType'
+      description: Hyperlink related to the resource. This shall be only included
+        in the HTTP responses and in HTTP PUT requests.
+    CaReconfSubscription_filterCriteriaAssoc:
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    CellChangeNotification_tempUeId:
+      required:
+      - mmec
+      - mtmsi
+      type: object
+      properties:
+        mmec:
+          type: string
+          description: "MMEC as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        mtmsi:
+          type: string
+          description: "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      description: The temporary identifier allocated for the specific UE as defined
+        below.
+      example:
+        mtmsi: mtmsi
+        mmec: mmec
+    CellChangeSubscription_filterCriteriaAssocHo:
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+        hoStatus:
+          minItems: 0
+          type: array
+          description: "In case hoStatus is not included in the subscription request,\
+            \ the default value 3 = COMPLETED shall be used and included in the response:\
+            \ <p>1 = IN_PREPARATION. <p>2 = IN_EXECUTION. <p>3 = COMPLETED. <p>4 =\
+            \ REJECTED. <p>5 = CANCELLED."
+          items:
+            $ref: '#/components/schemas/Enum'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Enum
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    ExpiryNotification__links:
+      required:
+      - self
+      type: object
+      properties:
+        self:
+          type: string
+          description: Self referring URI. This shall be included in the response
+            from the RNIS. The URI shall be unique within the RNI API as it acts as
+            an ID for the subscription.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+      description: List of hyperlinks related to the resource.
+    L2Meas_cellInfo:
+      type: object
+      properties:
+        dl_gbr_pdr_cell:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ downlink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_gbr_prb_usage_cell:
+          type: integer
+          description: "It indicates the PRB usage for downlink GBR traffic, as defined\
+            \ in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_nongbr_pdr_cell:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ downlink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_nongbr_prb_usage_cell:
+          type: integer
+          description: "It indicates (in percentage) the PRB usage for downlink non-GBR\
+            \ traffic, as defined in ETSI TS\_136\_314 [i.11] and ETSI TS\_136 423\
+            \ [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_total_prb_usage_cell:
+          type: integer
+          description: "It indicates (in percentage) the PRB usage for total downlink\
+            \ traffic, as defined in ETSI TS\_136\_314 [i.11] and ETSI TS\_136 423\
+            \ [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        number_of_active_ue_dl_gbr_cell:
+          type: integer
+          description: "It indicates the number of active UEs with downlink GBR traffic,\
+            \ as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        number_of_active_ue_dl_nongbr_cell:
+          type: integer
+          description: "It indicates the number of active UEs with downlink non-GBR\
+            \ traffic, as defined in ETSI TS\_136\_314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        number_of_active_ue_ul_gbr_cell:
+          type: integer
+          description: "It indicates the number of active UEs with uplink GBR traffic,\
+            \ as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        number_of_active_ue_ul_nongbr_cell:
+          type: integer
+          description: "It indicates the number of active UEs with uplink non-GBR\
+            \ traffic, as defined in ETSI TS\_136\_314\_[i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        received_dedicated_preambles_cell:
+          type: integer
+          description: "It indicates (in percentage) the received dedicated preamples,\
+            \ as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        received_randomly_selected_preambles_high_range_cell:
+          type: integer
+          description: "It indicates (in percentage) the received randomly selected\
+            \ preambles in the high range, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        received_randomly_selected_preambles_low_range_cell:
+          type: integer
+          description: "It indicates (in percentage) the received randomly selected\
+            \ preambles in the low range, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_gbr_pdr_cell:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ uplink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_gbr_prb_usage_cell:
+          type: integer
+          description: "It indicates (in percentage) the PRB usage for uplink GBR\
+            \ traffic, as defined in ETSI TS\_136\_314\_[i.11] and ETSI TS\_136 423\
+            \ [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_nongbr_pdr_cell:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ uplink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_nongbr_prb_usage_cell:
+          type: integer
+          description: "It indicates (in percentage) the PRB usage for uplink non-GBR\
+            \ traffic, as defined in ETSI TS\_136\_314 [i.11] and ETSI TS\_136 423\
+            \ [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_total_prb_usage_cell:
+          type: integer
+          description: "It indicates (in percentage) the PRB usage for total uplink\
+            \ traffic, as defined in ETSI TS\_136\_314\_[i.11] and ETSI TS\_136\_\
+            423 [i.12]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+      example:
+        number_of_active_ue_dl_nongbr_cell: 7
+        ul_total_prb_usage_cell: 7
+        received_dedicated_preambles_cell: 2
+        dl_total_prb_usage_cell: 5
+        ul_gbr_prb_usage_cell: 1
+        dl_gbr_pdr_cell: 0
+        number_of_active_ue_ul_gbr_cell: 9
+        ul_nongbr_pdr_cell: 1
+        dl_nongbr_pdr_cell: 1
+        number_of_active_ue_dl_gbr_cell: 2
+        ecgi:
+          plmn:
+            mnc: mnc
+            mcc: mcc
+          cellId: cellId
+        ul_gbr_pdr_cell: 1
+        ul_nongbr_prb_usage_cell: 6
+        received_randomly_selected_preambles_low_range_cell: 7
+        number_of_active_ue_ul_nongbr_cell: 3
+        received_randomly_selected_preambles_high_range_cell: 4
+        dl_nongbr_prb_usage_cell: 5
+        dl_gbr_prb_usage_cell: 6
+    L2Meas_cellUEInfo:
+      type: object
+      properties:
+        associateId:
+          $ref: '#/components/schemas/AssociateId'
+        dl_gbr_data_volume_ue:
+          type: integer
+          description: "It indicates the data volume of the downlink GBR traffic of\
+            \ a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        dl_gbr_delay_ue:
+          type: integer
+          description: "It indicates the packet delay of the downlink GBR traffic\
+            \ of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        dl_gbr_pdr_ue:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_gbr_throughput_ue:
+          type: integer
+          description: "It indicates the scheduled throughput of the downlink GBR\
+            \ traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        dl_nongbr_data_volume_ue:
+          type: integer
+          description: "It indicates the data volume of the downlink non-GBR traffic\
+            \ of a UE, as defined in ETSI TS\_136\_314\_[i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        dl_nongbr_delay_ue:
+          type: integer
+          description: "It indicates the packet delay of the downlink non-GBR traffic\
+            \ of a UE, as defined in ETSI TS\_136\_314\_[i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        dl_nongbr_pdr_ue:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        dl_nongbr_throughput_ue:
+          type: integer
+          description: "It indicates the scheduled throughput of the downlink nonGBR\
+            \ traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        ul_gbr_data_volume_ue:
+          type: integer
+          description: "It indicates the data volume of the uplink GBR traffic of\
+            \ a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ul_gbr_delay_ue:
+          type: integer
+          description: "It indicates the packet delay of the uplink GBR traffic of\
+            \ a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ul_gbr_pdr_ue:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_gbr_throughput_ue:
+          type: integer
+          description: "It indicates the scheduled throughput of the uplink GBR traffic\
+            \ of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ul_nongbr_data_volume_ue:
+          type: integer
+          description: "It indicates the data volume of the uplink non-GBR traffic\
+            \ of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ul_nongbr_delay_ue:
+          type: integer
+          description: "It indicates the packet delay of the uplink non-GBR traffic\
+            \ of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+        ul_nongbr_pdr_ue:
+          type: integer
+          description: "It indicates the packet discard rate in percentage of the\
+            \ uplink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer (0..100)
+        ul_nongbr_throughput_ue:
+          type: integer
+          description: "It indicates the scheduled throughput of the uplink non-GBR\
+            \ traffic of a UE, as defined in ETSI TS 136 314 [i.11]."
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Integer
+      example:
+        dl_gbr_delay_ue: 4
+        ul_nongbr_data_volume_ue: 2
+        dl_nongbr_delay_ue: 6
+        ul_gbr_delay_ue: 3
+        ul_gbr_throughput_ue: 1
+        ul_nongbr_delay_ue: 6
+        dl_nongbr_throughput_ue: 9
+        ul_gbr_data_volume_ue: 6
+        dl_nongbr_data_volume_ue: 9
+        ecgi: null
+        dl_gbr_data_volume_ue: 1
+        associateId:
+          type: 0
+          value: value
+        dl_gbr_throughput_ue: 9
+        dl_nongbr_pdr_ue: 8
+        ul_nongbr_throughput_ue: 5
+        ul_nongbr_pdr_ue: 6
+        dl_gbr_pdr_ue: 5
+        ul_gbr_pdr_ue: 6
+    MeasRepUeNotification_carrierAggregationMeasInfo:
+      type: object
+      properties:
+        cellIdNei:
+          $ref: '#/components/schemas/CellId'
+        cellIdSrv:
+          $ref: '#/components/schemas/CellId'
+        rsrpNei:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrpNeiEx:
+          type: integer
+          description: "Extended Reference Signal Received Power, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrpSrv:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrpSrvEx:
+          type: integer
+          description: "Extended Reference Signal Received Power, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrqNei:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrqNeiEx:
+          type: integer
+          description: "Extended Reference Signal Received Quality, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrqSrv:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrqSrvEx:
+          type: integer
+          description: "Extended Reference Signal Received Quality, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinrNei:
+          type: integer
+          description: "Reference Signal \"Signal to Interference plus Noise Ratio\"\
+            , with value mapping defined in ETSI TS\_136\_133\_[i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinrSrv:
+          type: integer
+          description: "Reference Signal \"Signal to Interference plus Noise Ratio\"\
+            , with value mapping defined in ETSI TS\_136\_133\_[i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+    MeasRepUeNotification_eutranNeighbourCellMeasInfo:
+      type: object
+      properties:
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        rsrp:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrpEx:
+          type: integer
+          description: "Extended Reference Signal Received Power, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrq:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 136\
+            \ 214 [i.5]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrqEx:
+          type: integer
+          description: "Extended Reference Signal Received Quality, with value mapping\
+            \ defined in ETSI TS 136 133 [i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinr:
+          type: integer
+          description: "Reference Signal \"Signal to Interference plus Noise Ratio\"\
+            , with value mapping defined in ETSI TS\_136\_133\_[i.16]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+    MeasRepUeNotification_nrBNCs_nrBNCellInfo:
+      type: object
+      properties:
+        nrBNCellGId:
+          $ref: '#/components/schemas/NrCellId'
+        nrBNCellPlmn:
+          minItems: 1
+          type: array
+          description: Public land mobile network identities
+          items:
+            $ref: '#/components/schemas/Plmn'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Plmn
+    MeasRepUeNotification_nrBNCs:
+      required:
+      - nrBNCellInfo
+      type: object
+      properties:
+        nrBNCellInfo:
+          minItems: 1
+          required:
+          - nrBNCellGId
+          - nrBNCellPlmn
+          type: array
+          description: Best neighbours of the secondary serving cell(s) info
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_nrBNCs_nrBNCellInfo'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Structure (inlined)
+        nrBNCellRsrp:
+          type: integer
+          description: "Reference Signal Received Power measurement according to mapping\
+            \ table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrBNCellRsrq:
+          type: integer
+          description: "Reference Signal Received Quality measurement according to\
+            \ mapping table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrBNCellRssi:
+          type: integer
+          description: "Reference signal SINR measurement according to mapping table\
+            \ in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+      description: Measurement quantities concerning the best neighbours of the secondary
+        serving cells
+    MeasRepUeNotification_nrSCs_nrSCellInfo:
+      type: object
+      properties:
+        nrSCellGId:
+          $ref: '#/components/schemas/NrCellId'
+        nrSCellPlmn:
+          minItems: 1
+          type: array
+          description: Public land mobile network identities.
+          items:
+            $ref: '#/components/schemas/Plmn'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Plmn
+    MeasRepUeNotification_nrSCs:
+      required:
+      - nrSCellInfo
+      type: object
+      properties:
+        nrSCellInfo:
+          minItems: 1
+          required:
+          - nrSCellGId
+          - nrSCellPlmn
+          type: array
+          description: Secondary serving cell(s) info.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_nrSCs_nrSCellInfo'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Structure (inlined)
+        nrSCellRsrp:
+          type: integer
+          description: "Reference Signal Received Power measurement according to mapping\
+            \ table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrSCellRsrq:
+          type: integer
+          description: "Reference Signal Received Quality measurement according to\
+            \ mapping table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrSCellRssi:
+          type: integer
+          description: "Reference signal SINR measurement according to mapping table\
+            \ in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+      description: Measurement quantities concerning the secondary serving cells.
+    MeasRepUeNotification_newRadioMeasInfo:
+      type: object
+      properties:
+        nrBNCs:
+          $ref: '#/components/schemas/MeasRepUeNotification_nrBNCs'
+        nrCarrierFreq:
+          type: integer
+          description: "ARFCN applicable for a downlink, uplink or bi-directional\
+            \ (TDD) NR carrier frequency, as defined in ETSI TS\_138.101 [i.15]."
+          format: uint32
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint32
+        nrSCs:
+          $ref: '#/components/schemas/MeasRepUeNotification_nrSCs'
+    MeasRepUeNotification_nrNCellInfo:
+      type: object
+      properties:
+        nrNCellGId:
+          $ref: '#/components/schemas/NrCellId'
+        nrNCellPlmn:
+          minItems: 1
+          type: array
+          description: Public land mobile network identities.
+          items:
+            $ref: '#/components/schemas/Plmn'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Plmn
+    MeasRepUeNotification_newRadioMeasNeiInfo:
+      type: object
+      properties:
+        nrNCellInfo:
+          minItems: 1
+          required:
+          - nrNCellGId
+          - nrNCellPlmn
+          type: array
+          description: 5G NR neighbour cell info.
+          items:
+            $ref: '#/components/schemas/MeasRepUeNotification_nrNCellInfo'
+          x-etsi-mec-cardinality: 1..P
+          x-etsi-mec-origin-type: Structure (inlined)
+        nrNCellRsrp:
+          type: integer
+          description: "Reference Signal Received Power measurement according to mapping\
+            \ table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrNCellRsrq:
+          type: integer
+          description: "Reference Signal Received Quality measurement according to\
+            \ mapping table in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        nrNCellRssi:
+          type: integer
+          description: "Reference signal SINR measurement according to mapping table\
+            \ in ETSI TS 138.133 [i.14]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsIndexResults:
+          $ref: '#/components/schemas/RsIndexResults'
+    MeasRepUeSubscription_filterCriteriaAssocTri:
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+        trigger:
+          minItems: 0
+          type: array
+          description: Corresponds to a specific E-UTRAN UE Measurement Report trigger.
+          items:
+            $ref: '#/components/schemas/Trigger'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Trigger
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    NrMeasRepUeNotification_eutraNeighCellMeasInfo:
+      type: object
+      properties:
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        rsrp:
+          type: integer
+          description: "Reference Signal Received Power as defined in ETSI TS\_138\
+            \ 331 [i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        rsrq:
+          type: integer
+          description: "Reference Signal Received Quality as defined in ETSI TS 138\
+            \ 331 [i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+        sinr:
+          type: integer
+          description: "Reference Signal plus Interference Noise Ratio as defined\
+            \ in ETSI TS\_138\_331\_[i.13]."
+          format: uint8
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: Uint8
+    NrMeasRepUeNotification_nrNeighCellMeasInfo:
+      type: object
+      properties:
+        measQuantityResultsCsiRsCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        measQuantityResultsSsbCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        nrcgi:
+          $ref: '#/components/schemas/NrCellId'
+        rsIndexResults:
+          $ref: '#/components/schemas/RsIndexResults'
+    NrMeasRepUeNotification_nCell:
+      type: object
+      properties:
+        measQuantityResultsCsiRsCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        measQuantityResultsSsbCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        rsIndexResults:
+          $ref: '#/components/schemas/RsIndexResults'
+      description: Measurement information relating to the best neighbour of this
+        serving cell.
+    NrMeasRepUeNotification_sCell:
+      type: object
+      properties:
+        measQuantityResultsCsiRsCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        measQuantityResultsSsbCell:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+        rsIndexResults:
+          $ref: '#/components/schemas/RsIndexResults'
+      description: Measurement information relating to this serving cell.
+    NrMeasRepUeNotification_servCellMeasInfo:
+      type: object
+      properties:
+        nCell:
+          $ref: '#/components/schemas/NrMeasRepUeNotification_nCell'
+        nrcgi:
+          $ref: '#/components/schemas/NRcgi'
+        sCell:
+          $ref: '#/components/schemas/NrMeasRepUeNotification_sCell'
+    NrMeasRepUeSubscription_filterCriteriaNrMrs:
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        nrcgi:
+          minItems: 0
+          type: array
+          description: NR Cell Global Identier.
+          items:
+            $ref: '#/components/schemas/NRcgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: NRcgi
+        triggerNr:
+          minItems: 0
+          type: array
+          description: Corresponds to a specific 5G UE Measurement Report trigger.
+          items:
+            $ref: '#/components/schemas/TriggerNr'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: TriggerNr
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    RabEstNotification_erabQosParameters_qosInformation:
+      required:
+      - erabGbrDl
+      - erabGbrUl
+      - erabMbrDl
+      - erabMbrUl
+      type: object
+      properties:
+        erabGbrDl:
+          type: integer
+          description: "This attribute indicates the guaranteed downlink E-RAB Bit\
+            \ Rate as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabGbrUl:
+          type: integer
+          description: "This attribute indicates the guaranteed uplink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabMbrDl:
+          type: integer
+          description: "This attribute indicates the maximum downlink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabMbrUl:
+          type: integer
+          description: "This attribute indicates the maximum uplink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+      description: The QoS information for the E-RAB.
+      example:
+        erabGbrDl: 5
+        erabGbrUl: 5
+        erabMbrUl: 7
+        erabMbrDl: 2
+    RabEstNotification_erabQosParameters:
+      required:
+      - qci
+      type: object
+      properties:
+        qci:
+          type: integer
+          description: "QoS Class Identifier as defined in ETSI TS 123 401 [i.4]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        qosInformation:
+          $ref: '#/components/schemas/RabEstNotification_erabQosParameters_qosInformation'
+      description: QoS parameters for the E-RAB as defined below.
+      example:
+        qosInformation:
+          erabGbrDl: 5
+          erabGbrUl: 5
+          erabMbrUl: 7
+          erabMbrDl: 2
+        qci: 1
+    RabEstNotification_tempUeId:
+      required:
+      - mmec
+      - mtmsi
+      type: object
+      properties:
+        mmec:
+          type: string
+          description: "MMEC as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        mtmsi:
+          type: string
+          description: "M-TMSI as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      description: 'The temporary identifier allocated for the specific UE as defined
+        below. '
+    RabEstSubscription_filterCriteriaQci:
+      required:
+      - qci
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+        qci:
+          type: integer
+          description: "QoS Class Identifier as defined in ETSI TS 123 401 [i.4]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    RabInfo_erabInfo:
+      type: object
+      properties:
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a Radio Access bearer\
+            \ for specific UE as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabQosParameters:
+          $ref: '#/components/schemas/RabEstNotification_erabQosParameters'
+      example:
+        erabId: 6
+        erabQosParameters:
+          qosInformation:
+            erabGbrDl: 5
+            erabGbrUl: 5
+            erabMbrUl: 7
+            erabMbrDl: 2
+          qci: 1
+    RabInfo_ueInfo:
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the event for a specific UE
+            or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        erabInfo:
+          minItems: 1
+          required:
+          - erabId
+          type: array
+          description: Information on E-RAB as defined below.
+          items:
+            $ref: '#/components/schemas/RabInfo_erabInfo'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Structure (inlined)
+      example:
+        associateId:
+        - type: 0
+          value: value
+        - type: 0
+          value: value
+        erabInfo:
+        - erabId: 6
+          erabQosParameters:
+            qosInformation:
+              erabGbrDl: 5
+              erabGbrUl: 5
+              erabMbrUl: 7
+              erabMbrDl: 2
+            qci: 1
+        - erabId: 6
+          erabQosParameters:
+            qosInformation:
+              erabGbrDl: 5
+              erabGbrUl: 5
+              erabMbrUl: 7
+              erabMbrDl: 2
+            qci: 1
+    RabInfo_cellUserInfo:
+      type: object
+      properties:
+        ecgi:
+          $ref: '#/components/schemas/Ecgi'
+        ueInfo:
+          minItems: 1
+          required:
+          - erabInfo
+          type: array
+          description: Information on UEs in the specific cell as defined below.
+          items:
+            $ref: '#/components/schemas/RabInfo_ueInfo'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Structure (inlined)
+      example:
+        ueInfo:
+        - associateId:
+          - type: 0
+            value: value
+          - type: 0
+            value: value
+          erabInfo:
+          - erabId: 6
+            erabQosParameters:
+              qosInformation:
+                erabGbrDl: 5
+                erabGbrUl: 5
+                erabMbrUl: 7
+                erabMbrDl: 2
+              qci: 1
+          - erabId: 6
+            erabQosParameters:
+              qosInformation:
+                erabGbrDl: 5
+                erabGbrUl: 5
+                erabMbrUl: 7
+                erabMbrDl: 2
+              qci: 1
+        - associateId:
+          - type: 0
+            value: value
+          - type: 0
+            value: value
+          erabInfo:
+          - erabId: 6
+            erabQosParameters:
+              qosInformation:
+                erabGbrDl: 5
+                erabGbrUl: 5
+                erabMbrUl: 7
+                erabMbrDl: 2
+              qci: 1
+          - erabId: 6
+            erabQosParameters:
+              qosInformation:
+                erabGbrDl: 5
+                erabGbrUl: 5
+                erabMbrUl: 7
+                erabMbrDl: 2
+              qci: 1
+        ecgi:
+          plmn:
+            mnc: mnc
+            mcc: mcc
+          cellId: cellId
+    RabModNotification_erabQosParameters_qosInformation:
+      required:
+      - erabGbrDl
+      - erabGbrUl
+      - erabMbrDl
+      - erabMbrUl
+      type: object
+      properties:
+        erabGbrDl:
+          type: integer
+          description: "This attribute indicates the guaranteed downlink E-RAB Bit\
+            \ Rate as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabGbrUl:
+          type: integer
+          description: "This attribute indicates the guaranteed uplink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabMbrDl:
+          type: integer
+          description: "This attribute indicates the maximum downlink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        erabMbrUl:
+          type: integer
+          description: "This attribute indicates the maximum uplink E-RAB Bit Rate\
+            \ as defined in ETSI TS 123 401 [i.4] for this bearer."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+      description: The QoS Information for the E-RAB as defined below.
+    RabModNotification_erabQosParameters:
+      required:
+      - qci
+      type: object
+      properties:
+        qci:
+          type: integer
+          description: "QoS Class Identifier as defined in ETSI TS 123 401 [i.4]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        qosInformation:
+          $ref: '#/components/schemas/RabModNotification_erabQosParameters_qosInformation'
+      description: The QoS parameters for the E-RAB as defined below.
+    RabModSubscription_filterCriteriaQci:
+      required:
+      - erabId
+      - qci
+      type: object
+      properties:
+        appInstanceId:
+          type: string
+          description: Unique identifier for the MEC application instance.
+          x-etsi-mec-cardinality: 0..1
+          x-etsi-mec-origin-type: String
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a Radio Access bearer\
+            \ for specific UE as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        qci:
+          type: integer
+          description: "QoS Class Identifier as defined in ETSI TS 123 401 [i.4]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+      description: "List of filtering criteria for the subscription. Any filtering\
+        \ criteria from below, which is included in the request, shall also be included\
+        \ in the response."
+    RabRelNotification_erabReleaseInfo:
+      required:
+      - erabId
+      type: object
+      properties:
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a Radio Access bearer\
+            \ for specific UE as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+      description: The release information for the E-RAB as defined below.
+    ResultsPerCsiRsIndexList_resultsPerCsiRsIndex:
+      type: object
+      properties:
+        csiRsIndex:
+          type: integer
+          description: ""
+          format: uint8
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        csiRsResults:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+    ResultsPerSsbIndexList_resultsPerSsbIndex:
+      type: object
+      properties:
+        ssbIndex:
+          type: integer
+          description: ""
+          format: uint8
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Uint8
+        ssbResults:
+          $ref: '#/components/schemas/MeasQuantityResultsNr'
+    S1BearerInfo_enbInfo:
+      required:
+      - ipAddress
+      - tunnelId
+      type: object
+      properties:
+        ipAddress:
+          type: string
+          description: eNB transport layer address of this S1 bearer.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        tunnelId:
+          type: string
+          description: eNB GTP-U TEID of this S1 bearer.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      description: S1 bearer information on eNB side as defined below.
+      example:
+        tunnelId: tunnelId
+        ipAddress: ipAddress
+    S1BearerInfo_sGwInfo:
+      required:
+      - ipAddress
+      - tunnelId
+      type: object
+      properties:
+        ipAddress:
+          type: string
+          description: SGW transport layer address of this S1 bearer.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+        tunnelId:
+          type: string
+          description: SGW GTP-U TEID of this S1 bearer.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      description: S1 bearer information on GW side as defined below.
+      example:
+        tunnelId: tunnelId
+        ipAddress: ipAddress
+    S1BearerInfo_s1BearerInfoDetailed:
+      type: object
+      properties:
+        enbInfo:
+          $ref: '#/components/schemas/S1BearerInfo_enbInfo'
+        erabId:
+          type: integer
+          description: "The attribute that uniquely identifies a S1 bearer for a specific\
+            \ UE, as defined in ETSI TS 136 413 [i.3]."
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: Integer
+        sGwInfo:
+          $ref: '#/components/schemas/S1BearerInfo_sGwInfo'
+      example:
+        erabId: 0
+        enbInfo:
+          tunnelId: tunnelId
+          ipAddress: ipAddress
+        sGwInfo:
+          tunnelId: tunnelId
+          ipAddress: ipAddress
+    S1BearerInfo_s1UeInfo:
+      type: object
+      properties:
+        associateId:
+          minItems: 1
+          type: array
+          description: 1 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 1
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Ecgi
+        s1BearerInfoDetailed:
+          minItems: 1
+          required:
+          - enbInfo
+          - erabId
+          - sGwInfo
+          type: array
+          description: S1 bearer information as defined below.
+          items:
+            $ref: '#/components/schemas/S1BearerInfo_s1BearerInfoDetailed'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        tempUeId:
+          $ref: '#/components/schemas/CellChangeNotification_tempUeId'
+      example:
+        associateId:
+        - type: 0
+          value: value
+        - type: 0
+          value: value
+        s1BearerInfoDetailed:
+        - erabId: 0
+          enbInfo:
+            tunnelId: tunnelId
+            ipAddress: ipAddress
+          sGwInfo:
+            tunnelId: tunnelId
+            ipAddress: ipAddress
+        - erabId: 0
+          enbInfo:
+            tunnelId: tunnelId
+            ipAddress: ipAddress
+          sGwInfo:
+            tunnelId: tunnelId
+            ipAddress: ipAddress
+        ecgi:
+        - plmn:
+            mnc: mnc
+            mcc: mcc
+          cellId: cellId
+        - plmn:
+            mnc: mnc
+            mcc: mcc
+          cellId: cellId
+        tempUeId:
+          mtmsi: mtmsi
+          mmec: mmec
+    S1BearerNotification_s1UeInfo:
+      required:
+      - ecgi
+      - s1BearerInfo
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the information for a specific
+            UE or flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 1
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Ecgi
+        s1BearerInfo:
+          minItems: 1
+          required:
+          - enbInfo
+          - erabId
+          - sGwInfo
+          type: array
+          description: S1 bearer information as defined below.
+          items:
+            $ref: '#/components/schemas/S1BearerInfo_s1BearerInfoDetailed'
+          x-etsi-mec-cardinality: 1..N
+          x-etsi-mec-origin-type: Structure (inlined)
+        tempUeId:
+          $ref: '#/components/schemas/CellChangeNotification_tempUeId'
+      description: Information on specific UE that matches the criteria in S1BearerSubscription
+        as defined below.
+    S1BearerSubscription_S1BearerSubscriptionCriteria:
+      type: object
+      properties:
+        associateId:
+          minItems: 0
+          type: array
+          description: 0 to N identifiers to associate the events for a specific UE
+            or a flow.
+          items:
+            $ref: '#/components/schemas/AssociateId'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: AssociateId
+        ecgi:
+          minItems: 0
+          type: array
+          description: E-UTRAN Cell Global Identifier.
+          items:
+            $ref: '#/components/schemas/Ecgi'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Ecgi
+        erabId:
+          minItems: 0
+          type: array
+          description: "The attribute that uniquely identifies a S1 bearer for a specific\
+            \ UE, as defined in ETSI TS 136 413 [i.3]."
+          items:
+            type: integer
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Integer
+      description: As defined below.
+    SubscriptionLinkList__links_subscription:
+      type: object
+      properties:
+        href:
+          type: string
+          description: The URI referring to the subscription.
+          format: uri
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: URI
+        subscriptionType:
+          type: string
+          description: Type of the subscription. The string shall be set according
+            to the "subscriptionType" attribute of the associated subscription data
+            type event defined in clause 6.3.
+          x-etsi-mec-cardinality: "1"
+          x-etsi-mec-origin-type: String
+      example:
+        subscriptionType: subscriptionType
+        href: http://example.com/aeiou
+    SubscriptionLinkList__links:
+      required:
+      - self
+      type: object
+      properties:
+        self:
+          $ref: '#/components/schemas/LinkType'
+        subscription:
+          minItems: 0
+          required:
+          - href
+          - subscriptionType
+          type: array
+          description: A link to a subscription.
+          items:
+            $ref: '#/components/schemas/SubscriptionLinkList__links_subscription'
+          x-etsi-mec-cardinality: 0..N
+          x-etsi-mec-origin-type: Structure (inlined)
+      description: List of hyperlinks related to the resource.
+      example:
+        self:
+          href: http://example.com/aeiou
+        subscription:
+        - subscriptionType: subscriptionType
+          href: http://example.com/aeiou
+        - subscriptionType: subscriptionType
+          href: http://example.com/aeiou
+  responses:
+    "204":
+      description: No Content
+    "400":
+      description: "Bad Request : used to indicate that incorrect parameters were\
+        \ passed to the request."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "401":
+      description: "Unauthorized :  used when the client did not submit credentials."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "403":
+      description: "Forbidden :  operation is not allowed given the current status\
+        \ of the resource."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "404":
+      description: "Not Found :  used when a client provided a URI that cannot be\
+        \ mapped to a valid resource URI."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "406":
+      description: "Not Acceptable : used to indicate that the server cannot provide\
+        \ the any of the content formats supported by the client."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "412":
+      description: "Precondition failed :  used when a condition has failed during\
+        \ conditional requests, e.g. when using ETags to avoid write conflicts when\
+        \ using PUT"
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "414":
+      description: "URI Too Long : used to indicate that the server is refusing to\
+        \ process the request because the request URI is longer than the server is\
+        \ willing or able to process."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "415":
+      description: "Unsupported Media Type :  used to indicate that the server or\
+        \ the client does not support the content type of the entity body."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    "422":
+      description: "Unprocessable Entity : used to indicate that the server understands\
+        \ the content type of the request entity and that the syntax of the request\
+        \ entity is correct but that the server is unable to process the contained\
+        \ instructions. This error condition can occur if an JSON request body is\
+        \ syntactically correct but semantically incorrect, for example if the target\
+        \ area for the request is considered too large. This error condition can also\
+        \ occur if the capabilities required by the request are not supported."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+          example:
+            application/problem+json:
+              type: https://meAppServer.example.com/rni/v2/probs/too-many targets
+              title: Too many targets
+              status: "422"
+              detail: The target area for the request is considered too large
+              instance: /meAppClient.example.com/77777/msgs/abc
+    "429":
+      description: "Too Many Requests : used when a rate limiter has triggered."
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+  parameters:
+    Path.subscrId:
+      name: subscriptionId
+      in: path
+      description: "Subscription Id, specifically the \"Self-referring URI\" returned\
+        \ in the subscription request"
+      required: true
+      style: simple
+      explode: false
+      schema:
+        type: string
+        format: uri
+      x-exportParamName: SubscriptionId
+    Query.AppInsId:
+      name: app_ins_id
+      in: query
+      description: Application instance identifier
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: string
+      x-exportParamName: AppInsId
+      x-optionalDataType: String
+    Query.AppInsIdArr:
+      name: app_ins_id
+      in: query
+      description: Comma separated list of Application instance identifiers
+      required: true
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: AppInsIdArr
+    Query.CellId:
+      name: cell_id
+      in: query
+      description: Comma separated list of E-UTRAN Cell Identities
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: CellId
+    Query.UeIpv4Address:
+      name: ue_ipv4_address
+      in: query
+      description: Comma separated list of IE IPv4 addresses as defined for the type
+        for AssociateId
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: UeIpv4Address
+    Query.UeIpv6Address:
+      name: ue_ipv6_address
+      in: query
+      description: Comma separated list of IE IPv6 addresses as defined for the type
+        for AssociateId
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: UeIpv6Address
+    Query.NatedIpAddress:
+      name: nated_ip_address
+      in: query
+      description: Comma separated list of IE NATed IP addresses as defined for the
+        type for AssociateId
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: NatedIpAddress
+    Query.GtpTeid:
+      name: gtp_teid
+      in: query
+      description: Comma separated list of GTP TEID addresses as defined for the type
+        for AssociateId
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: GtpTeid
+    Query.ErabId:
+      name: erab_id
+      in: query
+      description: E-RAB identifier
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: ErabId
+      x-optionalDataType: Int32
+    Query.ErabIdArr:
+      name: erab_id
+      in: query
+      description: Comma separated list of E-RAB identifiers
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: integer
+          format: int32
+      x-exportParamName: ErabIdArr
+    Query.Qci:
+      name: qci
+      in: query
+      description: QoS Class Identifier as defined in ETSI TS 123 401
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: Qci
+      x-optionalDataType: Int32
+    Query.ErabMbrDl:
+      name: erab_mbr_dl
+      in: query
+      description: Maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: ErabMbrDl
+      x-optionalDataType: Int32
+    Query.ErabMbrUl:
+      name: erab_mbr_ul
+      in: query
+      description: Maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: ErabMbrUl
+      x-optionalDataType: Int32
+    Query.ErabGbrDl:
+      name: erab_gbr_dl
+      in: query
+      description: Guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: ErabGbrDl
+      x-optionalDataType: Int32
+    Query.ErabGbrUl:
+      name: erab_gbr_ul
+      in: query
+      description: Guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+        format: int32
+      x-exportParamName: ErabGbrUl
+      x-optionalDataType: Int32
+    Query.TempUeId:
+      name: temp_ue_id
+      in: query
+      description: Comma separated list of temporary identifiers allocated for the
+        specific UE as defined in   ETSI TS 136 413
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: array
+        items:
+          type: string
+      x-exportParamName: TempUeId
+    Query.DlGbrPrbUsageCell:
+      name: dl_gbr_prb_usage_cell
+      in: query
+      description: PRB usage for downlink GBR traffic in percentage as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrPrbUsageCell
+    Query.UlGbrPrbUsageCell:
+      name: ul_gbr_prb_usage_cell
+      in: query
+      description: PRB usage for uplink GBR traffic in percentage as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrPrbUsageCell
+    Query.DlNonGbrPrbUsageCell:
+      name: dl_nongbr_prb_usage_cell
+      in: query
+      description: PRB usage for downlink non-GBR traffic in percentage as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrPrbUsageCell
+    Query.UlNonGbrPrbUsageCell:
+      name: ul_nongbr_prb_usage_cell
+      in: query
+      description: PRB usage for uplink non-GBR traffic in percentage as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrPrbUsageCell
+    Query.DlTotalPrbUsageCell:
+      name: dl_total_prb_usage_cell
+      in: query
+      description: PRB usage for total downlink traffic in percentage as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlTotalPrbUsageCell
+    Query.UlTotalPrbUsageCell:
+      name: ul_total_prb_usage_cell
+      in: query
+      description: PRB usage for total uplink traffic in percentage as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlTotalPrbUsageCell
+    Query.ReceivedDedicatedPreamblesCell:
+      name: received_dedicated_preambles_cell
+      in: query
+      description: Received dedicated preambles in percentage as defined in ETSI TS
+        136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: ReceivedDedicatedPreamblesCell
+    Query.ReceivedRandomPreamblesLowRangeCell:
+      name: received_randomly_selected_preambles_low_range_cell
+      in: query
+      description: Received randomly selected preambles in the low range in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: ReceivedRandomPreamblesLowRangeCell
+    Query.ReceivedRandomPreamblesHighRangeCell:
+      name: received_randomly_selected_preambles_high_range_cell
+      in: query
+      description: Received rendomly selected preambles in the high range in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: ReceivedRandomPreamblesHighRangeCell
+    Query.NumberOfActiveUeDlGbrCell:
+      name: number_of_active_ue_dl_gbr_cell
+      in: query
+      description: Number of active UEs with downlink GBR traffic as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: NumberOfActiveUeDlGbrCell
+    Query.NumberOfActiveUeUlGbrCell:
+      name: number_of_active_ue_ul_gbr_cell
+      in: query
+      description: Number of active UEs with uplink GBR traffic as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: NumberOfActiveUeUlGbrCell
+    Query.NumberOfActiveUeDlNonGbrCell:
+      name: number_of_active_ue_dl_nongbr_cell
+      in: query
+      description: Number of active UEs with downlink non-GBR traffic as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: NumberOfActiveUeDlNonGbrCell
+    Query.NumberOfActiveUeUlNonGbrCell:
+      name: number_of_active_ue_ul_nongbr_cell
+      in: query
+      description: Number of active UEs with uplink non-GBR traffic as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: NumberOfActiveUeUlNonGbrCell
+    Query.DlGbrPdrCell:
+      name: dl_gbr_pdr_cell
+      in: query
+      description: Packet discard rate for downlink GBR traffic in percentage as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrPdrCell
+    Query.UlGbrPdrCell:
+      name: ul_gbr_pdr_cell
+      in: query
+      description: Packet discard rate for uplink GBR traffic in percentage as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrPdrCell
+    Query.DlNonGbrPdrCell:
+      name: dl_nongbr_pdr_cell
+      in: query
+      description: Packet discard rate for downlink non-GBR traffic in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrPdrCell
+    Query.UlNonGbrPdrCell:
+      name: ul_nongbr_pdr_cell
+      in: query
+      description: Packet discard rate for uplink non-GBR traffic in percentage as
+        defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrPdrCell
+    Query.DlGbrDelayUe:
+      name: dl_gbr_delay_ue
+      in: query
+      description: Packet delay of downlink GBR traffic of a UE as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrDelayUe
+    Query.UlGbrDelayUe:
+      name: ul_gbr_delay_ue
+      in: query
+      description: Packet delay of uplink GBR traffic of a UE as defined in ETSI TS
+        136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrDelayUe
+    Query.DlNonGbrDelayUe:
+      name: dl_nongbr_delay_ue
+      in: query
+      description: Packet delay of downlink non-GBR traffic of a UE as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrDelayUe
+    Query.UlNonGbrDelayUe:
+      name: ul_nongbr_delay_ue
+      in: query
+      description: Packet delay of uplink non-GBR traffic of a UE as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrDelayUe
+    Query.DlGbrPdrUe:
+      name: dl_gbr_pdr_ue
+      in: query
+      description: Packet discard rate of downlink GBR traffic of a UE in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrPdrUe
+    Query.UlGbrPdrUe:
+      name: ul_gbr_pdr_ue
+      in: query
+      description: Packet discard rate of uplink GBR traffic of a UE in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrPdrUe
+    Query.DlNonGbrPdrUe:
+      name: dl_nongbr_pdr_ue
+      in: query
+      description: Packet discard rate of downlink non-GBR traffic of a UE in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrPdrUe
+    Query.UlNonGbrPdrUe:
+      name: ul_nongbr_pdr_ue
+      in: query
+      description: Packet discard rate of uplink non-GBR traffic of a UE in percentage
+        as defined in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrPdrUe
+    Query.DlGbrThroughputUe:
+      name: dl_gbr_throughput_ue
+      in: query
+      description: Scheduled throughput of downlink GBR traffic of a UE as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrThroughputUe
+    Query.UlGbrThroughputUe:
+      name: ul_gbr_throughput_ue
+      in: query
+      description: Scheduled throughput of uplink GBR traffic of a UE as defined in
+        ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrThroughputUe
+    Query.DlNonGbrThroughputUe:
+      name: dl_nongbr_throughput_ue
+      in: query
+      description: Scheduled throughput of downlink non-GBR traffic of a UE as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrThroughputUe
+    Query.UlNonGbrThroughputUe:
+      name: ul_nongbr_throughput_ue
+      in: query
+      description: Scheduled throughput of uplink non-GBR traffic of a UE as defined
+        in ETSI TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrThroughputUe
+    Query.DlGbrDataVolumeUe:
+      name: dl_gbr_data_volume_ue
+      in: query
+      description: Data volume of downlink GBR traffic of a UE as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlGbrDataVolumeUe
+    Query.UlGbrDataVolumeUe:
+      name: ul_gbr_data_volume_ue
+      in: query
+      description: Data volume of uplink GBR traffic of a UE as defined in ETSI TS
+        136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlGbrDataVolumeUe
+    Query.DlNonGbrDataVolumeUe:
+      name: dl_nongbr_data_volume_ue
+      in: query
+      description: Data volume of downlink non-GBR traffic of a UE as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: DlNonGbrDataVolumeUe
+    Query.UlNonGbrDataVolumeUe:
+      name: ul_nongbr_data_volume_ue
+      in: query
+      description: Data volume of uplink non-GBR traffic of a UE as defined in ETSI
+        TS 136 314
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: integer
+      x-exportParamName: UlNonGbrDataVolumeUe
+    Query.SubscriptionType:
+      name: subscription_type
+      in: query
+      description: "Filter on a specific subscription type. Permitted values: cell_change,\
+        \ rab_est, rab_mod, rab_rel, meas_rep_ue, nr_meas_rep_ue, timing_advance_ue,\
+        \ ca_reconf, s1_bearer."
+      required: false
+      style: form
+      explode: true
+      schema:
+        type: string
+      x-exportParamName: SubscriptionType
+
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/__init__.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..644506301ce077f2e881fcda3454b6cba362ab5e
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/__init__.py
@@ -0,0 +1,16 @@
+import logging
+
+import connexion
+from flask_testing import TestCase
+
+from swagger_server.encoder import JSONEncoder
+
+
+class BaseTestCase(TestCase):
+
+    def create_app(self):
+        logging.getLogger('connexion.operation').setLevel('ERROR')
+        app = connexion.App(__name__, specification_dir='../swagger/')
+        app.app.json_encoder = JSONEncoder
+        app.add_api('swagger.yaml')
+        return app.app
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/test_rni_controller.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/test_rni_controller.py
new file mode 100644
index 0000000000000000000000000000000000000000..23077b8893fce65ff2069a3031b90191ce193e20
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/test/test_rni_controller.py
@@ -0,0 +1,194 @@
+# coding: utf-8
+
+from __future__ import absolute_import
+
+from flask import json
+from six import BytesIO
+
+from swagger_server.models.inline_subscription import InlineSubscription  # noqa: E501
+from swagger_server.models.l2_meas import L2Meas  # noqa: E501
+from swagger_server.models.plmn_info import PlmnInfo  # noqa: E501
+from swagger_server.models.problem_details import ProblemDetails  # noqa: E501
+from swagger_server.models.rab_info import RabInfo  # noqa: E501
+from swagger_server.models.s1_bearer_info import S1BearerInfo  # noqa: E501
+from swagger_server.models.subscription_link_list import SubscriptionLinkList  # noqa: E501
+from swagger_server.test import BaseTestCase
+
+
+class TestRniController(BaseTestCase):
+    """RniController integration test stubs"""
+
+    def test_layer2_meas_info_get(self):
+        """Test case for layer2_meas_info_get
+
+        Retrieve information on layer 2 measurements
+        """
+        query_string = [('app_ins_id', 'app_ins_id_example'),
+                        ('cell_id', 'cell_id_example'),
+                        ('ue_ipv4_address', 'ue_ipv4_address_example'),
+                        ('ue_ipv6_address', 'ue_ipv6_address_example'),
+                        ('nated_ip_address', 'nated_ip_address_example'),
+                        ('gtp_teid', 'gtp_teid_example'),
+                        ('dl_gbr_prb_usage_cell', 56),
+                        ('ul_gbr_prb_usage_cell', 56),
+                        ('dl_nongbr_prb_usage_cell', 56),
+                        ('ul_nongbr_prb_usage_cell', 56),
+                        ('dl_total_prb_usage_cell', 56),
+                        ('ul_total_prb_usage_cell', 56),
+                        ('received_dedicated_preambles_cell', 56),
+                        ('received_randomly_selected_preambles_low_range_cell', 56),
+                        ('received_randomly_selected_preambles_high_range_cell', 56),
+                        ('number_of_active_ue_dl_gbr_cell', 56),
+                        ('number_of_active_ue_ul_gbr_cell', 56),
+                        ('number_of_active_ue_dl_nongbr_cell', 56),
+                        ('number_of_active_ue_ul_nongbr_cell', 56),
+                        ('dl_gbr_pdr_cell', 56),
+                        ('ul_gbr_pdr_cell', 56),
+                        ('dl_nongbr_pdr_cell', 56),
+                        ('ul_nongbr_pdr_cell', 56),
+                        ('dl_gbr_delay_ue', 56),
+                        ('ul_gbr_delay_ue', 56),
+                        ('dl_nongbr_delay_ue', 56),
+                        ('ul_nongbr_delay_ue', 56),
+                        ('dl_gbr_pdr_ue', 56),
+                        ('ul_gbr_pdr_ue', 56),
+                        ('dl_nongbr_pdr_ue', 56),
+                        ('ul_nongbr_pdr_ue', 56),
+                        ('dl_gbr_throughput_ue', 56),
+                        ('ul_gbr_throughput_ue', 56),
+                        ('dl_nongbr_throughput_ue', 56),
+                        ('ul_nongbr_throughput_ue', 56),
+                        ('dl_gbr_data_volume_ue', 56),
+                        ('ul_gbr_data_volume_ue', 56),
+                        ('dl_nongbr_data_volume_ue', 56),
+                        ('ul_nongbr_data_volume_ue', 56)]
+        response = self.client.open(
+            '/rni/v2/queries/layer2_meas',
+            method='GET',
+            query_string=query_string)
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_plmn_info_get(self):
+        """Test case for plmn_info_get
+
+        Retrieve information on the underlying Mobile Network that the MEC application is associated to
+        """
+        query_string = [('app_ins_id', 'app_ins_id_example')]
+        response = self.client.open(
+            '/rni/v2/queries/plmn_info',
+            method='GET',
+            query_string=query_string)
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_rab_info_get(self):
+        """Test case for rab_info_get
+
+        Retrieve information on Radio Access Bearers
+        """
+        query_string = [('app_ins_id', 'app_ins_id_example'),
+                        ('cell_id', 'cell_id_example'),
+                        ('ue_ipv4_address', 'ue_ipv4_address_example'),
+                        ('ue_ipv6_address', 'ue_ipv6_address_example'),
+                        ('nated_ip_address', 'nated_ip_address_example'),
+                        ('gtp_teid', 'gtp_teid_example'),
+                        ('erab_id', 56),
+                        ('qci', 56),
+                        ('erab_mbr_dl', 56),
+                        ('erab_mbr_ul', 56),
+                        ('erab_gbr_dl', 56),
+                        ('erab_gbr_ul', 56)]
+        response = self.client.open(
+            '/rni/v2/queries/rab_info',
+            method='GET',
+            query_string=query_string)
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_s1_bearer_info_get(self):
+        """Test case for s1_bearer_info_get
+
+        Retrieve S1-U bearer information related to specific UE(s)
+        """
+        query_string = [('temp_ue_id', 'temp_ue_id_example'),
+                        ('ue_ipv4_address', 'ue_ipv4_address_example'),
+                        ('ue_ipv6_address', 'ue_ipv6_address_example'),
+                        ('nated_ip_address', 'nated_ip_address_example'),
+                        ('gtp_teid', 'gtp_teid_example'),
+                        ('cell_id', 'cell_id_example'),
+                        ('erab_id', 56)]
+        response = self.client.open(
+            '/rni/v2/queries/s1_bearer_info',
+            method='GET',
+            query_string=query_string)
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_subscription_link_list_subscriptions_get(self):
+        """Test case for subscription_link_list_subscriptions_get
+
+        Retrieve information on subscriptions for notifications
+        """
+        query_string = [('subscription_type', 'subscription_type_example')]
+        response = self.client.open(
+            '/rni/v2/subscriptions',
+            method='GET',
+            query_string=query_string)
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_subscriptions_delete(self):
+        """Test case for subscriptions_delete
+
+        Cancel an existing subscription
+        """
+        response = self.client.open(
+            '/rni/v2/subscriptions/{subscriptionId}'.format(subscription_id='subscription_id_example'),
+            method='DELETE')
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_subscriptions_get(self):
+        """Test case for subscriptions_get
+
+        Retrieve information on current specific subscription
+        """
+        response = self.client.open(
+            '/rni/v2/subscriptions/{subscriptionId}'.format(subscription_id='subscription_id_example'),
+            method='GET')
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_subscriptions_post(self):
+        """Test case for subscriptions_post
+
+        Create a new subscription
+        """
+        body = InlineSubscription()
+        response = self.client.open(
+            '/rni/v2/subscriptions',
+            method='POST',
+            data=json.dumps(body),
+            content_type='application/json')
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+    def test_subscriptions_put(self):
+        """Test case for subscriptions_put
+
+        Modify an existing subscription
+        """
+        body = InlineSubscription()
+        response = self.client.open(
+            '/rni/v2/subscriptions/{subscriptionId}'.format(subscription_id='subscription_id_example'),
+            method='PUT',
+            data=json.dumps(body),
+            content_type='application/json')
+        self.assert200(response,
+                       'Response body is : ' + response.data.decode('utf-8'))
+
+
+if __name__ == '__main__':
+    import unittest
+    unittest.main()
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/type_util.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/type_util.py
new file mode 100644
index 0000000000000000000000000000000000000000..0563f81fd5345282a33705038dfa77fdcaa15872
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/type_util.py
@@ -0,0 +1,32 @@
+# coding: utf-8
+
+import sys
+
+if sys.version_info < (3, 7):
+    import typing
+
+    def is_generic(klass):
+        """ Determine whether klass is a generic class """
+        return type(klass) == typing.GenericMeta
+
+    def is_dict(klass):
+        """ Determine whether klass is a Dict """
+        return klass.__extra__ == dict
+
+    def is_list(klass):
+        """ Determine whether klass is a List """
+        return klass.__extra__ == list
+
+else:
+
+    def is_generic(klass):
+        """ Determine whether klass is a generic class """
+        return hasattr(klass, '__origin__')
+
+    def is_dict(klass):
+        """ Determine whether klass is a Dict """
+        return klass.__origin__ == dict
+
+    def is_list(klass):
+        """ Determine whether klass is a List """
+        return klass.__origin__ == list
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/util.py b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..812b2ad42f97ee1790ea2019c90710bc4dada114
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/swagger_server/util.py
@@ -0,0 +1,142 @@
+import datetime
+
+import six
+import typing
+from swagger_server import type_util
+
+
+def _deserialize(data, klass):
+    """Deserializes dict, list, str into an object.
+
+    :param data: dict, list or str.
+    :param klass: class literal, or string of class name.
+
+    :return: object.
+    """
+    if data is None:
+        return None
+
+    if klass in six.integer_types or klass in (float, str, bool, bytearray):
+        return _deserialize_primitive(data, klass)
+    elif klass == object:
+        return _deserialize_object(data)
+    elif klass == datetime.date:
+        return deserialize_date(data)
+    elif klass == datetime.datetime:
+        return deserialize_datetime(data)
+    elif type_util.is_generic(klass):
+        if type_util.is_list(klass):
+            return _deserialize_list(data, klass.__args__[0])
+        if type_util.is_dict(klass):
+            return _deserialize_dict(data, klass.__args__[1])
+    else:
+        return deserialize_model(data, klass)
+
+
+def _deserialize_primitive(data, klass):
+    """Deserializes to primitive type.
+
+    :param data: data to deserialize.
+    :param klass: class literal.
+
+    :return: int, long, float, str, bool.
+    :rtype: int | long | float | str | bool
+    """
+    try:
+        value = klass(data)
+    except UnicodeEncodeError:
+        value = six.u(data)
+    except TypeError:
+        value = data
+    return value
+
+
+def _deserialize_object(value):
+    """Return an original value.
+
+    :return: object.
+    """
+    return value
+
+
+def deserialize_date(string):
+    """Deserializes string to date.
+
+    :param string: str.
+    :type string: str
+    :return: date.
+    :rtype: date
+    """
+    try:
+        from dateutil.parser import parse
+        return parse(string).date()
+    except ImportError:
+        return string
+
+
+def deserialize_datetime(string):
+    """Deserializes string to datetime.
+
+    The string should be in iso8601 datetime format.
+
+    :param string: str.
+    :type string: str
+    :return: datetime.
+    :rtype: datetime
+    """
+    try:
+        from dateutil.parser import parse
+        return parse(string)
+    except ImportError:
+        return string
+
+
+def deserialize_model(data, klass):
+    """Deserializes list or dict to model.
+
+    :param data: dict, list.
+    :type data: dict | list
+    :param klass: class literal.
+    :return: model object.
+    """
+    instance = klass()
+
+    if not instance.swagger_types:
+        return data
+
+    for attr, attr_type in six.iteritems(instance.swagger_types):
+        if data is not None \
+                and instance.attribute_map[attr] in data \
+                and isinstance(data, (list, dict)):
+            value = data[instance.attribute_map[attr]]
+            setattr(instance, attr, _deserialize(value, attr_type))
+
+    return instance
+
+
+def _deserialize_list(data, boxed_type):
+    """Deserializes a list and its elements.
+
+    :param data: list to deserialize.
+    :type data: list
+    :param boxed_type: class literal.
+
+    :return: deserialized list.
+    :rtype: list
+    """
+    return [_deserialize(sub_data, boxed_type)
+            for sub_data in data]
+
+
+def _deserialize_dict(data, boxed_type):
+    """Deserializes a dict and its elements.
+
+    :param data: dict to deserialize.
+    :type data: dict
+    :param boxed_type: class literal.
+
+    :return: deserialized dict.
+    :rtype: dict
+    """
+    return {k: _deserialize(v, boxed_type)
+            for k, v in six.iteritems(data)}
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/test-requirements.txt b/examples/notification_server/RNIS/dummy_mec012_server/test-requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2640639a25a3bffe0f449788303300a364c55cb7
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/test-requirements.txt
@@ -0,0 +1,7 @@
+flask_testing==0.8.0
+coverage>=4.0.3
+nose>=1.3.7
+pluggy>=0.3.1
+py>=1.4.31
+randomize>=0.13
+tox==3.20.1
diff --git a/examples/notification_server/RNIS/dummy_mec012_server/tox.ini b/examples/notification_server/RNIS/dummy_mec012_server/tox.ini
new file mode 100644
index 0000000000000000000000000000000000000000..2751b218c1d2385c081c114c9094fc5e388126dc
--- /dev/null
+++ b/examples/notification_server/RNIS/dummy_mec012_server/tox.ini
@@ -0,0 +1,10 @@
+[tox]
+envlist = py38
+
+[testenv]
+deps=-r{toxinidir}/requirements.txt
+     -r{toxinidir}/test-requirements.txt
+
+commands=
+   nosetests \
+      []
\ No newline at end of file
diff --git a/examples/notification_server/Readme.md b/examples/notification_server/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..814d24a0acfe399c7449c484272ae026e332e9b7
--- /dev/null
+++ b/examples/notification_server/Readme.md
@@ -0,0 +1,10 @@
+## How to Run a Robot Script to Validate a Web Server's Notifications
+
+
+1. **Prerequisites**
+   - Ensure that Docker is installed on your computer. You can check this by running the command `docker --version` in your command prompt or terminal. If Docker is not installed, download and install it from the official Docker website.
+   - Ensure that docker-compose is installed on your computer. You can check this by running the command `docker-compose --version` in your command prompt or terminal. If Docker is not installed, download and install it from the official Docker website.
+
+
+2. **Start the SUT (Web Server which sends notifications)** with `docker-compose up RNIS`
+3. **Run the Robot Test** with `docker-compose up robot`
\ No newline at end of file
diff --git a/examples/notification_server/docker-compose.yml b/examples/notification_server/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a28a92ed81591f704a846025e86bfd9c56673d15
--- /dev/null
+++ b/examples/notification_server/docker-compose.yml
@@ -0,0 +1,20 @@
+version: '2'
+services:
+  robot:
+    build:
+      context: .
+    hostname: robot
+    image: robot:local
+    volumes:
+      - ./logs:/home/robot/logs
+    ports:
+      - 9090:9090
+    environment:
+      - RNIS_URL=http://rnis:8080
+  RNIS:
+    build:
+      context: RNIS/dummy_mec012_server
+    image: rnis:latest
+    hostname: rnis
+    ports:
+      - 8080:8080
\ No newline at end of file
diff --git a/examples/notification_server/libraries/Server.py b/examples/notification_server/libraries/Server.py
new file mode 100644
index 0000000000000000000000000000000000000000..f8024150b7708ea067232909c15b338dac9ca1c6
--- /dev/null
+++ b/examples/notification_server/libraries/Server.py
@@ -0,0 +1,107 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json
+
+# Library version
+__version__ = '0.0.1'
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host, port, timeout, method, endpoint, resp_body):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            print("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+        self.app.handle_request()
+        self.app.server_close()
\ No newline at end of file
diff --git a/examples/notification_server/requirements.txt b/examples/notification_server/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a9a0f2fc13b4ed0133351209764d42101b9d37e2
--- /dev/null
+++ b/examples/notification_server/requirements.txt
@@ -0,0 +1,9 @@
+robotframework===6.0.2
+#RESTinstance==1.3.0
+#robotframework-dependencylibrary==4.0.0
+#robotframework-jsonlibrary==0.5
+#robotframework-jsonschemalibrary==1.0
+robotframework-requests==0.9.4
+#robotframework-mockserver==0.0.7
+requests>=2.21.0
+Flask
\ No newline at end of file
diff --git a/examples/notification_server/run_tests.sh b/examples/notification_server/run_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1eccd704adfc4d95a24d05660bb186b1ad0c89be
--- /dev/null
+++ b/examples/notification_server/run_tests.sh
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+
+python -m robot --outputdir ./logs/ \
+                --loglevel TRACE \
+                ./tests
\ No newline at end of file
diff --git a/libraries/Server.py b/libraries/Server.py
new file mode 100755
index 0000000000000000000000000000000000000000..f8024150b7708ea067232909c15b338dac9ca1c6
--- /dev/null
+++ b/libraries/Server.py
@@ -0,0 +1,107 @@
+#!/usr/bin/python3
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+import json
+
+# Library version
+__version__ = '0.0.1'
+
+class Server ( object ):
+
+    ROBOT_LIBRARY_VERSION = '0.0.1'
+
+    def spawn_web_server (self, host, port, timeout, method, endpoint, resp_body):
+        
+        class GET_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+            
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_GET(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class POST_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_POST(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        class PUT_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_PUT(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+        
+        class DELETE_Server(BaseHTTPRequestHandler):
+
+            def __call__(self, *args, **kwargs):
+                """Handle a request."""
+                super().__init__(*args, **kwargs)
+
+            def __init__(self, endpoint, resp_body):
+                self.resp_body = resp_body
+                self.endpoint = endpoint
+
+            def do_DELETE(self):
+                self.send_response(200)
+                self.send_header('Content-Type', 'application/json')
+                self.end_headers()
+                if self.path == self.endpoint:
+                    self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
+                else:
+                    self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
+
+        if method == "GET":
+            self.handler = GET_Server(endpoint, resp_body)
+        elif method == "POST":
+            self.handler = POST_Server(endpoint, resp_body)
+        elif method == "PUT":
+            self.handler = PUT_Server(endpoint, resp_body)
+        elif method == "DELETE":
+            self.handler = DELETE_Server(endpoint, resp_body)
+        else:
+            print("Error, unknown endpoint")
+            exit(1)
+        
+        self.app = HTTPServer((host, int(port)), self.handler)
+        self.app.timeout = int(timeout)
+        
+        self.app.handle_request()
+        self.app.server_close()
\ No newline at end of file
diff --git a/resources.robot b/resources.robot
deleted file mode 100644
index 4164d2691342da2e98bc9b0ae450ccc4dc12f150..0000000000000000000000000000000000000000
--- a/resources.robot
+++ /dev/null
@@ -1,116 +0,0 @@
-*** Settings ***
-
-Documentation
-    ...   A resource file with reusable keywords and variables.
-    ...
-    ...   The system specific keywords created here form our own domain specific language.
-
-
-Library     REST    ${MEC_SERVER_IUT}   ssl_verify=${MEC_SERVER_SSL_VERITY}     accept=application/json     content_type=application/json
-Library     JSONSchemaLibrary    ${JSONS_SCHEMAS}
-
-
-*** Keywords ***
-
-GET URI
-    [Arguments]         ${service}
-
-    [Documentation]
-    ...     Issue a GET request to an URI.
-    ...         NOTE: the response is stored in the REST library used and is available throughtout the test scope.
-    ...
-    ...       service: the service endpoint to call (without the server name or port).
-
-    Log     URI: ${service}
-    GET     ${service}
-
-
-the Plaform IUT entity receives a vGET for
-    [Arguments]         ${endpoint}
-
-    [Documentation]
-    ...   Send a GET request to an API endpoint.
-    ...
-    ...     endpoint: the absolut path to the API endpoint to reach, without the server address and port.
-
-    ${resp} =   GET URI     ${endpoint}
-
-
-the Plaform IUT entity receives a vPOST for
-    [Arguments]    ${endpoint}    ${data}    ${schema}
-
-    [Documentation]
-    ...    A MEC Application subscribes notifications on the availability of a specific service.
-    ...
-    ...    endpoint: the absolut path to the API endpoint to reach, without the server address and port.
-    ...    data_schema: the schema for the expected data in the POST request.
-
-    Validate Json    ${schema}.schema.json    ${data}
-    # TODO will this be mocked or will we use the proper MEC API calls for this?
-    # If so, won't theses tests require a functional MEC Server?
-
-
-the Plaform IUT sends a response
-    [Arguments]   ${status_code}   ${json_schema}
-
-    [Documentation]
-    ...     Check the correctness of the response sent by the IUT.
-    ...
-    ...       status_code: The expected HTTP status code received in the response.
-    ...       json_schema: the schema to validate the response conformance.
-
-    Integer     response status           ${status_code}
-    Output    response
-    ${response} =    Output    response body
-    Validate Json    ${json_schema}.schema.json    ${response}
-
-    
-the Plaform IUT has a MEC Application instantiated
-    [Documentation]
-    ...   Instantiates a MEC Application.
-    
-    # TODO will this be mocked or will we use the proper MEC API calls for this?
-    # If so, won't theses tests require a functional MEC Server?
-    Set Suite Variable  ${APP_INSTANCE_ID}    123
-
-
-a MEC Application subscribed to service notifications for 
-    [Arguments]         ${mec_service}
-
-    [Documentation]
-    ...     A MEC Application subscribes notifications on the availability of a specific service.
-    ...
-    ...       mec_service: the MEC platform service a MEC Application wants to be notified of.
-
-    Log     Available MEC Service: ${mec_service}
-    # TODO will this be mocked or will we use the proper MEC API calls for this?
-    # If so, won't theses tests require a functional MEC Server?
-
-
-the Plaform IUT response header parameter
-    [Arguments]    ${header}    ${value}
-
-    [Documentation]
-    ...    
-
-    # TODO the platform must reply with a specific header which should be checked for conformance.
-    # How to do this as the test needs to send a response but also ensure it sends the proper header?
-    
-    # String request headers Authorization Bearer ${oauth_token}
-    No Operation
-
-
-the Plaform IUT sends a notification message to the subscribed MEC Applications with
-    [Arguments]    ${data}
-
-    [Documentation]
-    ...    
-
-    # TODO
-    # GS MEC 011 V2.0.8, §5.2.4: the MEC platform identifies the relevant MEC platforms for this update, and informs
-    # them about the changes in service availability by means that may be outside the scope of the present document.
-    #
-    # The TP has this notification, so what to do here? Simply do not care about this? Update the TP to exclude this notification? 
-    
-    No Operation
-