diff --git a/MEC012/SRV/RNIS/RnisNotifications.robot b/MEC012/SRV/RNIS/RnisNotifications.robot
index a80dadf5b881bba9cc2ef4926c0fecca8c58af88..984ac7636b6204d07bd03fef870dc78ed6816b5d 100644
--- a/MEC012/SRV/RNIS/RnisNotifications.robot
+++ b/MEC012/SRV/RNIS/RnisNotifications.robot
@@ -21,7 +21,7 @@ TC_MEC_MEC012_SRV_RNIS_001_OK
     ...  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    CellChangeSubscriptionRequest
+    [Setup]  Send a request for a subscription    CellChangeSubscription
     Spawn Notification Server     CellChangeNotification    
     Validate Json   CellChangeNotification.schema.json    ${payload_notification}
     [TearDown]   Delete subscription   ${SUB_ID} 
@@ -157,8 +157,6 @@ Delete subscription
     ${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} 
diff --git a/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot b/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot
deleted file mode 100644
index df5ddd2f6ea14c3c0476ff3f8bb093937afab832..0000000000000000000000000000000000000000
--- a/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot
+++ /dev/null
@@ -1,165 +0,0 @@
-''[Documentation]   robot --outputdir ../../outputs ./RnisNotifications_BV.robot
-...    Test Suite to validate RNIS/Notification (RNIS) operations.
-
-*** Settings ***
-
-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]   
-    ...  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    CellChangeSubscriptionRequest
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url        CellChangeNotification    
-    Validate Json   CellChangeNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-
-TC_MEC_MEC012_SRV_RNIS_002_OK
-    [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
-    #[Setup]  Send a request for a subscription    RabEstSubscriptionRequest
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url         RabEstNotification
-    Validate Json   RabEstNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-    
-
-
-TC_MEC_MEC012_SRV_RNIS_003_OK
-    [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
-    #[Setup]  Send a request for a subscription    RabModSubscription
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url      RabModNotification
-    Validate Json   RabModNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-    
-    
-TC_MEC_MEC012_SRV_RNIS_004_OK
-    [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
-    #[Setup]  Send a request for a subscription    RabRelSubscription
-    Spawn Notification Server  10.30.8.189  8888  5  POST  /callback_url      RabRelNotification
-    Validate Json   RabRelNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-        
-
-TC_MEC_MEC012_SRV_RNIS_005_OK
-    [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
-    #[Setup]  Send a request for a subscription    MeasRepUeSubscription
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url        MeasRepUeNotification
-    Validate Json   MeasRepUeNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-
-TC_MEC_MEC012_SRV_RNIS_006_OK
-    [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
-    #[Setup]  Send a request for a subscription    MeasTaSubscription
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url        MeasTaNotification
-    Validate Json   MeasTaNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-    
-
-TC_MEC_MEC012_SRV_RNIS_007_OK
-    [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
-    #[Setup]  Send a request for a subscription    CaReconfSubscription
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url     CaReconfNotification
-    Validate Json   CaReconfNotification.schema.json    ${payload_notification}
-    #[TearDown]   Delete subscription   ${SUB_ID} 
-
-
-TC_MEC_MEC012_SRV_RNIS_008_OK
-    [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
-    #[Setup]  Send a request for a subscription    S1BearerSubscription
-    Spawn Notification Server  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url          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  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url      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  10.30.8.189  8888  ${NOTIFICATION_SERVER_TIMEOUT}  POST  /callback_url        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]  ${host}  ${port}  ${timeout}  ${method}  ${endpoint}         ${payload_notification}
-    ${output}   Spawn Web Server  ${host}  ${port}  ${timeout}  ${method}  ${endpoint}    ${payload_notification} 
-    Set Suite Variable    ${payload_notification}    ${output}
diff --git a/MEC012/SRV/RNIS/environment/variables.txt b/MEC012/SRV/RNIS/environment/variables.txt
index d073df4ccd058253b4a0b845dc86c2aaf8f86d09..da47b01259af508794fb68f563c8b25c32b6d9cf 100644
--- a/MEC012/SRV/RNIS/environment/variables.txt
+++ b/MEC012/SRV/RNIS/environment/variables.txt
@@ -13,11 +13,11 @@ ${SUB_ID}
 
 
 ##Notification Server variables
-${NOTIFICATION_SERVER_IP}      10.30.8.189
+${NOTIFICATION_SERVER_IP}      127.0.0.1
 ${NOTIFICATION_SERVER_PORT}      8888
 ${NOTIFICATION_SERVER_HTTP_METHOD}      POST
 ${NOTIFICATION_SERVER_URI}      /callback_url
-${NOTIFICATION_SERVER_TIMEOUT}      10
+${NOTIFICATION_SERVER_TIMEOUT}      5
 
 
 ${APP_INS_ID}                 appInsId
diff --git a/MEC012/SRV/RNIS/jsons/S1BearerNotification.json b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json
index 6590a88f292143ca4153d86379a952103a118d13..56d2e002075386e99abae0b8190fe04900ebd99f 100644
--- a/MEC012/SRV/RNIS/jsons/S1BearerNotification.json
+++ b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json
@@ -15,7 +15,7 @@
             {
                 "enbInfo": {
                     "ipAddress": "127.0.0.1",
-                    "tunnelIdaa": "tunnelId"
+                    "tunnelId": "tunnelId"
                 },
                 "erabId": 1234,
                 "sGwInfo": {
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..2a789f4e8613bf5f558280d7b2d4b6d65fb5e987 100644
--- a/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot
+++ b/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot
@@ -14,50 +14,104 @@ Default Tags    TC_MEC_SRV_UEINFOLOOK
 
 *** Test Cases ***
 
-TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK
+TC_MEC_MEC013_SRV_UEINFLOOK_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
-    ...
-    ...    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 - 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   INCLUDE_UNDEFINED_SCHEMAS
-    Get list of users with filter    address    ${ACR_ADDRESS}
+    [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_UEINFLOOK_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 - 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
+    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_BR
+TC_MEC_MEC013_SRV_UEINFLOOK_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 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 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 filter    addr    ${ACR_ADDRESS}
-    Check HTTP Response Status Code Is    400
+    Get list of users with filter      address     ${ACR_ADDRESS},${ACR_ADDRESS2}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    UserList
+    
 
+TC_MEC_MEC013_SRV_UEINFLOOK_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
 
-TC_MEC_MEC013_SRV_UEINFOLOOK_001_NF
+    [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_UEINFLOOK_001_BR
     [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
+    ...    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}
+    Check HTTP Response Status Code Is    400
 
+TC_MEC_MEC013_SRV_UEINFLOOK_001_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 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 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..db5cf8884f26c5bf9534f3ce2b989b24a620adec 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
+    [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    NotificationSubscriptionList
+    [TearDown]   Remove subscription    ${SUB_ID}
+
+
+
+TC_MEC_MEC013_SRV_UELOCLOOK_002_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 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     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_002_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 7.5.3.1
 
     [Tags]    PIC_MEC_PLAT    PIC_SERVICES
-    Get list of user equipments    zoneId    ${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
-    Check HTTP Response Body Json Schema Is    UserList
-    Check Result Contains    ${response['body']['userList']['user']}    zoneId    ${ZONE_ID}
+    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_001_BR
+
+TC_MEC_MEC013_SRV_UELOCLOOK_002_OK_03
     [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 and address
+    ...
+    ...    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 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}
+
+
+    
+TP_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 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}
+    [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}
+    
+
+
+TP_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]   Create multiple subscriptions and get sub ids    UserLocationEventSubscription    UserLocationPeriodicSubscription
+    Get subscriptions
+    Check HTTP Response Status Code Is    404
+    [TearDown]   Remove subscriptions    ${SUB_ID_01}   ${SUB_ID_02}
+    
 
-TC_MEC_MEC013_SRV_UELOCLOOK_001_NF
+
+TP_MEC_MEC013_SRV_UELOCLOOK_003_OK_01
     [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 Event
     ...
-    ...    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 list of user equipments    zoneId    ${NON_EXISTENT_ZONE_ID}
+    [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_002_OK
+TP_MEC_MEC013_SRV_UELOCLOOK_003_OK_02
     [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 Periodic
     ...
-    ...    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 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
-    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 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_002_NF
+    
+TP_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}"}
+    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}
+
+
+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}"}
+    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}/queries/users?${key}=${value}
+    Get    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/users
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 
-Get specific user equipments
-    [Arguments]    ${userId}
+Get subscriptions with filter
+    [Arguments]    ${filter_name}    ${filter_value}
     Set Headers    {"Accept":"application/json"}
     Set Headers    {"Authorization":"${TOKEN}"}
-    Get    ${apiRoot}/${apiName}/${apiVersion}/queries/users/${userId}
+    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..b2c76fad57304badc9549548324273d804291699
--- /dev/null
+++ b/MEC013/SRV/UELOCLOOK/jsons/UserLocationPeriodicSubscription.json
@@ -0,0 +1,8 @@
+{
+    "subscriptionType": "UserLocationPeriodicSubscription",
+    "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/UEZONELOOK/PlatUeZoneLookup.robot b/MEC013/SRV/UEZONELOOK/PlatUeZoneLookup.robot
new file mode 100644
index 0000000000000000000000000000000000000000..f18faa66d8602cbf84f46baa4d39b1ed73a7db5a
--- /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 subscriptions
+    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/UEZONELOOK/environment/variables.txt b/MEC013/SRV/UEZONELOOK/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..585984a3819f9c80c71bfa055580b9fe5d80cba4
--- /dev/null
+++ b/MEC013/SRV/UEZONELOOK/environment/variables.txt
@@ -0,0 +1,13 @@
+*** 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
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