diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot
index 3d7bebc2858340f39f7b5b2f5209a409b3a1bb74..eb6d0f2a5721f0a88022c675702b8c378f848e94 100644
--- a/SOL002/VNFConfiguration-API/Configuration.robot
+++ b/SOL002/VNFConfiguration-API/Configuration.robot
@@ -1,6 +1,6 @@
 *** Settings ***
 Resource    environment/variables.txt 
-Library    REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}
+Library    REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}    ssl_verify=false
 Library    JSONLibrary
 Library    JSONSchemaLibrary    schemas/
 Library    OperatingSystem
@@ -121,14 +121,13 @@ Send VNF configuration
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/vnfConfigModifications.json
     Patch    ${apiRoot}/${apiName}/${apiVersion}/configuration    ${body}
-    Set Suite Variable    &{etag}    ${response['headers']['ETag']}
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
     ${status}=    Convert To Integer    ${expected_status}    
-    Should Be Equal    ${response['status']}    ${status}
+    Should Be Equal As Strings    ${response['status']}    ${status}
     Log    Status code validated
 
 Check HTTP Response Header Contains
@@ -139,8 +138,8 @@ Check HTTP Response Header Contains
     
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
-    Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    Should Contain    ${response['headers']['Content-Type']}    application/problem+json
+    ${schema}=    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
       
@@ -157,14 +156,14 @@ Check Postcondition VNF Is Configured
     Get VNF configuration
     ${input_file}=    Get File    jsons/vnfConfigModifications.json
     ${input}=    evaluate    json.loads('''${input_file}''')    json
-    Should Be Equal  ${response['body']}    ${input} 
+    Should Be Equal As Strings  ${response['body']}    ${input} 
 
 Send Duplicated VNF configuration
     Depends On Test    Send VNF configuration    # If the previous test scceeded, it means that Etag has been modified
     log    Trying to perform a PATCH. This method modifies an individual alarm resource
     Set Headers  {"Accept":"${ACCEPT}"}
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
-    Set Headers    {"If-Match": "${etag[0]}"}
+    Set Headers    {"If-Match": "${etag}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/vnfConfigModifications.json
     Patch    ${apiRoot}/${apiName}/${apiVersion}/configuration    ${body}
diff --git a/SOL002/VNFConfiguration-API/environment/variables.txt b/SOL002/VNFConfiguration-API/environment/variables.txt
index 6a8e962653785e5e57846765188a259d64eee377..40bbd93438498a510b8a180e2164be1dae6d6f3a 100644
--- a/SOL002/VNFConfiguration-API/environment/variables.txt
+++ b/SOL002/VNFConfiguration-API/environment/variables.txt
@@ -11,13 +11,15 @@ ${EM-VNF_SCHEMA}    https
 ${ACCEPT}         application/json
 ${AUTH_USAGE}     1
 ${AUTHORIZATION}    Bearer    QWxhZGRpbjpvcGVuIHNlc2FtZQ==
+
 ${CONTENT_TYPE}    application/json
+
 ${apiRoot}        /
 ${apiName}        vnfconfig
 ${apiVersion}     v1
+
 ${WRONG_AUTHORIZATION}    Bearer    XXXXXWRONGXXXXX
-${alarm_filter}       managedObjectId
-${managedObjectId}    007c111c-38a1-42c0-a666-7475ecb1567c
-${invalid_alarm_filter}    badFilter
-${alarmId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
+
+
+
 
diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot
index 2a8c4bfcb9b8509cdeac2b1e99a1cfaf1712224f..147fdf2dc21c49b322433128e924307989c40569 100644
--- a/SOL002/VNFFaultManagement-API/Subscriptions.robot
+++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot
@@ -41,7 +41,7 @@ Create a new Subscription - DUPLICATION
     ...    Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists
     ...    Post-Conditions: 
     Log    Trying to create a subscription with an already created content
-    Pass Execution If    ${VNFM_DUPLICATION} == 0    NVFO is not permitting duplication. Skipping the test
+    Pass Execution If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0    NVFO is not permitting duplication. Skipping the test
     Set Headers    {"Accept": "${ACCEPT}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
@@ -65,7 +65,7 @@ Create a new Subscription - NO-DUPLICATION
     ...    Applicability: the VNFM decides to not create a duplicate subscription resource 
     ...    Post-Conditions:
     Log    Trying to create a subscription with an already created content
-    Pass Execution If    ${VNFM_DUPLICATION} == 1    VNFM permits duplication. Skipping the test
+    Pass Execution If    ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1    VNFM permits duplication. Skipping the test
     Set Headers    {"Accept": "${ACCEPT}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt
index fc5212d5d38bb191765dc00e18074df88ad925f8..3f9d4e99e0ed93ddd273473ba3b59c1eaa7d1809 100644
--- a/SOL002/VNFFaultManagement-API/environment/variables.txt
+++ b/SOL002/VNFFaultManagement-API/environment/variables.txt
@@ -13,7 +13,7 @@ ${apiName}        vnffm
 ${apiVersion}     v1
 ${CONTENT_TYPE}    application/json
 
-${VNFM_DUPLICATION}    0
+${VNFM_ALLOWS_DUPLICATE_SUBS}    0
 
 ${alarmId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
 ${etags}    a modified etag
diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot
index a96d1f301f43cf32d8dec06bbab98d70a5b8e28c..93f6d427a3f890df2d5ccc04caf0243645fd66c9 100644
--- a/SOL002/VNFIndicator-API/IndividualSubscription.robot
+++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot
@@ -3,7 +3,7 @@ Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/individualSubscription.txt
 Library           OperatingSystem
-Library           REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}
+Library           REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}    ssl_verify=false
 
 *** Test Cases ***
 GET Individual VNF Indicator Subscription
@@ -32,32 +32,6 @@ GET Individual VNF Indicator Subscription with invalid resource identifier
     Check HTTP Response Status Code Is    404
     Check HTTP Response Body Json Schema Is   ProblemDetails
     
-DELETE Individual VNF Indicator Subscription
-    [Documentation]    Test ID: 6.3.2.5.3
-    ...    Test title: Delete individual subscription to VNF performance indicators
-    ...    Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription.
-    ...    Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF.
-    ...    Reference:  section 8.4.6.3.5 - SOL002 v2.4.1
-    ...    Config ID: Config_prod_VE
-    ...    Applicability: The VNF supports the generation and maintenance of performance indicators
-    ...    Post-Conditions: The subscription to VNF performance indicators is deleted
-    Send Delete Request for Individual VNF Indicator Subscription
-    Check HTTP Response Status Code Is    204
-    Check Postcondition Individual VNF Indicator Subscription is Deleted
-
-DELETE Individual VNF Indicator Subscription with invalid resource identifier
-    [Documentation]    Test ID: 6.3.2.5.4
-    ...    Test title: Delete individual subscription to VNF performance indicators
-    ...    Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response.
-    ...    Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF.
-    ...    Reference:  section 8.4.6.3.5 - SOL002 v2.4.1
-    ...    Config ID: Config_prod_VE
-    ...    Applicability: The VNF supports the generation and maintenance of performance indicators
-    ...    Post-Conditions: none   
-    Send Delete Request for Individual VNF Indicator Subscription with invalid resource identifier
-    Check HTTP Response Status Code Is    404
-    Check HTTP Response Body Json Schema Is   ProblemDetails
-
 PUT Individual VNF Indicator Subscription - Method not implemented
     [Documentation]    Test ID 6.3.2.5.5
     ...    Test title: PUT individual VNF indicator subscription - Method not implemented
@@ -97,7 +71,33 @@ POST Individual VNF Indicator Subscription - Method not implemented
     Check HTTP Response Status Code Is    405
     Check Postcondition VNF individual subscription is not created  
 
- *** Keywords ***
+DELETE Individual VNF Indicator Subscription
+    [Documentation]    Test ID: 6.3.2.5.3
+    ...    Test title: Delete individual subscription to VNF performance indicators
+    ...    Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription.
+    ...    Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF.
+    ...    Reference:  section 8.4.6.3.5 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: The VNF supports the generation and maintenance of performance indicators
+    ...    Post-Conditions: The subscription to VNF performance indicators is deleted
+    Send Delete Request for Individual VNF Indicator Subscription
+    Check HTTP Response Status Code Is    204
+    Check Postcondition Individual VNF Indicator Subscription is Deleted
+
+DELETE Individual VNF Indicator Subscription with invalid resource identifier
+    [Documentation]    Test ID: 6.3.2.5.4
+    ...    Test title: Delete individual subscription to VNF performance indicators
+    ...    Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response.
+    ...    Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF.
+    ...    Reference:  section 8.4.6.3.5 - SOL002 v2.4.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: The VNF supports the generation and maintenance of performance indicators
+    ...    Post-Conditions: none   
+    Send Delete Request for Individual VNF Indicator Subscription with invalid resource identifier
+    Check HTTP Response Status Code Is    404
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+*** Keywords ***
 Get Individual VNF Indicator Subscription
     Log    Trying to get a given subscription identified by subscriptionId
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
@@ -173,7 +173,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
@@ -186,8 +186,7 @@ Check Postcondition VNF individual subscription Unmodified (Implicit)
     Log    Check Postcondition subscription is not modified
     GET Individual VNF Indicator Subscription
     Log    Check Response matches original subscription
-    ${subscription}=    evaluate    json.loads('''${response['body']}''')    json
-    Should Be Equal    ${origResponse['body']['callbackUri']}    ${subscription.callbackUri}
+    Should Be Equal As Strings    ${origResponse['body']['callbackUri']}    ${response['body']['callbackUri']}
     
 Check Postcondition VNF individual subscription is not created
     Log    Check Postcondition subscription is not created
diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot
index 6b470282c5568a0cf9efc277eea7e7e14e44bde1..e63c3444747cbccc521b267e412b32aa41064a70 100644
--- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot
+++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot
@@ -146,20 +146,20 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
 Check HTTP Response Body Includes Requested Indicator ID
     Log    Check Response includes propoer VNF instance and Indicator identifiers
-    Should Be Equal    ${response['body']['id']}    ${indicatorId}
+    Should Be Equal As Strings   ${response['body']['id']}    ${indicatorId}
 
 Check HTTP Response Body Includes Requested VNF Instance ID
     Log    Check Response includes propoer VNF instance and Indicator identifiers
-    Should Be Equal    ${response['body']['vnfInstanceId']}    ${vnfInstanceId}
+    Should Be Equal As Strings   ${response['body']['vnfInstanceId']}    ${vnfInstanceId}
 
 Check Postcondition Indicator for VNF instance Exist
     Log    Check Response includes VNF Indicator
     Get Individual Indicator for a VNF instance
-    Should Be Equal    ${response['body']['vnfInstanceId']}    ${vnfInstanceId}
-    Should Be Equal    ${response['body']['id']}    ${indicatorId}
+    Should Be Equal As Strings   ${response['body']['vnfInstanceId']}    ${vnfInstanceId}
+    Should Be Equal As Strings   ${response['body']['id']}    ${indicatorId}
diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot
index e46abfd3d374547d49d9bc11b20ce8c77e1d65be..47e677fe6258d55b6d32572621b9dcfe708653aa 100644
--- a/SOL002/VNFIndicator-API/Subscriptions.robot
+++ b/SOL002/VNFIndicator-API/Subscriptions.robot
@@ -198,7 +198,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
@@ -206,7 +206,7 @@ Check HTTP Response Body Matches the Subscription
     Log    Check Response matches subscription
     ${body}=    Get File    jsons/subscriptions.json
     ${subscription}=    evaluate    json.loads('''${body}''')    json
-    Should Be Equal    ${response['body']['callbackUri']}    ${subscription.callbackUri}
+    Should Be Equal    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
 
 Check Postcondition VNF Indicator Subscription Is Set
     Log    Check Postcondition subscription exist
diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot
index 41d883020fe1773dfad6b069a2371b5e60d1e163..8e73163c2191b868b7c59f62aa1af17c33252bb0 100644
--- a/SOL002/VNFIndicator-API/VNFIndicators.robot
+++ b/SOL002/VNFIndicator-API/VNFIndicators.robot
@@ -4,7 +4,7 @@ Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Library           JSONLibrary
 Resource          environment/vnfIndicators.txt
-Library           REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}
+Library           REST    ${EM-VNF_SCHEMA}://${EM-VNF_HOST}:${EM-VNF_PORT}    ssl_verify=false
 
 *** Test Cases ***
 Get all VNF Indicators
@@ -153,8 +153,6 @@ Get all VNF indicators
     Get    ${apiRoot}/${apiName}/${apiVersion}/indicators
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    ${body}=    evaluate    json.loads('''${response.body}''')    json
-    Set Suite Variable    @{vnfIndicators}    ${body}
     
 Get VNF indicators with filter
     Log    The GET method queries multiple VNF indicators using Attribute-based filtering parameters
@@ -208,7 +206,7 @@ Get all VNF indicators with invalid resource endpoint
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     Log    Execute Query and validate response
-    Get    ${apiRoot}/${apiName}/${apiVersion}/indicators
+    Get    ${apiRoot}/${apiName}/${apiVersion}/indicator
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
 
@@ -249,6 +247,8 @@ Check HTTP Response Status Code Is
     ${status}=    Convert To Integer    ${expected_status}    
     Should Be Equal    ${response['status']}    ${status} 
     Log    Status code validated
+    Run Keyword If    ${status} == 401
+    ...    Check HTTP Response Header Contains    "WWW-Authenticate"    
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
@@ -258,11 +258,12 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${schema}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    Validate Json    ${schema}    ${response['body']}
+    ${jsonSchema}=    Catenate    SEPARATOR=    ${schema}    .schema.json
+    Validate Json    ${jsonSchema}    ${response['body']}
     Log    Json Schema Validation OK
 
 Check Postcondition VNF Indicators Exist
-    Log    Check  Postcondition indicators exist
+    Log    Check Postcondition indicators exist
     Get all VNF indicators
     Check HTTP Response Status Code Is    200
     
diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot
index 7d32ac83495d06a2cf82cae41b6167bf946a3d71..0c7c9da6fb96a0c65903e332b8d7521fbe6a31dc 100644
--- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot
+++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot
@@ -190,7 +190,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFIndicator-API/environment/vnfIndicators.txt b/SOL002/VNFIndicator-API/environment/vnfIndicators.txt
index 1d7a65764e5f2d46481ab33c756b6e49097987ed..8b1a56f48622c75784aabf684a9bbd76a807e97e 100644
--- a/SOL002/VNFIndicator-API/environment/vnfIndicators.txt
+++ b/SOL002/VNFIndicator-API/environment/vnfIndicators.txt
@@ -2,4 +2,4 @@
 ${POS_FIELDS}     name=vnfIndicator&vnfInstanceId=80b0deba-c398-445b-bef0-ac0fe733e3d0
 ${NEG_FIELDS}     wrongName=wrongValue
 ${response}       some_response_object
-${vnfIndicators}  original_vnf_indicators
+${vnfIndicators}  
diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot
index fe227d6c0eb9ddc4cc17990916cc8b3f548370df..79519e1516de3f58ab86b90b5f1aff54d0d7860b 100644
--- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot
+++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot
@@ -200,7 +200,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
index bac1b68c5764da4778c8a6f05d3c8d146514c3d8..bde44ac2571f93641b5630c8c68e2a55e14c0269 100644
--- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
+++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot
@@ -168,7 +168,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot
index 36aa1af5a4dce6ae72939a2b124973749a3caa1c..a63f2c9d19323970d1cff5b8d337c01ce6d1b252 100644
--- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot
+++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot
@@ -198,7 +198,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot
index 6fb56481701d260dec68bbadf80d82615e9cf927..518f30a72432f783a25f73f0d2b743906222379a 100644
--- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot
+++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot
@@ -295,7 +295,7 @@ Check HTTP Response Body Matches exclude_fields selector
 Check HTTP Response Body Matches fields selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
@@ -311,7 +311,7 @@ Check HTTP Response Body Matches exclude_default selector
 Check HTTP Response Body Matches all_fields selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
@@ -350,7 +350,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot
index 319296178ac70005ff1660b6f2a2748ff162557d..e1a6bdf0f25ee155f1792f6206b8e31d39a49372 100644
--- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot
+++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot
@@ -211,7 +211,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
index d2c839c3fb0df14220afa5c04439589ab034c6ca..a48fdb7ed3fe1badfb17dc040278df8b749947ad 100644
--- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
+++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
@@ -239,8 +239,8 @@ Check Postcondition VNF Performance Subscription is Unmodified (Implicit)
     GET individual VNF Performance Subscription
     Log    Check Response matches original VNF Threshold
     ${subscription}=    evaluate    json.loads('''${response['body']}''')    json
-    Should Be Equal    ${origResponse['body']['id']}    ${subscription.id}
-    Should Be Equal    ${origResponse['body']['callbackUri']}    ${subscription.callbackUri}
+    Should Be Equal As Strings    ${origResponse['body']['id']}    ${subscription.id}
+    Should Be Equal As Strings    ${origResponse['body']['callbackUri']}    ${subscription.callbackUri}
 
 Check Postcondition VNF Performance Subscription is not Created
     Log    Trying to get a new subscription
@@ -258,12 +258,12 @@ Check Postcondition VNF Performance Subscription is Deleted
 
 Check HTTP Response Body Subscription Identifier matches the requested Subscription
     Log    Trying to check response ID
-    Should Be Equal    ${response['body']['id']}    ${subscriptionId} 
+    Should Be Equal As Strings    ${response['body']['id']}    ${subscriptionId} 
     Log    Subscription identifier as expected
     
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
-    Should Be Equal    ${response['status']}    ${expected_status}
+    Should Be Equal As Strings   ${response['status']}    ${expected_status}
     Log    Status code validated 
     
     
@@ -271,7 +271,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -290,7 +290,7 @@ Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subsc
     Log    Check Response matches subscription
     ${body}=    Get File    jsons/subscriptions.json
     ${subscription}=    evaluate    json.loads('''${body}''')    json
-    Should Be Equal    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
+    Should Be Equal As Strings    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
 
 Check Postcondition VNF Performance Subscription Is Set
     Log    Check Postcondition subscription exist
@@ -302,7 +302,7 @@ Check Postcondition VNF Performance Subscription Is Set
 
 Check Postcondition Subscription Resource Returned in Location Header Is Available
     Log    Going to check postcondition
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -317,12 +317,12 @@ Check Postcondition VNF Performance Subscriptions Exists
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 Check HTTP Response Location Header Resource URI
     Log    Going to check
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
index 1872a3bc9bc8ea93a54f0da4ab665f0564c727e1..6a21ba34fa05dab0a8d3011fe1130d7492998ab8 100644
--- a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
+++ b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
@@ -4,7 +4,6 @@
 		"performanceMetric": [],
 		"performanceMetricGroup": [],
 		"collectionPeriod": 10,
-		"reportingPeriod": 30,
-		
+		"reportingPeriod": 30
 	}
 }
\ No newline at end of file
diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot
index a0d2ef119cdec162bf71a001b39dcdb1b792f590..caedee1f8ed33c9c9ac0d3a49f8a3a21d0b88cd9 100644
--- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot
+++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot
@@ -173,7 +173,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -206,7 +206,7 @@ Check Postcondition VNF Indicator Subscription Is Set
 
 Check Postcondition Subscription Resource Returned in Location Header Is Available
     Log    Going to check postcondition
-    GET    ${response.headers['Location']}
+    GET    ${response['headers]['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -217,7 +217,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 Get all VNF indicators
@@ -228,8 +228,7 @@ Get all VNF indicators
     Get    ${apiRoot}/${apiName}/${apiVersion}/indicators
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    ${body}=    evaluate    json.loads('''${response.body}''')    json
-    Set Suite Variable    @{vnfIndicators}    ${body}
+    Set Suite Variable    ${vnfIndicators}    ${response['body']}
     
 Get VNF indicators with filter
     Log    The GET method queries multiple VNF indicators using Attribute-based filtering parameters
diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot
index cd4cd00ade48c09b6e63931adbd9ee6199a44c03..b6bdbb8f1aedc67d287f61346ee680c3a3a72d66 100644
--- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot
+++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot
@@ -38,7 +38,7 @@ Get Information about an individual VNF Instance
     Validate Json    vnfInstance.schema.json    ${result}
     Log    Validation OK
     ${etag}    Output    response headers ETag
-    Set Suite Variable    &{original_etag}    ${etag}
+    Set Suite Variable    ${original_etag}    ${etag}
     
 PUT Individual VNFInstance - Method not implemented 
     log    Trying to perform a PUT. This method should not be implemented
@@ -57,12 +57,11 @@ PATCH Individual VNFInstance
     log    Trying to modify an individual VNF instance
     Set Headers    {"Accept":"${ACCEPT}"}  
     Set Headers    {"Content-Type": "${CONTENT_TYPE_PATCH}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/patchBodyRequest.json
     Patch    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}    ${body}
     Log    Validate Status code
-    ${Etag_modified}=    Output    response headers ETag
     Integer    response status    202
     ${headers}=    Output    response headers
     Should Contain    ${headers}    Location
@@ -77,7 +76,7 @@ PATCH Individual VNFInstance Precondition failed
     log    Trying to modify an individual VNF instance Precondition failed
     Set Headers    {"Accept":"${ACCEPT}"}  
     Set Headers    {"Content-Type": "${CONTENT_TYPE_PATCH}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/patchBodyRequest.json
     Patch    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}    ${body}
diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot
index 28589121ad8b523611c69776e53a15112aaae01d..80c53f5a7aa402315bfb38f38a53351b109dd12c 100644
--- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot
+++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot
@@ -34,7 +34,7 @@ Scale a vnfInstance Conflict (Not-Instantiated)
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/scaleVnfRequest.json
-    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale    ${body}
     Integer    response status    409
     Log    Status code validated
     ${problemDetails}=    Output    response body
diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot
index 4ba305f447156f354eef4f00af69386b5a1ebbc0..880f1d466889d90629e54dc271838757497bb85c 100644
--- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot
+++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot
@@ -34,7 +34,7 @@ Scale a vnfInstance to level Conflict (Not-Instantiated)
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/scaleVnfToLevelRequest.json
-    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/scale_to_level    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale_to_level    ${body}
     Integer    response status    409
     Log    Status code validated
     ${problemDetails}=    Output    response body
diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot
index 8f778651b7d5d7043f4a72d38c72ece2272b10a6..ca86a5531be0cb2e2823cb9e289d2d0ac757954f 100644
--- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot
+++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot
@@ -35,7 +35,7 @@ Terminate a vnfInstance Conflict (Not-Instantiated)
     Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     ${body}=    Get File    jsons/terminateVnfRequest.json
-    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/terminate    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate    ${body}
     Integer    response status    409
     Log    Status code validated
     ${problemDetails}=    Output    response body
diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt
index b044c85627177f764808f8a8284ff792dfa9027c..a4c8fadf5dbe365f906555d75930d36856b4b3b9 100644
--- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt
+++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt
@@ -21,7 +21,7 @@ ${requestedFlavour}    test
 ${sub_filter}    filter
 ${sub_filter_invalid}    filter_invalid
 
-
+${notInstantiatedVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
 
 
 
diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot
index 7c406ac5afd3e39d35d62326bd8e4b4b7ea229e0..a31900540a0279d8a77121d412c4e9c22eaf767f 100644
--- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot
+++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot
@@ -12,6 +12,7 @@ ${response}    {}
 
 *** Test Cases ***
 Request a new Grant - Synchronous mode
+    [Tags]    synchronous-mode
     [Documentation]    Test ID: 9.4.2.1
     ...    Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode
     ...    Test objective: The objective is to request a grant for a particular VNF lifecycle operation 
@@ -29,6 +30,7 @@ Request a new Grant - Synchronous mode
     Log    Validation OK
 
 Request a new Grant - Asynchronous mode
+    [Tags]    no-synchronous-mode
     [Documentation]    Test ID: 9.4.2.2
     ...    Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode
     ...    Test objective: The objective is to request a grant for a particular VNF lifecycle operation 
@@ -42,7 +44,7 @@ Request a new Grant - Asynchronous mode
     Send Request Grant Request
     Check HTTP Response Status Code Is    202
     Check HTTP Response Header Contains    Location
-    Check HTTP Response Body Json Schema Is    grant.schema.json
+    #Check HTTP Response Body Json Schema Is    grant.schema.json
     Wait Until Keyword Succeeds    2 min   10 sec    Get an individual grant - Successful
     Log    Validation OK
 
@@ -108,33 +110,35 @@ Send Request Grant Request
     Set Headers    {"Content-Type": "${CONTENT_TYPE}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     ${body}=    Get File    jsons/grantRequest.json
-    Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}
-    ${body}=    Output    response
-    Set Suite Variable    &{response}    ${body}
+    Post    ${apiRoot}/${apiName}/${apiVersion}/grants    ${body}    allow_redirects=false
+    ${resp}    Output    response
+    ${result}=    evaluate    json.loads(json.dumps(${resp}))    json
+    Log  ${result}
+    Set Suite Variable    ${response}    ${result}
 
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
-    Should Be Equal as Strings   ${response[0]['status_code']}    ${expected_status}
+    Should Be Equal As Strings    ${response['status']}    ${expected_status}
     Log    Status code validated
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response[0]['headers']}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
     
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${schema}
-    Validate Json    ${schema}    ${response[0]['body']}
+    Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
     
 Get an individual grant - Successful
     log    Trying to read an individual grant
     Set Headers    {"Accept":"${ACCEPT}"}  
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
-    Get    ${response[0]['headers']['Location']}
+    Get    ${response['headers']['Location']}
     Log    Validate Status code
     Integer    response status    200
-    ${result}=    Output    response body
+    ${result}    Output    response body
     Validate Json    grant.schema.json    ${result}
     Log    Validation OK
 
diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot
index 5cd8ddeb4af5c2ff7762bd9de3ddf9d986cec6e8..c2a85d3d3bca139ffa291c7251dd26e62e027a62 100644
--- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot
+++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot
@@ -39,6 +39,7 @@ Get an individual grant - Successful
     Log    Validation OK
     
 Get an individual grant - Process ongoing
+    [Tags]    no-synchronous-mode
     [Documentation]    Test ID: 9.4.3.2
     ...    Test title: Requests a grant for a particular VNF lifecycle operation - Process ongoing
     ...    Test objective: The objective is to request a grant for a particular VNF lifecycle operation 
@@ -48,6 +49,7 @@ Get an individual grant - Process ongoing
     ...    Applicability: 
     ...    Post-Conditions: 
     log    Trying to read an individual grant
+    Pass Execution If    ${SYNC_MODE} == 1   Skipping. Synchronous mode is supported    
     Set Headers    {"Accept":"${ACCEPT}"}  
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
     Get    ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId}
@@ -55,6 +57,7 @@ Get an individual grant - Process ongoing
     Integer    response status    202
 
 Get an individual grant - grant rejected
+    [Tags]    no-synchronous-mode
     [Documentation]    Test ID: 9.4.3.3
     ...    Test title: Requests a grant for a particular VNF lifecycle operation - grant rejected
     ...    Test objective: The objective is to request a grant for a particular VNF lifecycle operation 
diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot
index 4c3ca405a7400aa054bbfb64e75c09c3ad552ee6..27c636ff72df1011ab23efeb9e7b8a20ff955f84 100644
--- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot
+++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot
@@ -19,6 +19,7 @@ GET Individual VNF Package Artifact
     GET Individual VNF Package Artifact
     Check HTTP Response Status Code Is    200
 
+
 GET Individual VNF Package Artifact in octet stream format
     [Documentation]    Test ID: 7.3.3.5.2
     ...    Test title: GET Individual VNF Package Artifact in octet stream format
diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
index 9748467c4922dc99cbfa6cff77003d7d2b038a16..ed9ef1ddb390ef3654a2b1cf48263d112c732be1 100644
--- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
+++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
@@ -619,7 +619,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -647,8 +647,10 @@ Check Postcondition VNF Package Subscription Is Set
     Log    Trying to get the subscription
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    Run Keyword If    Should Not Be Equal As Strings    ${location}    Location   GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
-    Run Keyword If    Should Be Equal As Strings    ${location}    Location   GET    ${response['headers']['Location']}  
+    Run Keyword If    ${location} == Location
+    ...    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
+    Run Keyword If    ${location} == Location
+    ...    GET    ${response['headers']['Location']}  
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     Check HTTP Response Status Code Is    200
@@ -656,7 +658,7 @@ Check Postcondition VNF Package Subscription Is Set
 Check Postcondition Subscription Resource Returned in Location Header Is Available
     Log    Going to check postcondition
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -745,7 +747,7 @@ Check Postcondition VNF Package Subscription is not Created
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 Check HTTP Response Body Subscription Identifier matches the requested Subscription
diff --git a/SOL003/VNFPackageManagement-API/schemas/userDefinedData.schema.json b/SOL003/VNFPackageManagement-API/schemas/userDefinedData.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..fa31850fc78a82427e55bceac29ccfbcd00e8a96
--- /dev/null
+++ b/SOL003/VNFPackageManagement-API/schemas/userDefinedData.schema.json
@@ -0,0 +1,4 @@
+{
+  "description": "",
+  "type": "object"
+}
\ No newline at end of file
diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot
index a9b8406fff04df6179dc770a19fd4a8ce5952211..5a79e527cbbb2420028168f580b83df32f5e6417 100644
--- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot
+++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot
@@ -199,6 +199,6 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}	.schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot
index 46715a431d922791d51d2d16d21a13ee86ed7575..64c6c87acfd249b92a4274d851d06ba777d7e467 100644
--- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot
+++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot
@@ -168,7 +168,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot
index cbcd4578882862eda1d1298a18f2e08575707c53..ecdf16b9c5c362efaf9d8c3c9fdd18ad0e30a9ce 100644
--- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot
+++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot
@@ -198,6 +198,6 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot
index 67ba7e5985eaa7679a48ff0d24e28820e48ec653..1f1d4a3a38e4e2cdabff8a4515a9efb3b84b10ee 100644
--- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot
+++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot
@@ -295,7 +295,7 @@ Check HTTP Response Body PmJobs Matches the requested exclude_fields selector
 Check HTTP Response Body PmJobs Matches the requested fields selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
@@ -311,7 +311,7 @@ Check HTTP Response Body PmJobs Matches the requested exclude_default selector
 Check HTTP Response Body PmJobs Matches the requested all_fields selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
@@ -350,6 +350,6 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot
index 788c8b4fdc2156a70b979a749ef2223e8aaa0ddd..3256c1af107708cef49e0c60a1292fa7c545625c 100644
--- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot
+++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot
@@ -211,7 +211,7 @@ Check HTTP Response Header Contains
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK
 
diff --git a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
index 230d2208663f85270d5c31faf61f70569d3e8d68..15d256da00cbfebf58ffe22e60eadd180e44dbf6 100644
--- a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
+++ b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot
@@ -239,8 +239,8 @@ Check Postcondition VNF Performance Subscription is Unmodified (Implicit)
     GET individual VNF Performance Subscription
     Log    Check Response matches original VNF Threshold
     ${subscription}=    evaluate    json.loads('''${response['body']}''')    json
-    Should Be Equal    ${origResponse['body']['id']}    ${subscription.id}
-    Should Be Equal    ${origResponse['body']['callbackUri']}    ${subscription.callbackUri}
+    Should Be Equal As Strings    ${origResponse['body']['id']}    ${subscription.id}
+    Should Be Equal As Strings    ${origResponse['body']['callbackUri']}    ${subscription.callbackUri}
 
 Check Postcondition VNF Performance Subscription is not Created
     Log    Trying to get a new subscription
@@ -258,12 +258,12 @@ Check Postcondition VNF Performance Subscription is Deleted
 
 Check HTTP Response Body Subscription Identifier matches the requested Subscription
     Log    Trying to check response ID
-    Should Be Equal    ${response['body']['id']}    ${subscriptionId} 
+    Should Be Equal As Strings   ${response['body']['id']}    ${subscriptionId} 
     Log    Subscription identifier as expected
     
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
-    Should Be Equal    ${response['status']}    ${expected_status}
+    Should Be Equal As Strings    ${response['status']}    ${expected_status}
     Log    Status code validated 
     
     
@@ -271,7 +271,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -290,7 +290,7 @@ Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subsc
     Log    Check Response matches subscription
     ${body}=    Get File    jsons/subscriptions.json
     ${subscription}=    evaluate    json.loads('''${body}''')    json
-    Should Be Equal    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
+    Should Be Equal As Strings    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
 
 Check Postcondition VNF Performance Subscription Is Set
     Log    Check Postcondition subscription exist
@@ -304,7 +304,7 @@ Check Postcondition VNF Performance Subscription Is Set
 Check Postcondition Subscription Resource Returned in Location Header Is Available
     Log    Going to check postcondition
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -319,12 +319,12 @@ Check Postcondition VNF Performance Subscriptions Exists
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 Check HTTP Response Location Header Resource URI
     Log    Going to check
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
diff --git a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
index 205583a5fb197b2a5cc13e9f89bef0f59302988f..562b51a2ee79239e0f7b4de63066b35eb9ad1ee4 100644
--- a/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
+++ b/SOL003/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json
@@ -4,7 +4,6 @@
 		"performanceMetric": [],
 		"performanceMetricGroup": [],
 		"collectionPeriod": 10,
-		"reportingPeriod": 30,
-		
+		"reportingPeriod": 30
 	}
 }
\ No newline at end of file
diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot
index 2bbacf84af94f09986f7f166f0dfd8ef2a3fec23..6d4f3f836955af47858ffe807178489cc339073c 100644
--- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot
+++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot
@@ -25,6 +25,7 @@ GET Individual Network Service Descriptor Information
     Check HTTP Response Header Contains ETag
     Check HTTP Response Body NsdInfo Identifier matches the requested Network Service Descriptor Information
 
+
 GET Individual Network Service Descriptor Information with invalid resource identifier
     [Documentation]    Test ID: 5.3.1.2.2
     ...    Test title: GET Individual Network Service Descriptor Information with invalid resource identifier
@@ -37,6 +38,8 @@ GET Individual Network Service Descriptor Information with invalid resource iden
     GET Individual Network Service Descriptor Information with invalid resource identifier
     Check HTTP Response Status Code Is    404
 
+
+
 Disable Individual Network Service Descriptor   
     [Documentation]    Test ID: 5.3.1.2.3
     ...    Test title: Disable Individual Network Service Descriptor  
@@ -155,5 +158,3 @@ PUT Individual Network Service Descriptor - Method not implemented
     ...    Post-Conditions: none
     Send PUT Request for Individual Network Service Descriptor
     Check HTTP Response Status Code Is    405
-
-
diff --git a/SOL005/NSDManagement-API/NSDContent.robot b/SOL005/NSDManagement-API/NSDContent.robot
index 12d760901d039c11887370de4e9f746983b44857..5a30e678f26f6715136eb00e01a8de07d50a0f5a 100644
--- a/SOL005/NSDManagement-API/NSDContent.robot
+++ b/SOL005/NSDManagement-API/NSDContent.robot
@@ -162,7 +162,7 @@ Upload NSD Content as plain text file in asynchronous mode
     ...    Post-Conditions: none
     Send PUT Request to upload NSD Content as plain text file in asynchronous mode
     Check HTTP Response Status Code Is    202   
-    
+   
 Upload NSD Content as Zip file in synchronous mode
     [Documentation]    Test ID: 5.3.1.3.13
     ...    Test title: Upload NSD Content as Zip file in synchronous mode
@@ -188,6 +188,7 @@ Upload NSD Content as plain text file in synchronous mode
     Send PUT Request to upload NSD Content as plain text file in synchronous mode
     Check HTTP Response Status Code Is    204 
     Check Postcondition NSD Content is uploaded and available in the NFVO
+
  
 Upload NSD Content with conflict due to onboarding state
    [Documentation]    Test ID: 5.3.1.3.15
diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot
index 6b9bf1b51aca67daa0069b4f80ad5c34b3ac06b9..0b489eeb672be109d968ce1dce8fd3cb5fe103ee 100644
--- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot
+++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot
@@ -81,7 +81,7 @@ GET all Network Service Descriptors Information with all_fields attribute select
 
 Check HTTP Response Body NsdInfos Matches the requested all_fields selector
     Log    Validating user defined data schema
-    ${user}=    Get Value From Json    ${response['body']}    $..UserDefinedData
+    ${user}=    Get Value From Json    ${response['body']}    $..userDefinedData
     Validate Json    UserDefinedData.schema.json    ${user[0]}
     Log    Validation for schema OK
 
@@ -95,7 +95,7 @@ GET all Network Service Descriptors Information with exclude_default attribute s
 
 Check HTTP Response Body NsdInfos Matches the requested exclude_default selector
     Log    Checking that element is missing
-    ${user}=    Get Value From Json    ${response['body']}    $..UserDefinedData
+    ${user}=    Get Value From Json    ${response['body']}    $..userDefinedData
     Should Be Empty    ${user}
     Log    Reports element is empty as expected
 
@@ -110,7 +110,7 @@ GET all Network Service Descriptors Information with fields attribute selector
 
 Check HTTP Response Body NsdInfos Matches the requested fields selector
     Log    Validating user defined data schema
-    ${user}=    Get Value From Json    ${response['body']}    $..UserDefinedData
+    ${user}=    Get Value From Json    ${response['body']}    $..userDefinedData
     Validate Json    UserDefinedData.schema.json    ${user[0]}
     Log    Validation for schema OK
 
@@ -125,7 +125,7 @@ GET all Network Service Descriptors Information with exclude_fields attribute se
 
 Check HTTP Response Body NsdInfos Matches the requested exclude_fields selector
     Log    Checking that element is missing
-    ${user}=    Get Value From Json    ${response['body']}    $..UserDefinedData
+    ${user}=    Get Value From Json    ${response['body']}    $..userDefinedData
     Should Be Empty    ${user}
     Log    Reports element is empty as expected   
 
@@ -207,7 +207,7 @@ Send PATCH to disable Individual Network Service Descriptor
     Log    Trying to perform a PATCH. As prerequisite the nsdInfo shall be in enabled operational state
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     ${body}=    Get File    jsons/NsdInfoModificationDisable.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}    ${body}
@@ -227,7 +227,7 @@ Send PATCH to enable Individual Network Service Descriptor
     Log    Trying to perform a PATCH. As prerequisite the nsdInfo shall be in disabled operational state
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     ${body}=    Get File    jsons/NsdInfoModificationEnable.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}    ${body}
@@ -238,7 +238,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d
     Log    Trying to patch a NSD present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     ${body}=    Get File    jsons/NsdInfoModificationEnable.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${notOnboardedNsdInfoId}    ${body}
@@ -249,7 +249,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d
     Log    Trying to perform a PATCH. As prerequisite the nsdInfo shall be modified by another entity
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${wrong_etag[0]}"}
+    Set Headers    {"If-Match": "${wrong_etag}"}
     ${body}=    Get File    jsons/NsdInfoModificationEnable.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${nsdInfoId}    ${body}
@@ -646,7 +646,7 @@ Send PATCH to update Individual PNF Descriptor
     Log    Trying to perform a PATCH.
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${original_etag[0]}"}
+    Set Headers    {"If-Match": "${original_etag}"}
     ${body}=    Get File    jsons/PnfdInfoModification.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}    ${body}
@@ -662,7 +662,7 @@ Send PATCH to update Individual PNF Descriptor with HTTP Etag precondition failu
     Log    Trying to perform a PATCH. As prerequisite the pnfdInfo shall be modified by another entity
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    Set Headers    {"If-Match": "${wrong_etag[0]}"}
+    Set Headers    {"If-Match": "${wrong_etag}"}
     ${body}=    Get File    jsons/PnfdInfoModification.json
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/pnf_descriptors/${pnfdInfoId}    ${body}
@@ -872,7 +872,7 @@ Check Postcondition NSD Management Subscriptions Exists
 
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
-    Should Be Equal    ${response['status']}    ${expected_status}
+    Should Be Equal As Strings     ${response['status']}    ${expected_status}
     Log    Status code validated 
     
     
@@ -880,7 +880,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -899,7 +899,7 @@ Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Sub
     Log    Check Response matches subscription
     ${body}=    Get File    jsons/subscriptions.json
     ${subscription}=    evaluate    json.loads('''${body}''')    json
-    Should Be Equal    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
+    Should Be Equal As Strings    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
 
 
 Check Postcondition NSD Management Subscription Is Set
@@ -916,7 +916,7 @@ Check Postcondition NSD Management Subscription Is Set
 Check Postcondition Subscription Resource Returned in Location Header Is Available
     Log    Going to check postcondition
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -1010,13 +1010,13 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 Check HTTP Response Header Contains Etag
-    Should Contain    ${response.headers}    Etag
+    Should Contain    ${response['headers']}    Etag
     Log    Header is present
-    Set Suite Variable    &{original_etag}    ${response.headers['Etag']}
+    Set Suite Variable    ${original_etag}    ${response['headers]['ETag']}
 
 
 Create Sessions
diff --git a/SOL005/NSDManagement-API/NSDescriptors.robot b/SOL005/NSDManagement-API/NSDescriptors.robot
index 2cbbf9dc9ca77e23080ab9e4868d0c3d6a3313d9..5ccdac3e086b055551a8de2af9a3ada8b4ff6056 100644
--- a/SOL005/NSDManagement-API/NSDescriptors.robot
+++ b/SOL005/NSDManagement-API/NSDescriptors.robot
@@ -1,11 +1,11 @@
 *** Settings ***
-Documentation     This clause defines all the resources and methods provided by the NS descriptors interface. \
+Documentation     This clause defines all the resources and methods provided by the NS descriptors interface.
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/nsDescriptors.txt    # Specific nsDescriptors Parameters
 Resource          NSDManagementKeywords.robot
 Library           JSONLibrary
-Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
+Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}    ssl_verify=false
 Library           OperatingSystem
 
 *** Test Cases ***
diff --git a/SOL005/NSDManagement-API/PNFDContent.robot b/SOL005/NSDManagement-API/PNFDContent.robot
index a1dbdfc663a5cf3da2f567c29ed7b333cc54f9b4..2b18c7d817bfd3f8a78a2fc0055d82e033b0bbcd 100644
--- a/SOL005/NSDManagement-API/PNFDContent.robot
+++ b/SOL005/NSDManagement-API/PNFDContent.robot
@@ -5,7 +5,7 @@ Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/pnfDescriptors.txt    # Specific PNFDescriptors Parameters
 Resource          NSDManagementKeywords.robot
 Library           JSONLibrary
-Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
+Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}    ssl_verify=false
 Library           OperatingSystem
 
 *** Test Cases ***
@@ -47,6 +47,7 @@ Get PNFD Content with conflict due to onboarding state
     Check HTTP Response Status Code Is    409
     Check HTTP Response Body Json Schema Is   ProblemDetails
 
+
 Upload PNFD Content as plain text file
     [Documentation]    Test ID: 5.3.1.6.4
     ...    Test title: Upload PNFD Content as plain text file
@@ -59,6 +60,7 @@ Upload PNFD Content as plain text file
     Send PUT Request to upload PNFD Content as plain text file
     Check HTTP Response Status Code Is    204
     Check Postcondition PNFD Content Exists
+
  
 Upload PNFD Content with conflict due to onboarding state
    [Documentation]    Test ID: 5.3.1.6.5
diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot
index 02e353c07d71b4ae3c5bedda2429361047dc039c..181c38e798a56a24c921b43b8fcfe5fb7cce5fa3 100644
--- a/SOL005/NSDManagement-API/Subscriptions.robot
+++ b/SOL005/NSDManagement-API/Subscriptions.robot
@@ -36,7 +36,7 @@ Get NSD Management Subscriptions with attribute-based filter
     ...    Post-Conditions: none
     Get NSD Management Subscriptions with attribute-based filters
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    NsdmSubscription
+    Check HTTP Response Body Json Schema Is    NsdmSubscriptions
     Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
     
 
@@ -110,7 +110,7 @@ Create duplicated NSD Management subscription with NFVO creating duplicated subs
     ...    Post-Conditions: The duplicated NSD Management subscription is successfully set and it matches the issued subscription    
     Send Post Request for Duplicated NSD Management Subscription
     Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    PmSubscription
+    Check HTTP Response Body Json Schema Is    NsdmSubscription
     Check HTTP Response Body NsdmSubscription Attributes Values Match the Issued Subscription
     Check Postcondition NSD Management Subscription Is Set 
 
diff --git a/SOL005/NSDManagement-API/environment/nsDescriptors.txt b/SOL005/NSDManagement-API/environment/nsDescriptors.txt
index 0b660674737fc05c651fbc7e015e911eeddbb372..1ac118a28efa3e23529bca5f6f7461b144d4cf33 100644
--- a/SOL005/NSDManagement-API/environment/nsDescriptors.txt
+++ b/SOL005/NSDManagement-API/environment/nsDescriptors.txt
@@ -27,4 +27,5 @@ ${BAD_AUTHORIZATION}    Bear sometoken
 ${original_etag}    1234
 ${wrong_etag}    abcd
 ${usageState}    state
-${length}          1024
\ No newline at end of file
+${length}          1024
+${createdNsdInfoId}    f27200b1-1d8b-48c2-9d98-a993b8ab117f
diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot
index a12e5c950bc2a2fb8cc25c09f37823cbb7490e8a..365bb1bec48a5262be90d481e55fb4445af6d2dd 100644
--- a/SOL005/NSFaultManagement-API/Subscriptions.robot
+++ b/SOL005/NSFaultManagement-API/Subscriptions.robot
@@ -33,7 +33,7 @@ Create a new alarm subscription - DUPLICATION
     ...    Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists
     ...    Post-Conditions: none
     Depends On Test    Create a new subscription
-    Pass Execution If    ${NFVO_DUPLICATION} == 0    NVFO is not permitting duplication. Skipping the test
+    Pass Execution If    ${NFVO_ALLOWS_DUPLICATE_SUBS} == 0    NVFO is not permitting duplication. Skipping the test
     POST Subscription
     Check HTTP Response Status Code Is    201
     Check HTTP Response Header Contains    Location
@@ -49,7 +49,7 @@ Create a new alarm subscription - NO DUPLICATION
     ...    Applicability: the NFVO decides to not create a duplicate subscription resource 
     ...    Post-Conditions: none
     Depends On Test    Create a new subscription
-    Pass Execution If    ${NFVO_DUPLICATION} == 1    NFVO permits duplication. Skipping the test
+    Pass Execution If    ${NFVO_ALLOWS_DUPLICATE_SUBS} == 1    NFVO permits duplication. Skipping the test
     POST Subscription
     Check HTTP Response Status Code Is    303
     Check HTTP Response Header Contains    Location
diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt
index 319dd27be62ed98454f7b5a16a6cb38ef81d1a3c..a5ba75027f2a1cea335b47dfe853d3f272aa2411 100644
--- a/SOL005/NSFaultManagement-API/environment/variables.txt
+++ b/SOL005/NSFaultManagement-API/environment/variables.txt
@@ -13,7 +13,7 @@ ${apiName}        nsfm
 ${apiVersion}     v1
 ${CONTENT_TYPE}    application/json
 
-${NFVO_DUPLICATION}     0
+${NFVO_ALLOWS_DUPLICATE_SUBS}     0
 
 ${alarmId}    6fc3539c-e602-4afa-8e13-962fb5a7d81d
 ${invalidAlarmId}    invalidAlramID
diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot
index 2314fd9e88239513917027cf2c441f9d5c31134f..fec15f0ddd05bf0ba7df8cc508df80044d8d3490 100644
--- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot
+++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot
@@ -13,7 +13,7 @@ Post Individual VNFInstance - Method not implemented
     Check HTTP Response Status Code Is    405
 
 Get Information about an individual NS Instance
-    Do POST individualNSInstance
+    Do GET IndividualNSInstance
     Check HTTP Response Status Code Is    200
     Check HTTP Response Header ContentType is    ${CONTENT_TYPE}
     Check HTTP Response Body Json Schema Is    NsInstance.schema.json
diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot
index 45848b99927e187c30b7643d546fe93ff1034c07..e26ae1463184a9436fd76440f866620ba42b2a66 100644
--- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot
+++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot
@@ -254,6 +254,15 @@ Do DELETE IndividualNSInstance
     ${outputResponse}=    Output    response
 	Set Global Variable    @{response}    ${outputResponse} 	
 	
+
+Do DELETE IndividualNSInstance Conflict
+    log    Trying to delete an individual VNF instance
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    Delete    ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${ConflictNsInstanceId}
+    ${outputResponse}=    Output    response
+	Set Global Variable    @{response}    ${outputResponse} 	
+
+
 Do DELETE Instantiate NSInstance
     log    Trying to delete an instantiate NS instance. This method should not be implemented
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json
index 56b7566f6a8da6cc5a4159c494cf4d60eae9fb53..a4b1ebba9123b0058f923d543391a8faecee0cb8 100644
--- a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json
+++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json
@@ -1,144 +1,1692 @@
 {
-
-	"description": "This type represents a response for Query NS operation.  It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
-	"type": "object",
-	"required": [
-		"id",
-		"nsInstanceName",
-		"nsInstanceDescription",
-		"nsdId",
-		"nsdInfoId",
-		"nsState"
-	],
-	"properties": {
-		"id": {
-			"description": "Identifier of the NS instance.\n",
-			"$ref": "SOL005_def.yaml#/definitions/Identifier"
-		},
-		"nsInstanceName": {
-			"description": "Human readable name of the NS instance.\n",
-			"type": "string"
-		},
-		"nsInstanceDescription": {
-			"description": "Human readable description of the NS instance.\n",
-			"type": "string"
-		},
-		"nsdId": {
-			"description": "Identifier of the NSD on which the NS instance is based.\n",
-			"$ref": "SOL005_def.yaml#/definitions/Identifier"
-		},
-		"nsdInfoId": {
-			"description": "Identifier of the NSD information object on which the NS instance is based. This identifier was allocated by the NFVO.\n",
-			"$ref": "SOL005_def.yaml#/definitions/Identifier"
-		},
-		"flavourId": {
-			"description": "Identifier of the NS deployment flavor applied to the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
-			"$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd"
-		},
-		"vnfInstance": {
-			"description": "Information on constituent VNF(s) of the NS instance.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/VnfInstance"
-			}
-		},
-		"pnfInfo": {
-			"description": "Information on the PNF(s) that are part of the NS instance.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/PnfInfo"
-			}
-		},
-		"virtualLinkInfo": {
-			"description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/NsVirtualLinkInfo"
-			}
-		},
-		"vnffgInfo": {
-			"description": "Information on the VNFFG(s) of the NS instance.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/VnffgInfo"
-			}
-		},
-		"sapInfo": {
-			"description": "Information on the SAP(s) of the NS instance.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/SapInfo"
-			}
-		},
-		"nestedNsInstanceId": {
-			"description": "Identifier of the nested NS(s) of the NS instance.\n",
-			"type": "array",
-			"items": {
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			}
-		},
-		"nsState": {
-			"description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
-			"type": "string",
-			"enum": [
-				"NOT_INSTANTIATED",
-				"INSTANTIATED"
-			]
-		},
-		"nsScaleStatus": {
-			"description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/NsScaleInfo"
-			}
-		},
-		"additionalAffinityOrAntiAffinityRule": {
-			"description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
-			"type": "array",
-			"items": {
-				"$ref": "#/definitions/AffinityOrAntiAffinityRule"
-			}
-		},
-		"_links": {
-			"type": "object",
-			"description": "Links to resources related to this resource.",
-			"required": [
-				"self"
-			],
-			"properties": {
-				"self": {
-					"description": "URI of this resource.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"nestedNsInstances": {
-					"description": "Links to resources related to this notification.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					}
-				},
-				"instantiate": {
-					"description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance in NOT_INSTANTIATED state).\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"terminate": {
-					"description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"update": {
-					"description": "Link to the \"update\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"scale": {
-					"description": "Link to the \"scale\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"heal": {
-					"description": "Link to the \"heal\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				}
-			}
-		}
-	}
-
-}	
\ No newline at end of file
+  "description": "This type represents a response for Query NS operation.  It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
+  "type": "object",
+  "required": [
+    "id",
+    "nsInstanceName",
+    "nsInstanceDescription",
+    "nsdId",
+    "nsdInfoId",
+    "nsState"
+  ],
+  "properties": {
+    "id": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "nsInstanceName": {
+      "description": "Human readable name of the NS instance.\n",
+      "type": "string"
+    },
+    "nsInstanceDescription": {
+      "description": "Human readable description of the NS instance.\n",
+      "type": "string"
+    },
+    "nsdId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "nsdInfoId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "flavourId": {
+      "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+      "type": "string"
+    },
+    "vnfInstance": {
+      "description": "Information on constituent VNF(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents a VNF instance.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "vnfdId",
+          "vnfProvider",
+          "vnfProductName",
+          "vnfSoftwareVersion",
+          "vnfdVersion",
+          "vnfPkgId",
+          "instantiationState"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfInstanceName": {
+            "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
+            "type": "string"
+          },
+          "vnfInstanceDescription": {
+            "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
+            "type": "string"
+          },
+          "vnfdId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfProvider": {
+            "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
+            "type": "string"
+          },
+          "vnfProductName": {
+            "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
+            "type": "string"
+          },
+          "vnfSoftwareVersion": {
+            "description": "A Version.\n",
+            "type": "string"
+          },
+          "vnfdVersion": {
+            "description": "A Version.\n",
+            "type": "string"
+          },
+          "vnfPkgId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfConfigurableProperties": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          },
+          "vimId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "instantiationState": {
+            "description": "The instantiation state of the VNF.\n",
+            "type": "string",
+            "enum": [
+              "NOT_INSTANTIATED",
+              "INSTANTIATED"
+            ]
+          },
+          "instantiatedVnfInfo": {
+            "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
+            "type": "object",
+            "required": [
+              "flavourId",
+              "vnfState"
+            ],
+            "properties": {
+              "flavourId": {
+                "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                "type": "string"
+              },
+              "vnfState": {
+                "type": "string",
+                "enum": [
+                  "STARTED",
+                  "STOPPED"
+                ]
+              },
+              "scaleStatus": {
+                "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
+                "type": "array",
+                "items": {
+                  "required": [
+                    "aspectId",
+                    "scaleLevel"
+                  ],
+                  "type": "object",
+                  "properties": {
+                    "aspectId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "scaleLevel": {
+                      "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
+                      "type": "integer"
+                    }
+                  }
+                }
+              },
+              "extCpInfo": {
+                "description": "Information about the external CPs exposed by the VNF instance.\n",
+                "type": "array",
+                "minItems": 1,
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "cpdId"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "cpdId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "cpProtocolInfo": {
+                      "description": "Network protocol information for this CP.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+                        "type": "object",
+                        "required": [
+                          "layerProtocol",
+                          "ipOverEthernet"
+                        ],
+                        "properties": {
+                          "layerProtocol": {
+                            "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                            "type": "string",
+                            "enum": [
+                              "IP_OVER_ETHERNET"
+                            ]
+                          },
+                          "ipOverEthernet": {
+                            "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                            "type": "object",
+                            "required": [
+                              "macAddress",
+                              "ipAddresses",
+                              "subnetId",
+                              "addresses",
+                              "addressRange"
+                            ],
+                            "properties": {
+                              "macAddress": {
+                                "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                                "type": "string",
+                                "format": "MAC"
+                              },
+                              "ipAddresses": {
+                                "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                                "type": "array",
+                                "items": {
+                                  "type": "object",
+                                  "required": [
+                                    "type"
+                                  ],
+                                  "properties": {
+                                    "type": {
+                                      "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                      "type": "string",
+                                      "enum": [
+                                        "IPV4",
+                                        "IPV6"
+                                      ]
+                                    },
+                                    "addresses": {
+                                      "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                                      "type": "array",
+                                      "items": {
+                                        "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                        "type": "string",
+                                        "format": "IP"
+                                      }
+                                    },
+                                    "isDynamic": {
+                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                      "type": "boolean"
+                                    },
+                                    "addressRange": {
+                                      "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                                      "type": "object",
+                                      "required": [
+                                        "minAddress",
+                                        "maxAddress"
+                                      ],
+                                      "properties": {
+                                        "minAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        },
+                                        "maxAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        }
+                                      }
+                                    },
+                                    "subnetId": {
+                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                      "type": "string"
+                                    }
+                                  }
+                                }
+                              },
+                              "type": {
+                                "description": "The type of the IP addresses\n",
+                                "type": "string",
+                                "enum": [
+                                  "PV4",
+                                  "PV6"
+                                ]
+                              },
+                              "addresses": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "isDynamic": {
+                                "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                "type": "boolean"
+                              },
+                              "addressRange": {
+                                "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                                "type": "object",
+                                "required": [
+                                  "minAddress",
+                                  "maxAddress"
+                                ],
+                                "properties": {
+                                  "minAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  },
+                                  "maxAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  }
+                                }
+                              },
+                              "minAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "maxAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "subnetId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              }
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "extLinkPortId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "extVirtualLinkInfo": {
+                "description": "Information about the external VLs the VNF instance is connected to.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "resourceHandle"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceHandle": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "extLinkPorts": {
+                      "description": "Link ports of this VL.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n",
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "extManagedVirtualLinkInfo": {
+                "description": "External virtual links the VNF instance is connected to.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vnfVirtualLinkDescId"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfVirtualLinkDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "networkResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "vnfLinkPorts": {
+                      "description": "Link ports of this VL.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "monitoringParameters": {
+                "description": "Active monitoring parameters.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "value",
+                    "timeStamp"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "value": {
+                      "description": "Value of the monitoring parameter known to the VNFM (e.g. obtained for auto-scaling purposes). The type of the \"value\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification.\n",
+                      "type": "object"
+                    },
+                    "timeStamp": {
+                      "description": "Represents the point in time when the measurement has been performed, as known to the VNFM. Should be formatted according to ETF RFC 3339.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "localizationLanguage": {
+                "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
+                "type": "string"
+              },
+              "vnfcResourceInfo": {
+                "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vduId",
+                    "computeResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "vduId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "computeResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "storageResourceIds": {
+                      "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfcCpInfo": {
+                      "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "cpdId"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "cpdId": {
+                            "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                            "type": "string"
+                          },
+                          "vnfExtCpId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "cpProtocolInfo": {
+                            "description": "Network protocol information for this CP.\n",
+                            "type": "array",
+                            "items": {
+                              "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+                              "type": "object",
+                              "required": [
+                                "layerProtocol",
+                                "ipOverEthernet"
+                              ],
+                              "properties": {
+                                "layerProtocol": {
+                                  "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                                  "type": "string",
+                                  "enum": [
+                                    "IP_OVER_ETHERNET"
+                                  ]
+                                },
+                                "ipOverEthernet": {
+                                  "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                                  "type": "object",
+                                  "required": [
+                                    "macAddress",
+                                    "ipAddresses",
+                                    "subnetId",
+                                    "addresses",
+                                    "addressRange"
+                                  ],
+                                  "properties": {
+                                    "macAddress": {
+                                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                                      "type": "string",
+                                      "format": "MAC"
+                                    },
+                                    "ipAddresses": {
+                                      "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                                      "type": "array",
+                                      "items": {
+                                        "type": "object",
+                                        "required": [
+                                          "type"
+                                        ],
+                                        "properties": {
+                                          "type": {
+                                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                            "type": "string",
+                                            "enum": [
+                                              "IPV4",
+                                              "IPV6"
+                                            ]
+                                          },
+                                          "addresses": {
+                                            "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                                            "type": "array",
+                                            "items": {
+                                              "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                              "type": "string",
+                                              "format": "IP"
+                                            }
+                                          },
+                                          "isDynamic": {
+                                            "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                            "type": "boolean"
+                                          },
+                                          "addressRange": {
+                                            "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                                            "type": "object",
+                                            "required": [
+                                              "minAddress",
+                                              "maxAddress"
+                                            ],
+                                            "properties": {
+                                              "minAddress": {
+                                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                                "type": "string",
+                                                "format": "IP"
+                                              },
+                                              "maxAddress": {
+                                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                                "type": "string",
+                                                "format": "IP"
+                                              }
+                                            }
+                                          },
+                                          "subnetId": {
+                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                            "type": "string"
+                                          }
+                                        }
+                                      }
+                                    },
+                                    "type": {
+                                      "description": "The type of the IP addresses\n",
+                                      "type": "string",
+                                      "enum": [
+                                        "PV4",
+                                        "PV6"
+                                      ]
+                                    },
+                                    "addresses": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "isDynamic": {
+                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                      "type": "boolean"
+                                    },
+                                    "addressRange": {
+                                      "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                                      "type": "object",
+                                      "required": [
+                                        "minAddress",
+                                        "maxAddress"
+                                      ],
+                                      "properties": {
+                                        "minAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        },
+                                        "maxAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        }
+                                      }
+                                    },
+                                    "minAddress": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "maxAddress": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "subnetId": {
+                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                      "type": "string"
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          },
+                          "vnfLinkPortId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "virtualLinkResourceInfo": {
+                "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vnfVirtualLinkDescId",
+                    "networkResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfVirtualLinkDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "networkResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfLinkPorts": {
+                      "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "virtualStorageResourceInfo": {
+                "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "virtualStorageDescId",
+                    "storageResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "virtualStorageDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "storageResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "metadata": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          },
+          "extensions": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          }
+        }
+      }
+    },
+    "pnfInfo": {
+      "description": "Information on the PNF(s) that are part of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents the information about a PNF that is part of an NS instance.  It shall comply with the provisions defined in Table 6.5.3.13-1.\n",
+        "type": "object",
+        "required": [
+          "pnfId",
+          "pnfdId",
+          "pnfdInfoId",
+          "pnfProfileId"
+        ],
+        "properties": {
+          "pnfId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfName": {
+            "description": "Name of the PNF.\n",
+            "type": "string"
+          },
+          "pnfdId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfdInfoId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfProfileId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "cpInfo": {
+            "description": "This type represents the information about the external CP of the PNF.  It shall comply with the provisions defined in Table 6.5.3.17-1.\n",
+            "type": "object",
+            "required": [
+              "cpInstanceId",
+              "cpdId"
+            ],
+            "properties": {
+              "cpInstanceId": {
+                "description": "Identifier of the CP in the scope of the PNF.\n",
+                "type": "string"
+              },
+              "cpdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "cpProtocolData": {
+                "description": "Parameters for configuring the network protocols on the CP.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents network protocol data. \n",
+                  "type": "object",
+                  "required": [
+                    "layerProtocol"
+                  ],
+                  "properties": {
+                    "layerProtocol": {
+                      "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
+                      "type": "string",
+                      "enum": [
+                        "IP_OVER_ETHERNET"
+                      ]
+                    },
+                    "ipOverEthernet": {
+                      "description": "This type represents network address data for IP over Ethernet.\n",
+                      "type": "object",
+                      "properties": {
+                        "macAddress": {
+                          "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                          "type": "string",
+                          "format": "MAC"
+                        },
+                        "ipAddresses": {
+                          "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
+                          "type": "array",
+                          "items": {
+                            "type": "object",
+                            "required": [
+                              "type"
+                            ],
+                            "properties": {
+                              "type": {
+                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                "type": "string",
+                                "enum": [
+                                  "IPV4",
+                                  "IPV6"
+                                ]
+                              },
+                              "fixedAddresses": {
+                                "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
+                                "type": "array",
+                                "items": {
+                                  "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                  "type": "string",
+                                  "format": "IP"
+                                }
+                              },
+                              "numDynamicAddresses": {
+                                "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
+                                "type": "integer"
+                              },
+                              "addressRange": {
+                                "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
+                                "type": "object",
+                                "required": [
+                                  "minAddress",
+                                  "maxAddress"
+                                ],
+                                "properties": {
+                                  "minAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  },
+                                  "maxAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  }
+                                }
+                              },
+                              "subnetId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "virtualLinkInfo": {
+      "description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
+      "type": "array",
+      "items": {
+        "description": "This type specifies the information about an NS VL instance.  It shall comply with the provisions defined in Table 6.5.3.53-1\n",
+        "type": "object",
+        "required": [
+          "id",
+          "nsVirtualLinkDescId"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "nsVirtualLinkDescId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "resourceHandle": {
+            "description": "Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n",
+            "type": "array",
+            "items": {
+              "required": [
+                "vimConnectionId",
+                "resourceId"
+              ],
+              "type": "object",
+              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+              "properties": {
+                "vimConnectionId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceProviderId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceId": {
+                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                  "type": "string"
+                },
+                "vimLevelResourceType": {
+                  "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "linkPort": {
+            "description": "Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n",
+            "type": "array",
+            "items": {
+              "description": "This type represents information about a link port of a VL instance.  It shall comply with the provisions defined in Table 6.5.3.55-1.\n",
+              "type": "object",
+              "required": [
+                "id",
+                "resourceHandle"
+              ],
+              "properties": {
+                "id": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceHandle": {
+                  "required": [
+                    "vimConnectionId",
+                    "resourceId"
+                  ],
+                  "type": "object",
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                  "properties": {
+                    "vimConnectionId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceProviderId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceId": {
+                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                      "type": "string"
+                    },
+                    "vimLevelResourceType": {
+                      "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                      "type": "string"
+                    }
+                  }
+                },
+                "nsCpHandle": {
+                  "description": "Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n",
+                  "type": "array",
+                  "items": {
+                    "description": "This type represents an identifier of the CP or SAP instance.  It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
+                    "type": "object",
+                    "properties": {
+                      "vnfInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfExtCpInstanceId": {
+                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                        "type": "string"
+                      },
+                      "pnfInfoId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "pnfExtCpInstanceId": {
+                        "description": "Identifier of the CP in the scope of the PNF.\n",
+                        "type": "string"
+                      },
+                      "nsInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "nsSapInstanceId": {
+                        "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                        "type": "string"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "vnffgInfo": {
+      "description": "Information on the VNFFG(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "Information on the VNFFG(s) of the NS instance.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "vnffgdId",
+          "vnfInstanceId",
+          "pnfInfoId"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnffgdId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "vnfInstanceId": {
+            "description": "Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "pnfdInfoId": {
+            "description": "Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "nsVirtualLinkInfoId": {
+            "description": "Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+              "type": "string"
+            }
+          },
+          "nsCpHandle": {
+            "description": "Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n",
+            "type": "array",
+            "items": {
+              "description": "This type represents an identifier of the CP or SAP instance.  It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
+              "type": "object",
+              "properties": {
+                "vnfInstanceId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "vnfExtCpInstanceId": {
+                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                  "type": "string"
+                },
+                "pnfInfoId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "pnfExtCpInstanceId": {
+                  "description": "Identifier of the CP in the scope of the PNF.\n",
+                  "type": "string"
+                },
+                "nsInstanceId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "nsSapInstanceId": {
+                  "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                  "type": "string"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "sapInfo": {
+      "description": "Information on the SAP(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "sapdId",
+          "sapName",
+          "sapProtocolInfo"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "sapdId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "sapName": {
+            "description": "Human readable name for the SAP instance.\n",
+            "type": "string"
+          },
+          "description": {
+            "description": "Human readable description for the SAP instance.\n",
+            "type": "string"
+          },
+          "sapProtocolInfo": {
+            "description": "Network protocol information for this SAP.\n",
+            "type": "array",
+            "items": {
+              "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+              "type": "object",
+              "required": [
+                "layerProtocol",
+                "ipOverEthernet"
+              ],
+              "properties": {
+                "layerProtocol": {
+                  "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                  "type": "string",
+                  "enum": [
+                    "IP_OVER_ETHERNET"
+                  ]
+                },
+                "ipOverEthernet": {
+                  "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                  "type": "object",
+                  "required": [
+                    "macAddress",
+                    "ipAddresses",
+                    "subnetId",
+                    "addresses",
+                    "addressRange"
+                  ],
+                  "properties": {
+                    "macAddress": {
+                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                      "type": "string",
+                      "format": "MAC"
+                    },
+                    "ipAddresses": {
+                      "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "type"
+                        ],
+                        "properties": {
+                          "type": {
+                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                            "type": "string",
+                            "enum": [
+                              "IPV4",
+                              "IPV6"
+                            ]
+                          },
+                          "addresses": {
+                            "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                            "type": "array",
+                            "items": {
+                              "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                              "type": "string",
+                              "format": "IP"
+                            }
+                          },
+                          "isDynamic": {
+                            "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                            "type": "boolean"
+                          },
+                          "addressRange": {
+                            "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                            "type": "object",
+                            "required": [
+                              "minAddress",
+                              "maxAddress"
+                            ],
+                            "properties": {
+                              "minAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "maxAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              }
+                            }
+                          },
+                          "subnetId": {
+                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "type": {
+                      "description": "The type of the IP addresses\n",
+                      "type": "string",
+                      "enum": [
+                        "PV4",
+                        "PV6"
+                      ]
+                    },
+                    "addresses": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "isDynamic": {
+                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                      "type": "boolean"
+                    },
+                    "addressRange": {
+                      "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                      "type": "object",
+                      "required": [
+                        "minAddress",
+                        "maxAddress"
+                      ],
+                      "properties": {
+                        "minAddress": {
+                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                          "type": "string",
+                          "format": "IP"
+                        },
+                        "maxAddress": {
+                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                          "type": "string",
+                          "format": "IP"
+                        }
+                      }
+                    },
+                    "minAddress": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "maxAddress": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "subnetId": {
+                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "nestedNsInstanceId": {
+      "description": "Identifier of the nested NS(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "An identifier with the intention of being globally unique.\n",
+        "type": "string"
+      }
+    },
+    "nsState": {
+      "description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
+      "type": "string",
+      "enum": [
+        "NOT_INSTANTIATED",
+        "INSTANTIATED"
+      ]
+    },
+    "nsScaleStatus": {
+      "description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
+        "type": "object",
+        "required": [
+          "nsScalingAspectId",
+          "nsScaleLevelId"
+        ],
+        "properties": {
+          "nsScalingAspectId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "nsScaleLevelId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "additionalAffinityOrAntiAffinityRule": {
+      "description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
+      "type": "array",
+      "items": {
+        "description": "This type describes the additional affinity or anti-affinity rule  applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances  to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
+        "type": "object",
+        "required": [
+          "affinityOrAntiAffiinty",
+          "scope"
+        ],
+        "properties": {
+          "vnfdId": {
+            "description": "Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "vnfProfileId": {
+            "description": "Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+              "type": "string"
+            }
+          },
+          "vnfInstanceId": {
+            "description": "Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "affinityOrAntiAffiinty": {
+            "description": "The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
+            "type": "string",
+            "enum": [
+              "AFFINITY",
+              "ANTI_AFFINITY"
+            ]
+          },
+          "scope": {
+            "description": "Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
+            "type": "string",
+            "enum": [
+              "NFVI_POP",
+              "ZONE",
+              "ZONE_GROUP",
+              "NFVI_NODE"
+            ]
+          }
+        }
+      }
+    },
+    "_links": {
+      "type": "object",
+      "description": "Links to resources related to this resource.",
+      "required": [
+        "self"
+      ],
+      "properties": {
+        "self": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "nestedNsInstances": {
+          "description": "Links to resources related to this notification.\n",
+          "type": "array",
+          "items": {
+            "description": "This type represents a link to a resource.\n",
+            "type": "object",
+            "required": [
+              "href"
+            ],
+            "properties": {
+              "href": {
+                "description": "URI of the referenced resource.\n",
+                "type": "string",
+                "format": "url"
+              }
+            }
+          }
+        },
+        "instantiate": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "terminate": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "update": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "scale": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "heal": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json
index 51832b7c36582f6572343e3e23011206758124e3..19bc9b63535c7a34d4f835ba114f51022c18af81 100644
--- a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json
+++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json
@@ -1,145 +1,1695 @@
 {
 	"type:" : "array",
  	"items": {
-		"description": "This type represents a response for Query NS operation.  It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
-		"type": "object",
-		"required": [
-			"id",
-			"nsInstanceName",
-			"nsInstanceDescription",
-			"nsdId",
-			"nsdInfoId",
-			"nsState"
-		],
-		"properties": {
-			"id": {
-				"description": "Identifier of the NS instance.\n",
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			},
-			"nsInstanceName": {
-				"description": "Human readable name of the NS instance.\n",
-				"type": "string"
-			},
-			"nsInstanceDescription": {
-				"description": "Human readable description of the NS instance.\n",
-				"type": "string"
-			},
-			"nsdId": {
-				"description": "Identifier of the NSD on which the NS instance is based.\n",
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			},
-			"nsdInfoId": {
-				"description": "Identifier of the NSD information object on which the NS instance is based. This identifier was allocated by the NFVO.\n",
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			},
-			"flavourId": {
-				"description": "Identifier of the NS deployment flavor applied to the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
-				"$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd"
-			},
-			"vnfInstance": {
-				"description": "Information on constituent VNF(s) of the NS instance.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/VnfInstance"
-				}
-			},
-			"pnfInfo": {
-				"description": "Information on the PNF(s) that are part of the NS instance.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/PnfInfo"
-				}
-			},
-			"virtualLinkInfo": {
-				"description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/NsVirtualLinkInfo"
-				}
-			},
-			"vnffgInfo": {
-				"description": "Information on the VNFFG(s) of the NS instance.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/VnffgInfo"
-				}
-			},
-			"sapInfo": {
-				"description": "Information on the SAP(s) of the NS instance.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/SapInfo"
-				}
-			},
-			"nestedNsInstanceId": {
-				"description": "Identifier of the nested NS(s) of the NS instance.\n",
-				"type": "array",
-				"items": {
-					"$ref": "SOL005_def.yaml#/definitions/Identifier"
-				}
-			},
-			"nsState": {
-				"description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
-				"type": "string",
-				"enum": [
-					"NOT_INSTANTIATED",
-					"INSTANTIATED"
-				]
-			},
-			"nsScaleStatus": {
-				"description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/NsScaleInfo"
-				}
-			},
-			"additionalAffinityOrAntiAffinityRule": {
-				"description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
-				"type": "array",
-				"items": {
-					"$ref": "#/definitions/AffinityOrAntiAffinityRule"
-				}
-			},
-			"_links": {
-				"type": "object",
-				"description": "Links to resources related to this resource.",
-				"required": [
-					"self"
-				],
-				"properties": {
-					"self": {
-						"description": "URI of this resource.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"nestedNsInstances": {
-						"description": "Links to resources related to this notification.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005_def.yaml#/definitions/Link"
-						}
-					},
-					"instantiate": {
-						"description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance in NOT_INSTANTIATED state).\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"terminate": {
-						"description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"update": {
-						"description": "Link to the \"update\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"scale": {
-						"description": "Link to the \"scale\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"heal": {
-						"description": "Link to the \"heal\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					}
-				}
-			}
-		}
-	}
+  "description": "This type represents a response for Query NS operation.  It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
+  "type": "object",
+  "required": [
+    "id",
+    "nsInstanceName",
+    "nsInstanceDescription",
+    "nsdId",
+    "nsdInfoId",
+    "nsState"
+  ],
+  "properties": {
+    "id": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "nsInstanceName": {
+      "description": "Human readable name of the NS instance.\n",
+      "type": "string"
+    },
+    "nsInstanceDescription": {
+      "description": "Human readable description of the NS instance.\n",
+      "type": "string"
+    },
+    "nsdId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "nsdInfoId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "flavourId": {
+      "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+      "type": "string"
+    },
+    "vnfInstance": {
+      "description": "Information on constituent VNF(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents a VNF instance.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "vnfdId",
+          "vnfProvider",
+          "vnfProductName",
+          "vnfSoftwareVersion",
+          "vnfdVersion",
+          "vnfPkgId",
+          "instantiationState"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfInstanceName": {
+            "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
+            "type": "string"
+          },
+          "vnfInstanceDescription": {
+            "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
+            "type": "string"
+          },
+          "vnfdId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfProvider": {
+            "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
+            "type": "string"
+          },
+          "vnfProductName": {
+            "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
+            "type": "string"
+          },
+          "vnfSoftwareVersion": {
+            "description": "A Version.\n",
+            "type": "string"
+          },
+          "vnfdVersion": {
+            "description": "A Version.\n",
+            "type": "string"
+          },
+          "vnfPkgId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnfConfigurableProperties": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          },
+          "vimId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "instantiationState": {
+            "description": "The instantiation state of the VNF.\n",
+            "type": "string",
+            "enum": [
+              "NOT_INSTANTIATED",
+              "INSTANTIATED"
+            ]
+          },
+          "instantiatedVnfInfo": {
+            "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
+            "type": "object",
+            "required": [
+              "flavourId",
+              "vnfState"
+            ],
+            "properties": {
+              "flavourId": {
+                "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                "type": "string"
+              },
+              "vnfState": {
+                "type": "string",
+                "enum": [
+                  "STARTED",
+                  "STOPPED"
+                ]
+              },
+              "scaleStatus": {
+                "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
+                "type": "array",
+                "items": {
+                  "required": [
+                    "aspectId",
+                    "scaleLevel"
+                  ],
+                  "type": "object",
+                  "properties": {
+                    "aspectId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "scaleLevel": {
+                      "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
+                      "type": "integer"
+                    }
+                  }
+                }
+              },
+              "extCpInfo": {
+                "description": "Information about the external CPs exposed by the VNF instance.\n",
+                "type": "array",
+                "minItems": 1,
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "cpdId"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "cpdId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "cpProtocolInfo": {
+                      "description": "Network protocol information for this CP.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+                        "type": "object",
+                        "required": [
+                          "layerProtocol",
+                          "ipOverEthernet"
+                        ],
+                        "properties": {
+                          "layerProtocol": {
+                            "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                            "type": "string",
+                            "enum": [
+                              "IP_OVER_ETHERNET"
+                            ]
+                          },
+                          "ipOverEthernet": {
+                            "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                            "type": "object",
+                            "required": [
+                              "macAddress",
+                              "ipAddresses",
+                              "subnetId",
+                              "addresses",
+                              "addressRange"
+                            ],
+                            "properties": {
+                              "macAddress": {
+                                "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                                "type": "string",
+                                "format": "MAC"
+                              },
+                              "ipAddresses": {
+                                "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                                "type": "array",
+                                "items": {
+                                  "type": "object",
+                                  "required": [
+                                    "type"
+                                  ],
+                                  "properties": {
+                                    "type": {
+                                      "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                      "type": "string",
+                                      "enum": [
+                                        "IPV4",
+                                        "IPV6"
+                                      ]
+                                    },
+                                    "addresses": {
+                                      "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                                      "type": "array",
+                                      "items": {
+                                        "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                        "type": "string",
+                                        "format": "IP"
+                                      }
+                                    },
+                                    "isDynamic": {
+                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                      "type": "boolean"
+                                    },
+                                    "addressRange": {
+                                      "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                                      "type": "object",
+                                      "required": [
+                                        "minAddress",
+                                        "maxAddress"
+                                      ],
+                                      "properties": {
+                                        "minAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        },
+                                        "maxAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        }
+                                      }
+                                    },
+                                    "subnetId": {
+                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                      "type": "string"
+                                    }
+                                  }
+                                }
+                              },
+                              "type": {
+                                "description": "The type of the IP addresses\n",
+                                "type": "string",
+                                "enum": [
+                                  "PV4",
+                                  "PV6"
+                                ]
+                              },
+                              "addresses": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "isDynamic": {
+                                "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                "type": "boolean"
+                              },
+                              "addressRange": {
+                                "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                                "type": "object",
+                                "required": [
+                                  "minAddress",
+                                  "maxAddress"
+                                ],
+                                "properties": {
+                                  "minAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  },
+                                  "maxAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  }
+                                }
+                              },
+                              "minAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "maxAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "subnetId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              }
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "extLinkPortId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "extVirtualLinkInfo": {
+                "description": "Information about the external VLs the VNF instance is connected to.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "resourceHandle"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceHandle": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "extLinkPorts": {
+                      "description": "Link ports of this VL.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n",
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "extManagedVirtualLinkInfo": {
+                "description": "External virtual links the VNF instance is connected to.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vnfVirtualLinkDescId"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfVirtualLinkDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "networkResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "vnfLinkPorts": {
+                      "description": "Link ports of this VL.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "monitoringParameters": {
+                "description": "Active monitoring parameters.\n",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "value",
+                    "timeStamp"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "value": {
+                      "description": "Value of the monitoring parameter known to the VNFM (e.g. obtained for auto-scaling purposes). The type of the \"value\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification.\n",
+                      "type": "object"
+                    },
+                    "timeStamp": {
+                      "description": "Represents the point in time when the measurement has been performed, as known to the VNFM. Should be formatted according to ETF RFC 3339.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "localizationLanguage": {
+                "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
+                "type": "string"
+              },
+              "vnfcResourceInfo": {
+                "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vduId",
+                    "computeResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "vduId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "computeResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "storageResourceIds": {
+                      "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
+                      "type": "array",
+                      "items": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfcCpInfo": {
+                      "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "cpdId"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "cpdId": {
+                            "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                            "type": "string"
+                          },
+                          "vnfExtCpId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "cpProtocolInfo": {
+                            "description": "Network protocol information for this CP.\n",
+                            "type": "array",
+                            "items": {
+                              "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+                              "type": "object",
+                              "required": [
+                                "layerProtocol",
+                                "ipOverEthernet"
+                              ],
+                              "properties": {
+                                "layerProtocol": {
+                                  "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                                  "type": "string",
+                                  "enum": [
+                                    "IP_OVER_ETHERNET"
+                                  ]
+                                },
+                                "ipOverEthernet": {
+                                  "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                                  "type": "object",
+                                  "required": [
+                                    "macAddress",
+                                    "ipAddresses",
+                                    "subnetId",
+                                    "addresses",
+                                    "addressRange"
+                                  ],
+                                  "properties": {
+                                    "macAddress": {
+                                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                                      "type": "string",
+                                      "format": "MAC"
+                                    },
+                                    "ipAddresses": {
+                                      "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                                      "type": "array",
+                                      "items": {
+                                        "type": "object",
+                                        "required": [
+                                          "type"
+                                        ],
+                                        "properties": {
+                                          "type": {
+                                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                            "type": "string",
+                                            "enum": [
+                                              "IPV4",
+                                              "IPV6"
+                                            ]
+                                          },
+                                          "addresses": {
+                                            "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                                            "type": "array",
+                                            "items": {
+                                              "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                              "type": "string",
+                                              "format": "IP"
+                                            }
+                                          },
+                                          "isDynamic": {
+                                            "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                            "type": "boolean"
+                                          },
+                                          "addressRange": {
+                                            "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                                            "type": "object",
+                                            "required": [
+                                              "minAddress",
+                                              "maxAddress"
+                                            ],
+                                            "properties": {
+                                              "minAddress": {
+                                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                                "type": "string",
+                                                "format": "IP"
+                                              },
+                                              "maxAddress": {
+                                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                                "type": "string",
+                                                "format": "IP"
+                                              }
+                                            }
+                                          },
+                                          "subnetId": {
+                                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                            "type": "string"
+                                          }
+                                        }
+                                      }
+                                    },
+                                    "type": {
+                                      "description": "The type of the IP addresses\n",
+                                      "type": "string",
+                                      "enum": [
+                                        "PV4",
+                                        "PV6"
+                                      ]
+                                    },
+                                    "addresses": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "isDynamic": {
+                                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                                      "type": "boolean"
+                                    },
+                                    "addressRange": {
+                                      "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                                      "type": "object",
+                                      "required": [
+                                        "minAddress",
+                                        "maxAddress"
+                                      ],
+                                      "properties": {
+                                        "minAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        },
+                                        "maxAddress": {
+                                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                          "type": "string",
+                                          "format": "IP"
+                                        }
+                                      }
+                                    },
+                                    "minAddress": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "maxAddress": {
+                                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                      "type": "string",
+                                      "format": "IP"
+                                    },
+                                    "subnetId": {
+                                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                      "type": "string"
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          },
+                          "vnfLinkPortId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "virtualLinkResourceInfo": {
+                "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "vnfVirtualLinkDescId",
+                    "networkResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfVirtualLinkDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "networkResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "vnfLinkPorts": {
+                      "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "id",
+                          "resourceHandle"
+                        ],
+                        "properties": {
+                          "id": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceHandle": {
+                            "required": [
+                              "vimConnectionId",
+                              "resourceId"
+                            ],
+                            "type": "object",
+                            "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                            "properties": {
+                              "vimConnectionId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceProviderId": {
+                                "description": "An identifier with the intention of being globally unique.\n",
+                                "type": "string"
+                              },
+                              "resourceId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              },
+                              "vimLevelResourceType": {
+                                "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                "type": "string"
+                              }
+                            }
+                          },
+                          "cpInstanceId": {
+                            "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "virtualStorageResourceInfo": {
+                "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
+                  "type": "object",
+                  "required": [
+                    "id",
+                    "virtualStorageDescId",
+                    "storageResource"
+                  ],
+                  "properties": {
+                    "id": {
+                      "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                      "type": "string"
+                    },
+                    "virtualStorageDescId": {
+                      "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
+                      "type": "string"
+                    },
+                    "storageResource": {
+                      "required": [
+                        "vimConnectionId",
+                        "resourceId"
+                      ],
+                      "type": "object",
+                      "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                      "properties": {
+                        "vimConnectionId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceProviderId": {
+                          "description": "An identifier with the intention of being globally unique.\n",
+                          "type": "string"
+                        },
+                        "resourceId": {
+                          "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                          "type": "string"
+                        },
+                        "vimLevelResourceType": {
+                          "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                          "type": "string"
+                        }
+                      }
+                    },
+                    "reservationId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "metadata": {
+                      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "metadata": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          },
+          "extensions": {
+            "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+            "type": "object"
+          }
+        }
+      }
+    },
+    "pnfInfo": {
+      "description": "Information on the PNF(s) that are part of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents the information about a PNF that is part of an NS instance.  It shall comply with the provisions defined in Table 6.5.3.13-1.\n",
+        "type": "object",
+        "required": [
+          "pnfId",
+          "pnfdId",
+          "pnfdInfoId",
+          "pnfProfileId"
+        ],
+        "properties": {
+          "pnfId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfName": {
+            "description": "Name of the PNF.\n",
+            "type": "string"
+          },
+          "pnfdId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfdInfoId": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "pnfProfileId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "cpInfo": {
+            "description": "This type represents the information about the external CP of the PNF.  It shall comply with the provisions defined in Table 6.5.3.17-1.\n",
+            "type": "object",
+            "required": [
+              "cpInstanceId",
+              "cpdId"
+            ],
+            "properties": {
+              "cpInstanceId": {
+                "description": "Identifier of the CP in the scope of the PNF.\n",
+                "type": "string"
+              },
+              "cpdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "cpProtocolData": {
+                "description": "Parameters for configuring the network protocols on the CP.\n",
+                "type": "array",
+                "items": {
+                  "description": "This type represents network protocol data. \n",
+                  "type": "object",
+                  "required": [
+                    "layerProtocol"
+                  ],
+                  "properties": {
+                    "layerProtocol": {
+                      "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
+                      "type": "string",
+                      "enum": [
+                        "IP_OVER_ETHERNET"
+                      ]
+                    },
+                    "ipOverEthernet": {
+                      "description": "This type represents network address data for IP over Ethernet.\n",
+                      "type": "object",
+                      "properties": {
+                        "macAddress": {
+                          "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                          "type": "string",
+                          "format": "MAC"
+                        },
+                        "ipAddresses": {
+                          "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
+                          "type": "array",
+                          "items": {
+                            "type": "object",
+                            "required": [
+                              "type"
+                            ],
+                            "properties": {
+                              "type": {
+                                "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                                "type": "string",
+                                "enum": [
+                                  "IPV4",
+                                  "IPV6"
+                                ]
+                              },
+                              "fixedAddresses": {
+                                "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
+                                "type": "array",
+                                "items": {
+                                  "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                  "type": "string",
+                                  "format": "IP"
+                                }
+                              },
+                              "numDynamicAddresses": {
+                                "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
+                                "type": "integer"
+                              },
+                              "addressRange": {
+                                "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
+                                "type": "object",
+                                "required": [
+                                  "minAddress",
+                                  "maxAddress"
+                                ],
+                                "properties": {
+                                  "minAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  },
+                                  "maxAddress": {
+                                    "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                    "type": "string",
+                                    "format": "IP"
+                                  }
+                                }
+                              },
+                              "subnetId": {
+                                "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                "type": "string"
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "virtualLinkInfo": {
+      "description": "Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
+      "type": "array",
+      "items": {
+        "description": "This type specifies the information about an NS VL instance.  It shall comply with the provisions defined in Table 6.5.3.53-1\n",
+        "type": "object",
+        "required": [
+          "id",
+          "nsVirtualLinkDescId"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "nsVirtualLinkDescId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "resourceHandle": {
+            "description": "Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n",
+            "type": "array",
+            "items": {
+              "required": [
+                "vimConnectionId",
+                "resourceId"
+              ],
+              "type": "object",
+              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+              "properties": {
+                "vimConnectionId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceProviderId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceId": {
+                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                  "type": "string"
+                },
+                "vimLevelResourceType": {
+                  "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "linkPort": {
+            "description": "Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n",
+            "type": "array",
+            "items": {
+              "description": "This type represents information about a link port of a VL instance.  It shall comply with the provisions defined in Table 6.5.3.55-1.\n",
+              "type": "object",
+              "required": [
+                "id",
+                "resourceHandle"
+              ],
+              "properties": {
+                "id": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "resourceHandle": {
+                  "required": [
+                    "vimConnectionId",
+                    "resourceId"
+                  ],
+                  "type": "object",
+                  "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                  "properties": {
+                    "vimConnectionId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceProviderId": {
+                      "description": "An identifier with the intention of being globally unique.\n",
+                      "type": "string"
+                    },
+                    "resourceId": {
+                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                      "type": "string"
+                    },
+                    "vimLevelResourceType": {
+                      "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                      "type": "string"
+                    }
+                  }
+                },
+                "nsCpHandle": {
+                  "description": "Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n",
+                  "type": "array",
+                  "items": {
+                    "description": "This type represents an identifier of the CP or SAP instance.  It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
+                    "type": "object",
+                    "properties": {
+                      "vnfInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfExtCpInstanceId": {
+                        "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                        "type": "string"
+                      },
+                      "pnfInfoId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "pnfExtCpInstanceId": {
+                        "description": "Identifier of the CP in the scope of the PNF.\n",
+                        "type": "string"
+                      },
+                      "nsInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "nsSapInstanceId": {
+                        "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                        "type": "string"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "vnffgInfo": {
+      "description": "Information on the VNFFG(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "Information on the VNFFG(s) of the NS instance.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "vnffgdId",
+          "vnfInstanceId",
+          "pnfInfoId"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier with the intention of being globally unique.\n",
+            "type": "string"
+          },
+          "vnffgdId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "vnfInstanceId": {
+            "description": "Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "pnfdInfoId": {
+            "description": "Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "nsVirtualLinkInfoId": {
+            "description": "Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+              "type": "string"
+            }
+          },
+          "nsCpHandle": {
+            "description": "Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n",
+            "type": "array",
+            "items": {
+              "description": "This type represents an identifier of the CP or SAP instance.  It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
+              "type": "object",
+              "properties": {
+                "vnfInstanceId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "vnfExtCpInstanceId": {
+                  "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                  "type": "string"
+                },
+                "pnfInfoId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "pnfExtCpInstanceId": {
+                  "description": "Identifier of the CP in the scope of the PNF.\n",
+                  "type": "string"
+                },
+                "nsInstanceId": {
+                  "description": "An identifier with the intention of being globally unique.\n",
+                  "type": "string"
+                },
+                "nsSapInstanceId": {
+                  "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                  "type": "string"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "sapInfo": {
+      "description": "Information on the SAP(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n",
+        "type": "object",
+        "required": [
+          "id",
+          "sapdId",
+          "sapName",
+          "sapProtocolInfo"
+        ],
+        "properties": {
+          "id": {
+            "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "sapdId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "sapName": {
+            "description": "Human readable name for the SAP instance.\n",
+            "type": "string"
+          },
+          "description": {
+            "description": "Human readable description for the SAP instance.\n",
+            "type": "string"
+          },
+          "sapProtocolInfo": {
+            "description": "Network protocol information for this SAP.\n",
+            "type": "array",
+            "items": {
+              "description": "This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
+              "type": "object",
+              "required": [
+                "layerProtocol",
+                "ipOverEthernet"
+              ],
+              "properties": {
+                "layerProtocol": {
+                  "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
+                  "type": "string",
+                  "enum": [
+                    "IP_OVER_ETHERNET"
+                  ]
+                },
+                "ipOverEthernet": {
+                  "description": "This type represents information about a network address that has been assigned.  It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
+                  "type": "object",
+                  "required": [
+                    "macAddress",
+                    "ipAddresses",
+                    "subnetId",
+                    "addresses",
+                    "addressRange"
+                  ],
+                  "properties": {
+                    "macAddress": {
+                      "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
+                      "type": "string",
+                      "format": "MAC"
+                    },
+                    "ipAddresses": {
+                      "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "type"
+                        ],
+                        "properties": {
+                          "type": {
+                            "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
+                            "type": "string",
+                            "enum": [
+                              "IPV4",
+                              "IPV6"
+                            ]
+                          },
+                          "addresses": {
+                            "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
+                            "type": "array",
+                            "items": {
+                              "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                              "type": "string",
+                              "format": "IP"
+                            }
+                          },
+                          "isDynamic": {
+                            "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                            "type": "boolean"
+                          },
+                          "addressRange": {
+                            "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
+                            "type": "object",
+                            "required": [
+                              "minAddress",
+                              "maxAddress"
+                            ],
+                            "properties": {
+                              "minAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              },
+                              "maxAddress": {
+                                "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                                "type": "string",
+                                "format": "IP"
+                              }
+                            }
+                          },
+                          "subnetId": {
+                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                            "type": "string"
+                          }
+                        }
+                      }
+                    },
+                    "type": {
+                      "description": "The type of the IP addresses\n",
+                      "type": "string",
+                      "enum": [
+                        "PV4",
+                        "PV6"
+                      ]
+                    },
+                    "addresses": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "isDynamic": {
+                      "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
+                      "type": "boolean"
+                    },
+                    "addressRange": {
+                      "description": "An IP address range used, e.g. in case of egress connections. See note.\n",
+                      "type": "object",
+                      "required": [
+                        "minAddress",
+                        "maxAddress"
+                      ],
+                      "properties": {
+                        "minAddress": {
+                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                          "type": "string",
+                          "format": "IP"
+                        },
+                        "maxAddress": {
+                          "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                          "type": "string",
+                          "format": "IP"
+                        }
+                      }
+                    },
+                    "minAddress": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "maxAddress": {
+                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
+                      "type": "string",
+                      "format": "IP"
+                    },
+                    "subnetId": {
+                      "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "nestedNsInstanceId": {
+      "description": "Identifier of the nested NS(s) of the NS instance.\n",
+      "type": "array",
+      "items": {
+        "description": "An identifier with the intention of being globally unique.\n",
+        "type": "string"
+      }
+    },
+    "nsState": {
+      "description": "The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
+      "type": "string",
+      "enum": [
+        "NOT_INSTANTIATED",
+        "INSTANTIATED"
+      ]
+    },
+    "nsScaleStatus": {
+      "description": "Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
+      "type": "array",
+      "items": {
+        "description": "This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
+        "type": "object",
+        "required": [
+          "nsScalingAspectId",
+          "nsScaleLevelId"
+        ],
+        "properties": {
+          "nsScalingAspectId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          },
+          "nsScaleLevelId": {
+            "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+            "type": "string"
+          }
+        }
+      }
+    },
+    "additionalAffinityOrAntiAffinityRule": {
+      "description": "Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
+      "type": "array",
+      "items": {
+        "description": "This type describes the additional affinity or anti-affinity rule  applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances  to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
+        "type": "object",
+        "required": [
+          "affinityOrAntiAffiinty",
+          "scope"
+        ],
+        "properties": {
+          "vnfdId": {
+            "description": "Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "vnfProfileId": {
+            "description": "Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+              "type": "string"
+            }
+          },
+          "vnfInstanceId": {
+            "description": "Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
+            "type": "array",
+            "items": {
+              "description": "An identifier with the intention of being globally unique.\n",
+              "type": "string"
+            }
+          },
+          "affinityOrAntiAffiinty": {
+            "description": "The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
+            "type": "string",
+            "enum": [
+              "AFFINITY",
+              "ANTI_AFFINITY"
+            ]
+          },
+          "scope": {
+            "description": "Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
+            "type": "string",
+            "enum": [
+              "NFVI_POP",
+              "ZONE",
+              "ZONE_GROUP",
+              "NFVI_NODE"
+            ]
+          }
+        }
+      }
+    },
+    "_links": {
+      "type": "object",
+      "description": "Links to resources related to this resource.",
+      "required": [
+        "self"
+      ],
+      "properties": {
+        "self": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "nestedNsInstances": {
+          "description": "Links to resources related to this notification.\n",
+          "type": "array",
+          "items": {
+            "description": "This type represents a link to a resource.\n",
+            "type": "object",
+            "required": [
+              "href"
+            ],
+            "properties": {
+              "href": {
+                "description": "URI of the referenced resource.\n",
+                "type": "string",
+                "format": "url"
+              }
+            }
+          }
+        },
+        "instantiate": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "terminate": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "update": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "scale": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "heal": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        }
+      }
+    }
+  }
+}
 }	
\ No newline at end of file
diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json
index 195db319ef65cd32983ef3a27560a340a361c4a1..e4a4ec5895a979a9fd9e49ea893a5106a6204ccd 100644
--- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json
+++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json
@@ -1,157 +1,655 @@
 {
-	"description": "This type represents a request a NS lifecycle operation occurrence.  It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
-	"type": "object",
-	"required": [
-		"id",
-		"operationState",
-		"stateEnteredTime",
-		"nsInstanceId",
-		"lcmOperationType",
-		"startTime",
-		"isAutomaticInvocation",
-		"operationParams",
-		"isCancelPending",
-		"_links"
-	],
-	"properties": {
-		"id": {
-			"description": "Identifier of this NS lifecycle operation occurrence.\n",
-			"$ref": "SOL005_def.yaml#/definitions/Identifier"
-		},
-		"operationState": {
-			"description": "The state of the NS LCM operation.\n",
-			"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationStateType"
-		},
-		"stateEnteredTime": {
-			"description": "Date-time when the current state was entered.\n",
-			"type": "string",
-			"format": "date-time"
-		},
-		"nsInstanceId": {
-			"description": "Identifier of the NS instance to which the operation applies.\n",
-			"$ref": "SOL005_def.yaml#/definitions/Identifier"
-		},
-		"lcmOperationType": {
-			"description": "Type of the actual LCM operation represented by this lcm operation occurrence.\n",
-			"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpType"
-		},
-		"startTime": {
-			"description": "Date-time of the start of the operation.\n",
-			"type": "string",
-			"format": "date-time"
-		},
-		"isAutomaticInvocation": {
-			"description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
-			"type": "boolean"
-		},
-		"operationParams": {
-			"description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n",
-			"type": "string",
-			"enum": [
-				"INSTANTIATE",
-				"SCALE",
-				"UPDATE",
-				"HEAL",
-				"TERMINATE"
-			]
-		},
-		"isCancelPending": {
-			"description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
-			"type": "boolean"
-		},
-		"cancelMode": {
-			"description": "The mode of an ongoing cancellation. Shall be present when isCancelPending=true, and shall be absent otherwise.\n",
-			"$ref": "#/definitions/CancelModeType"
-		},
-		"error": {
-			"description": "If \"operationState\" is \"FAILED_TEMP\" or \"FAILED\" or \"operationState\" is \"PROCESSING\" or \"ROLLING_BACK\" and previous value of \"operationState\" was \"FAILED_TEMP\", this attribute shall be present and contain error information, unless it has been requested to be excluded via an attribute selector.\n",
-			"$ref": "#/definitions/ProblemDetails"
-		},
-		"resourceChanges": {
-			"description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
-			"type": "object",
-			"properties": {
-				"affectedVnfs": {
-					"description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf"
-					}
-				},
-				"affectedPnfs": {
-					"description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf"
-					}
-				},
-				"affectedVls": {
-					"description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVl"
-					}
-				},
-				"affectedVnffgs": {
-					"description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification               represents the result of a lifecycle operation. See note\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg"
-					}
-				},
-				"affectedNss": {
-					"description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs"
-					}
-				},
-				"affectedSaps": {
-					"description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
-					"type": "array",
-					"items": {
-						"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap"
-					}
-				}
-			}
-		},
-		"_links": {
-			"description": "Links to resources related to this resource.\n",
-			"type": "object",
-			"required": [
-				"self",
-				"nsInstance"
-			],
-			"properties": {
-				"self": {
-					"description": "URI of this resource.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"nsInstance": {
-					"description": "Link to the NS instance that the operation applies to.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"cancel": {
-					"description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"retry": {
-					"description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence,  if cancelling is currently allowed.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"rollback": {
-					"description": "Link to the task resource that represents the \"rollback\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"continue": {
-					"description": "Link to the task resource that represents the \"continue\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				},
-				"fail": {
-					"description": "Link to the task resource that represents the \"fail\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-					"$ref": "SOL005_def.yaml#/definitions/Link"
-				}
-			}
-		}
-	}
+  "description": "This type represents a request a NS lifecycle operation occurrence.  It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
+  "type": "object",
+  "required": [
+    "id",
+    "operationState",
+    "statusEnteredTime",
+    "nsInstanceId",
+    "lcmOperationType",
+    "startTime",
+    "isAutomaticInvocation",
+    "operationParams",
+    "isCancelPending",
+    "_links"
+  ],
+  "properties": {
+    "id": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "operationState": {
+      "description": "The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
+      "type": "string",
+      "enum": [
+        "PROCESSING",
+        "COMPLETED",
+        "FAILED_TEMP",
+        "FAILED",
+        "ROLLING_BACK",
+        "ROLLED_BACK"
+      ]
+    },
+    "statusEnteredTime": {
+      "description": "Date-time when the current state was entered.\n",
+      "type": "string",
+      "format": "date-time"
+    },
+    "nsInstanceId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "lcmOperationType": {
+      "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
+      "type": "string",
+      "enum": [
+        "INSTANTIATE",
+        "SCALE",
+        "UPDATE",
+        "TERMINATE",
+        "HEAL"
+      ]
+    },
+    "startTime": {
+      "description": "Date-time of the start of the operation.\n",
+      "type": "string",
+      "format": "date-time"
+    },
+    "isAutomaticInvocation": {
+      "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
+      "type": "boolean"
+    },
+    "operationParams": {
+      "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n",
+      "type": "string",
+      "enum": [
+        "INSTANTIATE",
+        "SCALE",
+        "UPDATE",
+        "HEAL",
+        "TERMINATE"
+      ]
+    },
+    "isCancelPending": {
+      "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
+      "type": "boolean"
+    },
+    "cancelMode": {
+      "description": "Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
+      "type": "string",
+      "enum": [
+        "GRACEFUL",
+        "FORCEFUL"
+      ]
+    },
+    "error": {
+      "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
+      "type": "object",
+      "required": [
+        "status",
+        "detail"
+      ],
+      "properties": {
+        "type": {
+          "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
+          "type": "string",
+          "format": "URI"
+        },
+        "title": {
+          "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
+          "type": "string"
+        },
+        "status": {
+          "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
+          "type": "integer"
+        },
+        "detail": {
+          "description": "A human-readable explanation specific to this occurrence of the problem.\n",
+          "type": "string"
+        },
+        "instance": {
+          "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
+          "type": "string",
+          "format": "URI"
+        }
+      }
+    },
+    "resourceChanges": {
+      "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
+      "type": "object",
+      "properties": {
+        "affectedVnfs": {
+          "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VNFs.  It shall comply with the provisions in Table 6.5.3.2-1.\n",
+            "type": "object",
+            "required": [
+              "vnfInstanceId",
+              "vnfdId",
+              "vnfProfileId"
+            ],
+            "properties": {
+              "vnfInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "vnfdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "vnfProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vnfName": {
+                "description": "Name of the VNF Instance.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "INSTANTIATE",
+                  "TERMINATE",
+                  "SCALE",
+                  "CHANGE_FLAVOUR",
+                  "HEAL",
+                  "OPERATE",
+                  "MODIFY_INFORMATION",
+                  "CHANGE_EXTERNAL_VNF_CONNECTIVITY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              },
+              "changedInfo": {
+                "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present,  either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n",
+                "type": "object",
+                "required": [
+                  "self"
+                ],
+                "properties": {
+                  "changedVnfInfo": {
+                    "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
+                    "type": "object",
+                    "required": [
+                      "vnfInstanceId"
+                    ],
+                    "properties": {
+                      "vnfInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfInstanceName": {
+                        "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
+                        "type": "string"
+                      },
+                      "vnfInstanceDescription": {
+                        "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
+                        "type": "string"
+                      },
+                      "vnfPkgId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfConfigurableProperties": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      },
+                      "Metadata": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      },
+                      "Extensions": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      }
+                    }
+                  },
+                  "changedExtConnectivity": {
+                    "type": "object",
+                    "required": [
+                      "id",
+                      "resourceHandle"
+                    ],
+                    "properties": {
+                      "id": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "resourceHandle": {
+                        "required": [
+                          "vimConnectionId",
+                          "resourceId"
+                        ],
+                        "type": "object",
+                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                        "properties": {
+                          "vimConnectionId": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceProviderId": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceId": {
+                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                            "type": "string"
+                          },
+                          "vimLevelResourceType": {
+                            "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                            "type": "string"
+                          }
+                        }
+                      },
+                      "extLinkPorts": {
+                        "description": "Link ports of this VL.\n",
+                        "type": "array",
+                        "items": {
+                          "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n",
+                          "type": "object",
+                          "required": [
+                            "id",
+                            "resourceHandle"
+                          ],
+                          "properties": {
+                            "id": {
+                              "description": "An identifier with the intention of being globally unique.\n",
+                              "type": "string"
+                            },
+                            "resourceHandle": {
+                              "required": [
+                                "vimConnectionId",
+                                "resourceId"
+                              ],
+                              "type": "object",
+                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                              "properties": {
+                                "vimConnectionId": {
+                                  "description": "An identifier with the intention of being globally unique.\n",
+                                  "type": "string"
+                                },
+                                "resourceProviderId": {
+                                  "description": "An identifier with the intention of being globally unique.\n",
+                                  "type": "string"
+                                },
+                                "resourceId": {
+                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                  "type": "string"
+                                },
+                                "vimLevelResourceType": {
+                                  "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                  "type": "string"
+                                }
+                              }
+                            },
+                            "cpInstanceId": {
+                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                              "type": "string"
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "affectedPnfs": {
+          "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified PNFs.  It shall comply with the provisions in Table 6.5.3.3-1.\n",
+            "type": "object",
+            "required": [
+              "pnfId",
+              "pnfdId",
+              "pnfProfileId",
+              "cpInstanceId"
+            ],
+            "properties": {
+              "pnfId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "pnfdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "pnfProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "pnfName": {
+                "description": "Name of the PNF.\n",
+                "type": "string"
+              },
+              "cpInstanceId": {
+                "description": "Identifier of the CP in the scope of the PNF.\n",
+                "type": "array",
+                "items": {
+                  "description": "Identifier of the CP in the scope of the PNF.\n",
+                  "type": "string"
+                }
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedVls": {
+          "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VLs.  It shall comply with the provisions in Table 6.5.3.4-1.\n",
+            "type": "object",
+            "required": [
+              "nsVirtualLinkInstanceId",
+              "nsVirtualLinkDescId",
+              "vlProfileId"
+            ],
+            "properties": {
+              "nsVirtualLinkInstanceId": {
+                "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "nsVirtualLinkDescId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vlProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY - ADD_LINK_PORT - REMOVE_LINK_PORT\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "DELETE",
+                  "MODIFY",
+                  "ADD_LINK_PORT",
+                  "REMOVE_LINK_PORT"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedVnffgs": {
+          "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification               represents the result of a lifecycle operation. See note\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VNFFG instances.  It shall comply with the provisions in Table 6.5.3.5-1.\n",
+            "type": "object",
+            "required": [
+              "vnffgInstanceId",
+              "vnffgdId"
+            ],
+            "properties": {
+              "vnffgInstanceId": {
+                "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vnffgdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "DELETE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedNss": {
+          "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified nested NSs.  It shall comply with the provisions in Table 6.5.3.6-1.\n",
+            "type": "object",
+            "required": [
+              "nsInstanceId",
+              "nsdId"
+            ],
+            "properties": {
+              "nsInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "nsdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "INSTANTIATE",
+                  "SCALE",
+                  "UPDATE",
+                  "HEAL",
+                  "TERMINATE"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED           \n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED",
+                  "PARTIALLY_COMPLETED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedSaps": {
+          "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified SAP of a NS.  It shall comply with the provisions in Table 6.5.3.7-1.\n",
+            "type": "object",
+            "required": [
+              "sapInstanceId",
+              "sapdId"
+            ],
+            "properties": {
+              "sapInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "sapdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "sapName": {
+                "description": "Human readable name for the SAP.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        }
+      }
+    },
+    "_links": {
+      "description": "Links to resources related to this resource.\n",
+      "type": "object",
+      "required": [
+        "self",
+        "nsInstance"
+      ],
+      "properties": {
+        "self": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "nsInstance": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "cancel": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "retry": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "rollback": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "continue": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "fail": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        }
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json
index ad3e5afb6e951107d5d8ad8a69d8a4ba7efa7a2f..bfb8766c0c2399b267e4ce3923ab06819d3ce61f 100644
--- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json
+++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json
@@ -1,160 +1,658 @@
 {
   "type": "array",
   "items":{
-		"description": "This type represents a request a NS lifecycle operation occurrence.  It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
-		"type": "object",
-		"required": [
-			"id",
-			"operationState",
-			"stateEnteredTime",
-			"nsInstanceId",
-			"lcmOperationType",
-			"startTime",
-			"isAutomaticInvocation",
-			"operationParams",
-			"isCancelPending",
-			"_links"
-		],
-		"properties": {
-			"id": {
-				"description": "Identifier of this NS lifecycle operation occurrence.\n",
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			},
-			"operationState": {
-				"description": "The state of the NS LCM operation.\n",
-				"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationStateType"
-			},
-			"stateEnteredTime": {
-				"description": "Date-time when the current state was entered.\n",
-				"type": "string",
-				"format": "date-time"
-			},
-			"nsInstanceId": {
-				"description": "Identifier of the NS instance to which the operation applies.\n",
-				"$ref": "SOL005_def.yaml#/definitions/Identifier"
-			},
-			"lcmOperationType": {
-				"description": "Type of the actual LCM operation represented by this lcm operation occurrence.\n",
-				"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpType"
-			},
-			"startTime": {
-				"description": "Date-time of the start of the operation.\n",
-				"type": "string",
-				"format": "date-time"
-			},
-			"isAutomaticInvocation": {
-				"description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
-				"type": "boolean"
-			},
-			"operationParams": {
-				"description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n",
-				"type": "string",
-				"enum": [
-					"INSTANTIATE",
-					"SCALE",
-					"UPDATE",
-					"HEAL",
-					"TERMINATE"
-				]
-			},
-			"isCancelPending": {
-				"description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
-				"type": "boolean"
-			},
-			"cancelMode": {
-				"description": "The mode of an ongoing cancellation. Shall be present when isCancelPending=true, and shall be absent otherwise.\n",
-				"$ref": "#/definitions/CancelModeType"
-			},
-			"error": {
-				"description": "If \"operationState\" is \"FAILED_TEMP\" or \"FAILED\" or \"operationState\" is \"PROCESSING\" or \"ROLLING_BACK\" and previous value of \"operationState\" was \"FAILED_TEMP\", this attribute shall be present and contain error information, unless it has been requested to be excluded via an attribute selector.\n",
-				"$ref": "#/definitions/ProblemDetails"
-			},
-			"resourceChanges": {
-				"description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
-				"type": "object",
-				"properties": {
-					"affectedVnfs": {
-						"description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf"
-						}
-					},
-					"affectedPnfs": {
-						"description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf"
-						}
-					},
-					"affectedVls": {
-						"description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVl"
-						}
-					},
-					"affectedVnffgs": {
-						"description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification               represents the result of a lifecycle operation. See note\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg"
-						}
-					},
-					"affectedNss": {
-						"description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs"
-						}
-					},
-					"affectedSaps": {
-						"description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
-						"type": "array",
-						"items": {
-							"$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap"
-						}
-					}
-				}
-			},
-			"_links": {
-				"description": "Links to resources related to this resource.\n",
-				"type": "object",
-				"required": [
-					"self",
-					"nsInstance"
-				],
-				"properties": {
-					"self": {
-						"description": "URI of this resource.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"nsInstance": {
-						"description": "Link to the NS instance that the operation applies to.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"cancel": {
-						"description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"retry": {
-						"description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence,  if cancelling is currently allowed.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"rollback": {
-						"description": "Link to the task resource that represents the \"rollback\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"continue": {
-						"description": "Link to the task resource that represents the \"continue\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					},
-					"fail": {
-						"description": "Link to the task resource that represents the \"fail\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n",
-						"$ref": "SOL005_def.yaml#/definitions/Link"
-					}
-				}
-			}
-		}
-	}
+  "description": "This type represents a request a NS lifecycle operation occurrence.  It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
+  "type": "object",
+  "required": [
+    "id",
+    "operationState",
+    "statusEnteredTime",
+    "nsInstanceId",
+    "lcmOperationType",
+    "startTime",
+    "isAutomaticInvocation",
+    "operationParams",
+    "isCancelPending",
+    "_links"
+  ],
+  "properties": {
+    "id": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "operationState": {
+      "description": "The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
+      "type": "string",
+      "enum": [
+        "PROCESSING",
+        "COMPLETED",
+        "FAILED_TEMP",
+        "FAILED",
+        "ROLLING_BACK",
+        "ROLLED_BACK"
+      ]
+    },
+    "statusEnteredTime": {
+      "description": "Date-time when the current state was entered.\n",
+      "type": "string",
+      "format": "date-time"
+    },
+    "nsInstanceId": {
+      "description": "An identifier with the intention of being globally unique.\n",
+      "type": "string"
+    },
+    "lcmOperationType": {
+      "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
+      "type": "string",
+      "enum": [
+        "INSTANTIATE",
+        "SCALE",
+        "UPDATE",
+        "TERMINATE",
+        "HEAL"
+      ]
+    },
+    "startTime": {
+      "description": "Date-time of the start of the operation.\n",
+      "type": "string",
+      "format": "date-time"
+    },
+    "isAutomaticInvocation": {
+      "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
+      "type": "boolean"
+    },
+    "operationParams": {
+      "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n",
+      "type": "string",
+      "enum": [
+        "INSTANTIATE",
+        "SCALE",
+        "UPDATE",
+        "HEAL",
+        "TERMINATE"
+      ]
+    },
+    "isCancelPending": {
+      "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
+      "type": "boolean"
+    },
+    "cancelMode": {
+      "description": "Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
+      "type": "string",
+      "enum": [
+        "GRACEFUL",
+        "FORCEFUL"
+      ]
+    },
+    "error": {
+      "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
+      "type": "object",
+      "required": [
+        "status",
+        "detail"
+      ],
+      "properties": {
+        "type": {
+          "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
+          "type": "string",
+          "format": "URI"
+        },
+        "title": {
+          "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
+          "type": "string"
+        },
+        "status": {
+          "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
+          "type": "integer"
+        },
+        "detail": {
+          "description": "A human-readable explanation specific to this occurrence of the problem.\n",
+          "type": "string"
+        },
+        "instance": {
+          "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
+          "type": "string",
+          "format": "URI"
+        }
+      }
+    },
+    "resourceChanges": {
+      "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
+      "type": "object",
+      "properties": {
+        "affectedVnfs": {
+          "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VNFs.  It shall comply with the provisions in Table 6.5.3.2-1.\n",
+            "type": "object",
+            "required": [
+              "vnfInstanceId",
+              "vnfdId",
+              "vnfProfileId"
+            ],
+            "properties": {
+              "vnfInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "vnfdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "vnfProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vnfName": {
+                "description": "Name of the VNF Instance.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "INSTANTIATE",
+                  "TERMINATE",
+                  "SCALE",
+                  "CHANGE_FLAVOUR",
+                  "HEAL",
+                  "OPERATE",
+                  "MODIFY_INFORMATION",
+                  "CHANGE_EXTERNAL_VNF_CONNECTIVITY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              },
+              "changedInfo": {
+                "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present,  either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n",
+                "type": "object",
+                "required": [
+                  "self"
+                ],
+                "properties": {
+                  "changedVnfInfo": {
+                    "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
+                    "type": "object",
+                    "required": [
+                      "vnfInstanceId"
+                    ],
+                    "properties": {
+                      "vnfInstanceId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfInstanceName": {
+                        "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
+                        "type": "string"
+                      },
+                      "vnfInstanceDescription": {
+                        "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
+                        "type": "string"
+                      },
+                      "vnfPkgId": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "vnfConfigurableProperties": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      },
+                      "Metadata": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      },
+                      "Extensions": {
+                        "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                        "type": "object"
+                      }
+                    }
+                  },
+                  "changedExtConnectivity": {
+                    "type": "object",
+                    "required": [
+                      "id",
+                      "resourceHandle"
+                    ],
+                    "properties": {
+                      "id": {
+                        "description": "An identifier with the intention of being globally unique.\n",
+                        "type": "string"
+                      },
+                      "resourceHandle": {
+                        "required": [
+                          "vimConnectionId",
+                          "resourceId"
+                        ],
+                        "type": "object",
+                        "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                        "properties": {
+                          "vimConnectionId": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceProviderId": {
+                            "description": "An identifier with the intention of being globally unique.\n",
+                            "type": "string"
+                          },
+                          "resourceId": {
+                            "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                            "type": "string"
+                          },
+                          "vimLevelResourceType": {
+                            "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                            "type": "string"
+                          }
+                        }
+                      },
+                      "extLinkPorts": {
+                        "description": "Link ports of this VL.\n",
+                        "type": "array",
+                        "items": {
+                          "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n",
+                          "type": "object",
+                          "required": [
+                            "id",
+                            "resourceHandle"
+                          ],
+                          "properties": {
+                            "id": {
+                              "description": "An identifier with the intention of being globally unique.\n",
+                              "type": "string"
+                            },
+                            "resourceHandle": {
+                              "required": [
+                                "vimConnectionId",
+                                "resourceId"
+                              ],
+                              "type": "object",
+                              "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
+                              "properties": {
+                                "vimConnectionId": {
+                                  "description": "An identifier with the intention of being globally unique.\n",
+                                  "type": "string"
+                                },
+                                "resourceProviderId": {
+                                  "description": "An identifier with the intention of being globally unique.\n",
+                                  "type": "string"
+                                },
+                                "resourceId": {
+                                  "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
+                                  "type": "string"
+                                },
+                                "vimLevelResourceType": {
+                                  "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
+                                  "type": "string"
+                                }
+                              }
+                            },
+                            "cpInstanceId": {
+                              "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
+                              "type": "string"
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "affectedPnfs": {
+          "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified PNFs.  It shall comply with the provisions in Table 6.5.3.3-1.\n",
+            "type": "object",
+            "required": [
+              "pnfId",
+              "pnfdId",
+              "pnfProfileId",
+              "cpInstanceId"
+            ],
+            "properties": {
+              "pnfId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "pnfdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "pnfProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "pnfName": {
+                "description": "Name of the PNF.\n",
+                "type": "string"
+              },
+              "cpInstanceId": {
+                "description": "Identifier of the CP in the scope of the PNF.\n",
+                "type": "array",
+                "items": {
+                  "description": "Identifier of the CP in the scope of the PNF.\n",
+                  "type": "string"
+                }
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedVls": {
+          "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VLs.  It shall comply with the provisions in Table 6.5.3.4-1.\n",
+            "type": "object",
+            "required": [
+              "nsVirtualLinkInstanceId",
+              "nsVirtualLinkDescId",
+              "vlProfileId"
+            ],
+            "properties": {
+              "nsVirtualLinkInstanceId": {
+                "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "nsVirtualLinkDescId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vlProfileId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY - ADD_LINK_PORT - REMOVE_LINK_PORT\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "DELETE",
+                  "MODIFY",
+                  "ADD_LINK_PORT",
+                  "REMOVE_LINK_PORT"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedVnffgs": {
+          "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification               represents the result of a lifecycle operation. See note\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified VNFFG instances.  It shall comply with the provisions in Table 6.5.3.5-1.\n",
+            "type": "object",
+            "required": [
+              "vnffgInstanceId",
+              "vnffgdId"
+            ],
+            "properties": {
+              "vnffgInstanceId": {
+                "description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "vnffgdId": {
+                "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "DELETE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedNss": {
+          "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified nested NSs.  It shall comply with the provisions in Table 6.5.3.6-1.\n",
+            "type": "object",
+            "required": [
+              "nsInstanceId",
+              "nsdId"
+            ],
+            "properties": {
+              "nsInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "nsdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "INSTANTIATE",
+                  "SCALE",
+                  "UPDATE",
+                  "HEAL",
+                  "TERMINATE"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED           \n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED",
+                  "PARTIALLY_COMPLETED"
+                ]
+              }
+            }
+          }
+        },
+        "affectedSaps": {
+          "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
+          "type": "array",
+          "items": {
+            "description": "This type provides information about added, deleted and modified SAP of a NS.  It shall comply with the provisions in Table 6.5.3.7-1.\n",
+            "type": "object",
+            "required": [
+              "sapInstanceId",
+              "sapdId"
+            ],
+            "properties": {
+              "sapInstanceId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "sapdId": {
+                "description": "An identifier with the intention of being globally unique.\n",
+                "type": "string"
+              },
+              "sapName": {
+                "description": "Human readable name for the SAP.\n",
+                "type": "string"
+              },
+              "changeType": {
+                "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n",
+                "type": "string",
+                "enum": [
+                  "ADD",
+                  "REMOVE",
+                  "MODIFY"
+                ]
+              },
+              "changeResult": {
+                "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
+                "type": "string",
+                "enum": [
+                  "COMPLETED",
+                  "ROLLED_BACK",
+                  "FAILED"
+                ]
+              }
+            }
+          }
+        }
+      }
+    },
+    "_links": {
+      "description": "Links to resources related to this resource.\n",
+      "type": "object",
+      "required": [
+        "self",
+        "nsInstance"
+      ],
+      "properties": {
+        "self": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "nsInstance": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "cancel": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "retry": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "rollback": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "continue": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        },
+        "fail": {
+          "description": "This type represents a link to a resource.\n",
+          "type": "object",
+          "required": [
+            "href"
+          ],
+          "properties": {
+            "href": {
+              "description": "URI of the referenced resource.\n",
+              "type": "string",
+              "format": "url"
+            }
+          }
+        }
+      }
+    }
+  }
+}
 }
\ No newline at end of file
diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot
index 0e0854407bf8749f6f6c74509ce5ecee8b3f9d0e..6312c1b0865ebd94d00cb2f7861f0afd3886877b 100644
--- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot
+++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot
@@ -6,7 +6,7 @@ Resource    environment/IndividualPmJob.txt
 Resource    environment/reports.txt
 Resource    environment/thresholds.txt
 Resource    environment/individualThresholds.txt
-Resource          environment/individualSubscription.txt
+Resource    environment/individualSubscription.txt
 Library    REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}    ssl_verify=false
 Library    MockServerLibrary 
 Library    OperatingSystem
@@ -143,11 +143,11 @@ Check HTTP Response Body PmJobs Matches the requested exclude selector
 Check HTTP Response Body PmJobs Matches the requested include selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
-    Validate Json    reports.schema.json    ${reports[0]}
+    Validate Json    reports.schema.json    ${reports}
     Log    Validation for reports schema OK
     
 Check HTTP Response Body PmJobs Matches the requested exclude_default selector
@@ -159,15 +159,15 @@ Check HTTP Response Body PmJobs Matches the requested exclude_default selector
 Check HTTP Response Body PmJobs Matches the requested all_fields selector
     Log    Trying to validate criteria schema
     ${criteria}=    Get Value From Json    ${response['body']}    $..criteria
-    Validate Json    criteria.schema.json    ${criteria[0]}
+    Validate Json    criteria.schema.json    ${criteria}
     Log    Validation for criteria schema OK
     Log    Trying to validate criteria schema
     ${reports}=    Get Value From Json    ${response['body']}    $..reports
-    Validate Json    reports.schema.json    ${reports[0]}
+    Validate Json    reports.schema.json    ${reports}
     Log    Validation for reports schema OK
     Log    Validating _links schema
     ${links}=    Get Value From Json    ${response['body']}    $.._links
-    Validate Json    links.schema.json    ${links[0]}
+    Validate Json    links.schema.json    ${links}
     Log    Validation for _links schema OK
     
 Check HTTP Response Body PmJobs Matches the requested Attribute-Based Filter 
@@ -641,7 +641,7 @@ Check HTTP Response Status Code Is
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
 
@@ -677,7 +677,7 @@ Check Postcondition NS Performance Subscription Is Set
 Check Postcondition Subscription Resource URI Returned in Location Header Is Available
     Log    Going to check postcondition
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${response.headers['Location']}
+    GET    ${response['headers']['Location']}
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
@@ -771,7 +771,7 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript
 
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
 
 
diff --git a/SOL005/NSPerformanceManagement-API/schemas/links.schema.json b/SOL005/NSPerformanceManagement-API/schemas/links.schema.json
index ef262a8c875b5c00bf32d4fd6f279cc4d5965bc9..945df7daa143612fc605fd247e3edd5c18d0d258 100644
--- a/SOL005/NSPerformanceManagement-API/schemas/links.schema.json
+++ b/SOL005/NSPerformanceManagement-API/schemas/links.schema.json
@@ -1,35 +1,55 @@
 {
-	"description": "Links for this resource.\n",
-	"type": "object",
-	"required": ["self"],
-	"properties": {
-		"self": {
-			"description": "This type represents a link to a resource.\n",
-			"type": "object",
-			"required": ["href"],
-			"properties": {
-				"href": {
-					"description": "URI of the referenced resource.\n",
-					"type": "string",
-					"format": "url"
-				}
-			}
-		},
-		"objects": {
-			"description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n",
-			"type": "array",
-			"items": {
-				"description": "This type represents a link to a resource.\n",
-				"type": "object",
-				"required": ["href"],
-				"properties": {
-					"href": {
-						"description": "URI of the referenced resource.\n",
-						"type": "string",
-						"format": "url"
-					}
-				}
-			}
-		}
-	}
+  "type": "array",
+  "items": {
+    "type": "object",
+    "description": "Links to resources related to this resource.\n",
+    "required": [
+      "self",
+      "packageContent"
+    ],
+    "properties": {
+      "self": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      },
+      "vnfd": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      },
+      "packageContent": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/SOL005/NSPerformanceManagement-API/schemas/reports.schema.json b/SOL005/NSPerformanceManagement-API/schemas/reports.schema.json
index 834ded68723d9a72b3be565e72b71d5ef650e0cc..421a0c2e2bce648686bce9df4d49883349eb5511 100644
--- a/SOL005/NSPerformanceManagement-API/schemas/reports.schema.json
+++ b/SOL005/NSPerformanceManagement-API/schemas/reports.schema.json
@@ -1,26 +1,32 @@
 {
-	"description": "Information about available reports collected by this PM job.\n",
-	"type": "object",
-	"required": ["href", "readyTime"],
-	"properties": {
-		"href": {
-			"description": "The Uri where the report can be obtained.\n",
-			"type": "string",
-			"format": "url"
-		},
-		"readyTime": {
-			"description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
-			"type": "string",
-			"format": "date-time"
-		},
-		"expiryTime": {
-			"description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
-			"type": "string",
-			"format": "date-time"
-		},
-		"fileSize": {
-			"description": "The size of the report file in bytes, if known.\n",
-			"type": "integer"
-		}
-	}
+  "type": "array",
+  "items": {
+    "description": "Information about available reports collected by this PM job.\n",
+    "type": "object",
+    "required": [
+      "href",
+      "readyTime"
+    ],
+    "properties": {
+      "href": {
+        "description": "The Uri where the report can be obtained.\n",
+        "type": "string",
+        "format": "url"
+      },
+      "readyTime": {
+        "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
+        "type": "string",
+        "format": "date-time"
+      },
+      "expiryTime": {
+        "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
+        "type": "string",
+        "format": "date-time"
+      },
+      "fileSize": {
+        "description": "The size of the report file in bytes, if known.\n",
+        "type": "integer"
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
index 478aa79a38aca19c813272a87d14a0ea7aca87ca..f5094609c7e9191e8aebbf2ac3dae30f48e94849 100644
--- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
+++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
@@ -16,7 +16,7 @@ GET Individual VNF Package
     Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
     Log    Trying to validate response
     ${vnfPkgInfo}=    Output    response body
-    Validate Json    vnfPkgInfo.schema.json    ${vnfPackageId}
+    Validate Json    vnfPkgInfo.schema.json    ${vnfPkgInfo}
     Log    Validation OK
 
 GET Individual VNF Package - Negative (Not Found)
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
index dfe7b85ca3760117d294507f2721cadb7f3747d3..bea5e30d6e2cf0c53e79e21a096d7a77e5757e99 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
@@ -13,7 +13,6 @@ GET VNF Package Artifact
     Integer    response status    200
     Log    Received a 200 OK as expected
     ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_OCTET}
 
 GET VNF Package Artifact - Range
     Log    Trying to get an Artifact using RANGE Header and using an NFVO that can handle it
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
index d9d9c24cf6dd66d0979828994a01b9bae310dbd9..ebc791af2798319dc77ce531aa3c082577731af4 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
@@ -9,17 +9,13 @@ Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 *** Test Cases ***
 GET VNF Package Content
     Log    Trying to get a VNF Package Content
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content
     Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
 
 GET VNF Package Content - Range
     Log    Trying to get a VNF Package Content using RANGE using an NFVO that can handle it
     Pass Execution If    ${NFVO_RANGE_OK} == 0    Skipping this test as NFVO is not able to handle partial Requests.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Range": "${range}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content
@@ -35,51 +31,30 @@ GET VNF Package Content - Range
 GET VNF Package Content - Negative Range
     Log    Trying to get a range of bytes of the limit of the VNF Package
     Pass Execution If    ${NFVO_RANGE_OK} == 0    Skipping this test as NFVO is not able to handle partial Requests.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Set Headers    {"Range": "${erroneousRange}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content
     Integer    response status    416
     Log    Received 416 Range not satisfiable as expected.
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
 
 GET VNF Package Content - Negative (Not Found)
     Log    Trying to perform a negative get, using an erroneous package ID
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/package_content
     Integer    response status    404
     Log    Received 404 Not Found as expected
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
 
 GET VNF Package Content - Negative (onboardingState issue)
     Log    Trying to get a VNF Package content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content
     Integer    response status    409
     Log    Received 409 Conflict as expected
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
 
 
 PUT VNF Package Content 
     Log    Trying to perform a PUT. This method uploads the content of a VNF package.
-    Set Headers    {"Contet-Type": "${CONTENT_TYPE_ZIP}"}
+    Set Headers    {"Content-Type": "${CONTENT_TYPE_ZIP}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     ${content}=    Get Binary File     files/vnfPackage.zip
     PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content    ${content}
@@ -93,7 +68,7 @@ PUT VNF Package Content
 
 PUT VNF Package Content - Negative (Conflict on onboarding status not in CREATED)
     Log    Trying to perform a PUT. This method uploads the content of a VNF package.
-    Set Headers    {"Contet-Type": "${CONTENT_TYPE_ZIP}"}
+    Set Headers    {"Content-Type": "${CONTENT_TYPE_ZIP}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     ${content}=    Get Binary File     files/vnfPackage.zip
     PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPackageId}/package_content    ${content}
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
index 10dde802d6ceefeb8d8ff29cdd7c905427c6f5bf..59f7d7bf29e30d039c6c04b10c7565550ee3fca3 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
@@ -13,7 +13,7 @@ POST VNF Package Content
     Log    Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package.
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    ${body}=    Get Binary File    jsons/UploadVnfPkgFromUriRequest.json
+    ${body}=    Get File    jsons/UploadVnfPkgFromUriRequest.json
     POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content/upload_from_uri    ${body}
     Integer    response status    202
     Log    Received 202 Accepted as expected
@@ -27,7 +27,7 @@ POST VNF Package Content - Negative (VNF Package not in CREATED operational stat
     Log    Trying to perform a POST. The POST method provides the information for the NFVO to get the content of a VNF package.
     Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    ${body}=    Get Binary File    jsons/UploadVnfPkgFromUriRequest.json
+    ${body}=    Get File    jsons/UploadVnfPkgFromUriRequest.json
     POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPackageId}/package_content/upload_from_uri    ${body}
     Integer    response status    409
     Log    Received 409 Conflict as expected
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
index 309dd8b8ab175f6020d02491efce1a30b4fbeadb..77d83daa34042f3db81162f06c878f82cfbf3a0f 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
@@ -85,35 +85,11 @@ Send Post Request for VNF Package Subscription
     Set Suite Variable    ${response}    ${output}
     Run Keyword If    ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
     ...       Check Notification Endpoint
-    # Integer    response status    201
-    # Log    Received 201 Created as expected
-    # ${headers}=    Output    response headers
-    # Should Contain    ${headers}    Location
-    # Log    Response has header Location
-    # ${result}=    Output    response body
-    # Validate Json    PkgmSubscription.schema.json    ${result}
-    # Log    Validation of PkgmSubscription OK
+
 
 Send Post Request for Duplicated VNF Package Subscription
     Log    Trying to create a subscription with an already created content
-    Pass Execution If    ${NFVO_DUPLICATION} == 0    NFVO is not permitting duplication. Skipping the test
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
-    ${body}=    Get File    jsons/subscriptions.json
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
-    ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    Run Keyword If    ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
-    ...       Check Notification Endpoint
-    # Integer    response status    201
-    # Log    Received 201 Created as expected
-    # ${headers}=    Output    response headers
-    # Should Contain    ${headers}    Location
-    # Log    Response has header Location
-    # ${result}=    Output    response body
-    # Validate Json    PkgmSubscription.schema.json    ${result}
-    # Log    Validation of PkgmSubscription OK
+    Send Post Request for VNF Package Subscription
 
 
 Send Put Request for VNF Package Subscriptions
@@ -158,14 +134,14 @@ Create Sessions
     
 Check HTTP Response Status Code Is
     [Arguments]    ${expected_status}    
-    Should Be Equal    ${response['status']}    ${expected_status}
+    Should Be Equal As Strings    ${response['status']}    ${expected_status}
     Log    Status code validated
     
     
 Check HTTP Response Body Json Schema Is
     [Arguments]    ${input}
     Should Contain    ${response['headers']['Content-Type']}    application/json
-    ${schema} =    Catenate    ${input}    .schema.json
+    ${schema} =    Catenate    SEPARATOR=    ${input}    .schema.json
     Validate Json    ${schema}    ${response['body']}
     Log    Json Schema Validation OK  
     
@@ -187,7 +163,7 @@ Check HTTP Response Body Matches the Subscription
     Log    Check Response matches subscription
     ${body}=    Get File    jsons/subscriptions.json
     ${subscription}=    evaluate    json.loads('''${body}''')    json
-    Should Be Equal    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
+    Should Be Equal As Strings    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
     
     
 Check Postcondition VNF Package Subscription Is Set
@@ -196,8 +172,10 @@ Check Postcondition VNF Package Subscription Is Set
     Log    Trying to get the subscription
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    Run Keyword If    Should Not Be Equal As Strings    ${location}    Location   GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
-    Run Keyword If    Should Be Equal As Strings    ${location}    Location   GET    ${response['headers']['Location']}  
+    Run Keyword If    ${location} == Location
+    ...    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']}
+    Run Keyword If    ${location} == Location
+    ...    GET    ${response['headers']['Location']}  
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
     Check HTTP Response Status Code Is    200
@@ -210,5 +188,5 @@ Check HTTP Response Body Is Empty
     
 Check HTTP Response Header Contains
     [Arguments]    ${CONTENT_TYPE}
-    Should Contain    ${response.headers}    ${CONTENT_TYPE}
+    Should Contain    ${response['headers']}    ${CONTENT_TYPE}
     Log    Header is present
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot
index 6e1456faf38a61899a212193e1ec67b113f511cb..a307e0dbb8186f94b4a4cbcda2755d72899d8f1c 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackages.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot
@@ -100,14 +100,14 @@ GET all Packages - all_fields
     Log    Validation OK
     Log    Trying to validate softwareImages schema
     ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    Validate Json    softwareImage.schema.json    ${softwareImages[0]}
+    Validate Json    softwareImage.schema.json    ${softwareImages}
     Log    Validation for softwareImage schema OK
     Log    Trying to validate additionalArtifacts schema
     ${additional_artifacts}=    Get Value From Json    ${vnfPkgInfos}    $..additionalArtifacts
-    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts[0]}
+    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts}
     Log    Validation for additionalArtifacts schema OK
     ${links}=    Get Value From Json    ${vnfPkgInfos}    $.._links
-    Validate Json    links.schema.json    ${links[0]}
+    Validate Json    links.schema.json    ${links}
     Log    Validation for _links schema OK
 
 GET all Packages - exclude_default
@@ -147,11 +147,11 @@ GET all Packages - fields
     Log    Validation for vnfPkgInfo OK
     Log    Trying to validate softwareImages schema
     ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    Validate Json    softwareImage.schema.json    ${softwareImages[0]}
+    Validate Json    softwareImage.schema.json    ${softwareImages}
     Log    Validation for softwareImage schema OK
     Log    Trying to validate additionalArtifacts schema
     ${additional_artifacts}=    Get Value From Json    ${vnfPkgInfos}    $..additionalArtifacts
-    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts[0]}
+    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts}
     Log    Validation for additionalArtifacts schema OK
 
 GET all Packages - exclude_fields
diff --git a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json
index d0dd3eef2fe24f66b653a095d29c96e73396b71e..4314ec0cee75d792059a04637926c589958f59a2 100644
--- a/SOL005/VNFPackageManagement-API/jsons/subscriptions.json
+++ b/SOL005/VNFPackageManagement-API/jsons/subscriptions.json
@@ -1,6 +1,6 @@
 {
 	"callbackUri": "http://127.0.0.1/subscribe",
 	"filter": {
-		"vnfPkgId": "788106a2-d692-44f3-a86d-384f0ce35e42"
+		"vnfPkgId":  ["491ed430-67f5-4c6c-b78e-797f5d718868"]
 	}
 }
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json b/SOL005/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..88b494479e668f237196d04116529af61dc45d8c
--- /dev/null
+++ b/SOL005/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json
@@ -0,0 +1,40 @@
+{
+        "description": "Information about VNF package artifacts contained in the VNF package that are not software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n",
+        "type": "array",
+        "items": {
+                "description": "This type represents an artifact other than a software image which is contained in a VNF package.  It shall comply with provisions defined in Table 9.5.3.3-1.\n",
+                "required": [
+                        "artifactPath",
+                        "checksum"
+                ],
+                "type": "object",
+                "properties": {
+                        "artifactPath": {
+                                "description": "This type represents stack of string values\n",
+                                "type": "string"
+                        },
+                        "checksum": {
+                                "description": "This type represents the checksum of a VNF package or an artifact file.  \n",
+                                "required": [
+                                        "algorithm",
+                                        "hash"
+                                ],
+                                "type": "object",
+                                "properties": {
+                                        "algorithm": {
+                                                "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n",
+                                                "type": "string"
+                                        },
+                                        "hash": {
+                                                "description": "The hexadecimal value of the checksum.\n",
+                                                "type": "string"
+                                        }
+                                }
+                        },
+                        "metadata": {
+                                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                                "type": "object"
+                        }
+                }
+        }
+}
diff --git a/SOL005/VNFPackageManagement-API/schemas/links.schema.json b/SOL005/VNFPackageManagement-API/schemas/links.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..945df7daa143612fc605fd247e3edd5c18d0d258
--- /dev/null
+++ b/SOL005/VNFPackageManagement-API/schemas/links.schema.json
@@ -0,0 +1,55 @@
+{
+  "type": "array",
+  "items": {
+    "type": "object",
+    "description": "Links to resources related to this resource.\n",
+    "required": [
+      "self",
+      "packageContent"
+    ],
+    "properties": {
+      "self": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      },
+      "vnfd": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      },
+      "packageContent": {
+        "description": "This type represents a link to a resource.\n",
+        "type": "object",
+        "required": [
+          "href"
+        ],
+        "properties": {
+          "href": {
+            "description": "URI of the referenced resource.\n",
+            "type": "string",
+            "format": "url"
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json b/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..7ccab2a08587439864a40b38326ff56e282f21eb
--- /dev/null
+++ b/SOL005/VNFPackageManagement-API/schemas/softwareImage.schema.json
@@ -0,0 +1,115 @@
+{
+        "description": "Information about VNF package artifacts that are software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n",
+        "type": "array",
+        "items": {
+                "description": "This type represents an artifact contained in a VNF package which represents a software image.  \n",
+                "required": [
+                        "id",
+                        "name",
+                        "provider",
+                        "version",
+                        "checksum",
+                        "containerFormat",
+                        "diskFormat",
+                        "createdAt",
+                        "minDisk",
+                        "minRam",
+                        "size",
+                        "imagePath"
+                ],
+                "type": "object",
+                "properties": {
+                        "id": {
+                                "description": "Identifier of the software image.\n",
+                                "type": "string"
+                        },
+                        "name": {
+                                "description": "Name of the software image.\n",
+                                "type": "string"
+                        },
+                        "provider": {
+                                "description": "Provider of the software image.\n",
+                                "type": "string"
+                        },
+                        "version": {
+                                "description": "Software version of the VNF. This is changed when there is any change to the software included in the VNF package. This information is copied from the VNFD. It shall be present after the VNF package content has been on-boarded and absent otherwise.\n",
+                                "type": "string"
+                        },
+                        "checksum": {
+                                "description": "This type represents the checksum of a VNF package or an artifact file.  \n",
+                                "required": [
+                                        "algorithm",
+                                        "hash"
+                                ],
+                                "type": "object",
+                                "properties": {
+                                        "algorithm": {
+                                                "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512.\n",
+                                                "type": "string"
+                                        },
+                                        "hash": {
+                                                "description": "The hexadecimal value of the checksum.\n",
+                                                "type": "string"
+                                        }
+                                }
+                        },
+                        "containerFormat": {
+                                "description": "Container format indicates whether the software image is in a file format that also contains meta-data about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ram disk image format - BARE: the image does not have a container or meta-data envelope - DOCKER: docker container format - OVA: OVF package in a tar file - OVF: OVF container format\n",
+                                "type": "string",
+                                "enum": [
+                                        "AKI",
+                                        "AMI",
+                                        "ARI",
+                                        "BARE",
+                                        "DOCKER",
+                                        "OVA",
+                                        "OVF"
+                                ]
+                        },
+                        "diskFormat": {
+                                "description": "Disk format of a software image is the format of the underlying disk image. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - ISO: an archive format for the data contents of an optical disc, such as CD-ROM - QCOW2: a common disk image format, which can expand dynamically and supports copy on write - RAW: an unstructured disk image format - VDI: a common disk image format - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format\n",
+                                "type": "string",
+                                "enum": [
+                                        "AKI",
+                                        "AMI",
+                                        "ARI",
+                                        "ISO",
+                                        "QCOW2",
+                                        "RAW",
+                                        "VDI",
+                                        "VHD",
+                                        "VHDX",
+                                        "VMDK"
+                                ]
+                        },
+                        "createdAt": {
+                                "description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
+                                "type": "string",
+                                "format": "date-time"
+                        },
+                        "minDisk": {
+                                "description": "The minimal disk for this software image in bytes.\n",
+                                "type": "integer",
+                                "minimum": 0
+                        },
+                        "minRam": {
+                                "description": "The minimal RAM for this software image in bytes.\n",
+                                "type": "integer",
+                                "minimum": 0
+                        },
+                        "size": {
+                                "description": "Size of this software image in bytes.\n",
+                                "type": "integer",
+                                "minimum": 0
+                        },
+                        "userMetadata": {
+                                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159. \n",
+                                "type": "object"
+                        },
+                        "imagePath": {
+                                "description": "Path in the VNF package, which identifies the image artifact and also allows to access a copy of the image artifact.\n",
+                                "type": "string"
+                        }
+                }
+        }
+}
diff --git a/requirements.txt b/requirements.txt
index b4f873002cde9e43a86e2e4fa4dfd3307f8304e8..6555fbf2f7ace864f9f76da63a620f27fba4733c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,7 +5,7 @@
 robotframework==3.1
 RESTinstance==1.0.0rc4
 robotframework-dependencylibrary==1.0.0.post1
-robotframework-jsonlibrary==0.2
+robotframework-jsonlibrary==0.3
 robotframework-jsonschemalibrary==1.0
 robotframework-mockserver==0.0.4