diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot
index 642ca9e58776e97f4f29b91def35fab2dccdaa9a..4f2ddb4f70c7e89e772c9d794e3c177190315f51 100644
--- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot
+++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot
@@ -2,84 +2,98 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/individualSubscription.txt
+Resource          VNFPackageManagementKeywords.robot
 Library           OperatingSystem
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-GET Individual Subscription
-    Log    Trying to get a single subscription identified by subscriptionId
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
-    Integer    response status    200
-    Log    Received a 200 OK as expected
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    ${result}=    Output    response body
-    Validate Json    PkgmSubscription.schema.json    ${result}
-    Log    Validated PkgmSubscription schema
+GET Individual VNF Package Subscription
+    [Documentation]    Test ID: 5.3.5.8.1
+    ...    Test title: GET Individual VNF Package Subscription
+    ...    Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get Individual VNF Package Subscription
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   PkgmSubscription
+    Check HTTP Response Body Subscription Identifier matches the requested Subscription
 
-GET Subscription - Negative (Not Found)
-    Log    Trying to perform a request on a subscriptionID which doesn't exist
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
-    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 Individual VNF Package Subscription with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.8.2
+    ...    Test title: GET Individual VNF Package Subscription with invalid resource identifier
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET individual VNF Package Subscription with invalid resource identifier
+    Check HTTP Response Status Code Is    404
 
-DELETE Subscription
-    Log    Trying to perform a DELETE on a subscriptionId
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
-    Integer    response status    204
-    Log    Received 204 No Content as expected
+DELETE Individual VNF Package Subscription with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.8.3
+    ...    Test title: DELETE Individual VNF Package Subscription with invalid resource identifier
+    ...    Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none   
+    Send Delete request for individual VNF Package Subscription with invalid resource identifier
+    Check HTTP Response Status Code Is    404
 
+POST Individual VNF Package Subscription - Method not implemented
+    [Documentation]    Test ID: 5.3.5.8.4
+    ...    Test title: POST Individual VNF Package Subscription - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription
+    ...    Pre-conditions: none
+    ...    Reference:  section 9.4.8.9.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package Subscription is not created on the NFVO
+    Send Post request for individual VNF Package Subscription
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Subscription is not Created
 
-DELETE Subscription - Negative (Not Found)
-    Log    Trying to perform a DELETE on a subscriptionId which doesn't exist
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
-    Integer    response status    404
-    Log    The subscriptionId is not present in database
-    ${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 Individual VNF Package Subscription - Method not implemented
+    [Documentation]    Test ID: 5.3.5.8.5
+    ...    Test title: PUT Individual VNF Package Subscription - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package subscription is not modified by the operation
+    Send Put request for individual VNF Package Subscription
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Subscription is Unmodified (Implicit)
 
-PUT Subscription - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PATCH Individual VNF Package Subscription - Method not implemented
+    [Documentation]    Test ID: 5.3.5.8.6
+    ...    Test title: PATCH Individual VNF Package Subscription - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package subscription is not modified by the operation
+    Send Patch request for individual VNF Package Subscription
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Subscription is Unmodified (Implicit)
 
-PATCH Subscription - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-POST Subscription - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a POST. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+DELETE Individual VNF Package Subscription
+    [Documentation]    Test ID: 5.3.5.8.7
+    ...    Test title: DELETE Individual VNF Package Subscription
+    ...    Test objective: The objective is to test the deletion of an individual VNF package subscription
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.9.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO    
+    Send Delete request for individual VNF Package Subscription
+    Check HTTP Response Status Code Is    204
+    Check Postcondition VNF Package Subscription is Deleted
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
index f5094609c7e9191e8aebbf2ac3dae30f48e94849..9d96415e2284188805c2acdb1640fa95dbba159a 100644
--- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
+++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot
@@ -2,109 +2,154 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/individualVnfPackage.txt
+Resource          VNFPackageManagementKeywords.robot    
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
 GET Individual VNF Package
-    Log    Trying to get a VNF Package present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate response
-    ${vnfPkgInfo}=    Output    response body
-    Validate Json    vnfPkgInfo.schema.json    ${vnfPkgInfo}
-    Log    Validation OK
+    [Documentation]    Test ID: 5.3.5.2.1
+    ...    Test title: GET Individual VNF Package
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.3.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET Individual VNF Package
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgInfo
+    Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package
 
-GET Individual VNF Package - Negative (Not Found)
-    Log    Trying to perform a negative get, using wrong authorization bearer
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPackageId}
-    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
-    
-    
-PATCH Individual VNF Package
-    Log    Trying to perform a PATCH. This method updates the information of a VNF package.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    ${body}=    Load JSON From File    jsons/VnfPkgInfoModifications.json
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}    ${body}
-    Integer    response status    200
-    Log    Received 200 OK as expected
-    Log    Trying to validate VnfPkgInfoModification
-    ${response}=    Output    response body
-    Validate Json    VnfPkgInfoModification.schema.json    ${response}
-    Log    Validation OK
-    
-    
-PATCH Individual VNF Package - Negative (Conflict on the state of the resource)
-    Log    Trying to perform a PATCH, disabling a package already disabled
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    ${body}=    Load JSON From File    jsons/VnfPkgInfoModificationsDisabled.json
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${disabledVnfPackageId}    ${body}
-    Integer    response status    409
-    Log    Received 409 Conflict as expected
-    Log    Trying to validate ProblemDetails
-    ${response}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${response}
-    Log    Validation OK    
-    
+GET Individual VNF Package with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.2.2
+    ...    Test title: GET Individual VNF Package with invalid resource identifier
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.3.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
+    GET Individual VNF Package with invalid resource identifier
+    Check HTTP Response Status Code Is    404
+
+POST Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.2.3
+    ...    Test title: POST Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create new VNF Package
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.3.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send POST Request for individual VNF Package
+    Check HTTP Response Status Code Is    405
+
+PUT Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.2.4
+    ...    Test title: PUT Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.3.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for individual VNF Package
+    Check HTTP Response Status Code Is    405
+
+Disable Individual VNF Package   
+    [Documentation]    Test ID: 5.3.5.2.5
+    ...    Test title: Disable Individual Individual VNF Package  
+    ...    Test objective: The objective is to test the disabling of an individual Individual VNF Package  and perform a JSON schema and content validation of the collected data structure
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state.
+    ...    Reference: section 9.4.3.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package is in operational state DISABLED
+    Send PATCH to disable Individual VNF Package
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   VnfPkgInfoModification
+    Check Postcondition VNF Package is in operational state    DISABLED
+
+Disable Individual VNF Package with conflict due to operational state DISABLED
+    [Documentation]    Test ID: 5.3.5.2.6
+    ...    Test title: Disable Individual VNF Package with conflict due to operational state ENABLED
+    ...    Test objective: The objective is to test that disabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5).
+    ...    Reference: section 9.4.3.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH to disable Individual VNF Package
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+Enable Individual VNF Package
+    [Documentation]    Test ID: 5.3.5.2.7
+    ...    Test title: Enable Individual VNF Package
+    ...    Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5).
+    ...    Reference: section 9.4.3.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package is in operational state ENABLED
+    Send PATCH to enable Individual VNF Package
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   VnfPkgInfoModification
+    Check Postcondition VNF Package is in operational state    ENABLED 
+
+Enable Individual VNF Package with conflict due to operational state ENABLED
+    [Documentation]    Test ID: 5.3.5.2.8
+    ...    Test title: Enable Individual VNF Package with conflict due to operational state ENABLED
+    ...    Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7).
+    ...    Reference: section 9.4.3.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH to enable Individual VNF Package
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
 
 DELETE Individual VNF Package
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.3.3.5-1 and 9.4.3.3.5-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    Log    Trying to perform a DELETE. This method deletes an individual VNF package resource.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${disabledVnfPackageId}
-    Integer    response status    204
-    Log    Received 204 No Content as expected
-    
-    
-    
-DELETE Individual VNF Package - Negative (Conflict on the state of the resource)
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.3.3.5-1 and 9.4.3.3.5-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    Log    Trying to perform a DELETE trying to delete a resource which operational status is ENABLED.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
-    Integer    response status    409
-    Log    Received 409 Conflict as expected
-    Log    Trying to validate ProblemDetails
-    ${response}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${response}
-    Log    Validation OK    
+    [Documentation]    Test ID: 5.3.5.2.9
+    ...    Test title: DELETE Individual VNF Package
+    ...    Test objective: The objective is to test the deletion of an individual VNF Package
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state
+    ...    Reference: section 9.4.3.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package is not available anymore in the NFVO 
+    Send DELETE Request for individual VNF Package
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package is Deleted
+
+DELETE Individual VNF Package in operational state ENABLED
+    [Documentation]    Test ID: 5.3.5.2.10
+    ...    Test title:  DELETE Individual VNF Package in operational state ENABLED
+    ...    Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response.
+    ...    Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7).
+    ...    Reference: section 9.4.3.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package is not deleted by the failed operation. 
+    Send DELETE Request for Individual VNF Package in operational state ENABLED
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+    Check Postcondition VNF Package Exists
     
+DELETE Individual VNF Package used for instantiated VNF instances
+    [Documentation]    Test ID: 5.3.5.2.11
+    ...    Test title:  DELETE Individual VNF Package used for instantiated VNF instances
+    ...    Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response.
+    ...    Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package.
+    ...    Reference: section 9.4.3.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package is not deleted by the failed operation. 
+    Send DELETE Request for Individual VNF Package used for instantiated VNF instances
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+    Check Postcondition VNF Package Exists
     
-POST Individual VNF Package - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a POST (method should not be implemented)
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-PUT Individual VNF Package - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
 
diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot
index 0a3e5744588581ba136f70c2409fb22735401cd3..312f46682ac5517efe36a559581a9630adcb5b13 100644
--- a/SOL005/VNFPackageManagement-API/Subscriptions.robot
+++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot
@@ -13,68 +13,139 @@ Suite Teardown    Terminate All Processes    kill=true
 
 *** Test Cases ***
 Get All VNF Package Subscriptions
+    [Documentation]    Test ID: 5.3.5.7.1
+    ...    Test title: GET all VNF Package Subscriptions
+    ...    Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
     Get all VNF Package Subscriptions
     Check HTTP Response Status Code Is    200
     Check HTTP Response Body Json Schema Is    PkgmSubscriptions
 
 
 Get VNF Package Subscriptions with attribute-based filter
+    [Documentation]    Test ID: 5.3.5.7.2
+    ...    Test title: Get VNF Package Subscriptions with attribute-based filter
+    ...    Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters 
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
     Get VNF Package Subscriptions with attribute-based filters
     Check HTTP Response Status Code Is    200
-    Check HTTP Response Body Json Schema Is    PkgmSubscriptions
+    Check HTTP Response Body Json Schema Is    PkgmSubscription
     Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter
 
 
 Get VNF Package Subscriptions with invalid attribute-based filter
+    [Documentation]    Test ID: 5.3.5.7.3
+    ...    Test title: Get VNF Package Subscriptions with attribute-based filters
+    ...    Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. 
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
     Get VNF Package Subscriptions with invalid attribute-based filters
     Check HTTP Response Status Code Is    400
     Check HTTP Response Body Json Schema Is   ProblemDetails    
     
 GET VNF Package Subscription with invalid resource endpoint
+    [Documentation]    Test ID: 5.3.5.7.4
+    ...    Test title: GET VNF Package Subscription with invalid resource endpoint
+    ...    Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint.
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
     Get VNF Package Subscriptions with invalid resource endpoint
     Check HTTP Response Status Code Is    404
 
-
 Create new VNF Package subscription
+    [Documentation]    Test ID: 5.3.5.7.5
+    ...    Test title: Create new VNF Package subscription
+    ...    Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure
+    ...    Pre-conditions: none
+    ...    Reference:  section 9.4.8.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription    
     Send Post Request for VNF Package Subscription
     Check HTTP Response Status Code Is    201
     Check HTTP Response Body Json Schema Is    PkgmSubscription
-    Check HTTP Response Body Matches the Subscription
+    Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription
     Check Postcondition VNF Package Subscription Is Set 
 
-
-Create duplicated VNF Package subscription with duplication handler
+Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions
     [Tags]    no-duplicated-subs
+    [Documentation]    Test ID: 5.3.5.7.6
+    ...    Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions
+    ...    Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO does not support the creation of duplicated subscriptions
+    ...    Post-Conditions: The existing VNF package subscription returned is available in the NFVO
     Send Post Request for Duplicated VNF Package Subscription
     Check HTTP Response Status Code Is    303
     Check HTTP Response Body Is Empty
     Check HTTP Response Header Contains    Location
-    Check Postcondition VNF Package Subscription Is Set    Location
-
+    Check Postcondition Subscription Resource Returned in Location Header Is Available
 
-Create duplicated VNF Package subscription without duplication handler
+Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions
     [Tags]    duplicated-subs
+    [Documentation]    Test ID: 5.3.5.7.7
+    ...    Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions
+    ...    Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO supports the creation of duplicated subscriptions
+    ...    Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription
     Send Post Request for Duplicated VNF Package Subscription
     Check HTTP Response Status Code Is    201
-    Check HTTP Response Body Json Schema Is    PmSubscription
-    Check HTTP Response Body Matches the Subscription
+    Check HTTP Response Body Json Schema Is    PkgmSubscription
+    Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription
     Check Postcondition VNF Package Subscription Is Set 
 
-
-
 PUT VNF Package Subscriptions - Method not implemented
+    [Documentation]    Test ID: 5.3.5.7.8
+    ...    Test title: PUT VNF Package Subscriptions - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
     Send Put Request for VNF Package Subscriptions
     Check HTTP Response Status Code Is    405
     
-    
 PATCH VNF Package Subscriptions - Method not implemented
+    [Documentation]    Test ID: 5.3.5.7.9
+    ...    Test title: PATCH VNF Package Subscriptions - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Reference:  section 9.4.8.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
     Send Patch Request for VNF Package Subscriptions
     Check HTTP Response Status Code Is    405
     
         
 DELETE VNF Package Subscriptions - Method not implemented
+    [Documentation]    Test ID: 5.3.5.7.10
+    ...    Test title: DELETE VNF Package Subscriptions - Method not implemented
+    ...    Test objective: The objective is to test that DELETE method is not allowed to delete VNF package subscriptions
+    ...    Pre-conditions: At least one VNF package subscription is available in the NFVO.
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF package subscriptions are not deleted by the failed operation 
     Send Delete Request for VNF Package Subscriptions
     Check HTTP Response Status Code Is    405
-
-
-
+    Check Postcondition VNF Package Subscriptions Exists
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot
index 12c63b5a3842cd0a1b39955f90e95adea905fbe7..c649fcf6cf8a1afe8f750bfc34acbe31c4d8c867 100644
--- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot
+++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot
@@ -2,114 +2,146 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/vnfdInIndividualVnfPackage.txt
+Resource          VNFPackageManagementKeywords.robot    
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-GET VNFD in Individual VNF Package (PLAIN)
-    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_PLAIN}
+Get single file VNFD in Individual VNF Package in Plain Format
+    [Documentation]    Test ID: 5.3.5.3.1
+    ...    Test title: Get single file VNFD in Individual VNF Package in Plain Format
+    ...    Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFD is implemented as a single file
+    ...    Post-Conditions: none
+    Get single file VNFD in Individual VNF Package in Plain Format
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    text/plain
 
-GET VNFD in Individual VNF Package (ZIP)
-    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_ZIP}
+Get VNFD in Individual VNF Package in Zip Format
+    [Documentation]    Test ID: 5.3.5.3.2
+    ...    Test title: Get VNFD in Individual VNF Package in Zip Format
+    ...    Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get VNFD in Individual VNF Package in Zip Format
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    application/zip
 
-GET VNFD in Individual VNF Package (PLAIN-ZIP)
-    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Run Keyword If    ${NFVO_PLAIN} == 0    Should Contain    ${contentType}    ${CONTENT_TYPE_ZIP}
-    Run Keyword If    ${NFVO_PLAIN} == 1    Should Contain    ${contentType}    ${CONTENT_TYPE_PLAIN}
+Get single file VNFD in Individual VNF Package in Plain or Zip Format
+    [Documentation]    Test ID: 5.3.5.3.3
+    ...    Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format
+    ...    Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFD is implemented as a single file
+    ...    Post-Conditions: none
+    Get single file VNFD in Individual VNF Package in Plain or Zip Format
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is Any of   text/plain    application/zip
+    
+Get multi file VNFD in Individual VNF Package in Plain or Zip Format
+    [Documentation]    Test ID: 5.3.5.3.4
+    ...    Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format
+    ...    Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFD is implemented as a multi file
+    ...    Post-Conditions: none
+    Get multi file VNFD in Individual VNF Package in Plain or Zip Format
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    application/zip
 
-GET VNFD in Individual VNF Package - Negative (PLAIN/ZIP)
-    Log    Trying to get a negative case performing a get on a VNFD from a given VNF Package present in the NFVO Catalogue. Accept will be text/plain but VNFD is composed my multiple files.
-    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
-    Integer    response status    406
-    ${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 multi file VNFD in Individual VNF Package in Plain Format
+    [Documentation]    Test ID: 5.3.5.3.5
+    ...    Test title: Get multi file VNFD in Individual VNF Package in Plain Format
+    ...    Test objective: The objective is to test that the retrieval of the multi file VNFD for an individual VNF package fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFD is implemented as a multi file
+    ...    Post-Conditions: none
+    Get multi file VNFD in Individual VNF Package in Plain Format
+    Check HTTP Response Status Code Is    406
+    Check HTTP Response Body Json Schema Is   ProblemDetails
 
-GET VNFD in Individual VNF Package - Negative (Not Found)
-    Log    Trying to perform a negative get, using an erroneous package ID
-    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd
-    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 VNFD in Individual VNF Package with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.3.6
+    ...    Test title: Get VNFD in Individual VNF Package with invalid resource identifier
+    ...    Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Get VNFD in Individual VNF Package with invalid resource identifier
+    Check HTTP Response Status Code Is    404
 
-GET VNFD in Individual VNF Package - Negative (onboardingState issue)
-    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd
-    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
+Get VNFD in Individual VNF Package with conflict due to onboarding state
+    [Documentation]    Test ID: 5.3.5.3.7
+    ...    Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state
+    ...    Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED.
+    ...    Reference: section 9.4.4.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Get VNFD in Individual VNF Package with conflict due to onboarding state
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
 
-POST VNFD in Individual VNF Package (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a POST (method should not be implemented)
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+POST VNFD in Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.3.8
+    ...    Test title: POST VNFD in Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create new VNFD
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.4.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send POST Request for VNFD in individual VNF Package
+    Check HTTP Response Status Code Is    405
 
-PUT VNFD in Individual VNF Package (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PUT VNFD in Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.3.9
+    ...    Test title: PUT VNFD in Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify a VNFD
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for VNFD in individual VNF Package
+    Check HTTP Response Status Code Is    405
 
-PATCH VNFD in Individual VNF Package (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PATCH VNFD in Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.3.10
+    ...    Test title: PATCH VNFD in Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to update a VNFD
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for VNFD in individual VNF Package
+    Check HTTP Response Status Code Is    405
 
-DELETE VNFD in Individual VNF Package (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a DELETE. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+DELETE VNFD in Individual VNF Package - Method not implemented
+    [Documentation]    Test ID: 5.3.5.3.11
+    ...    Test title: DELETE VNFD in Individual VNF Package - Method not implemented
+    ...    Test objective: The objective is to test that DELETE  method is not allowed to delete a VNFD
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.4.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNFD is not deleted by the failed operation
+    Send DELETE Request for VNFD in individual VNF Package
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNFD Exist
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
index bea5e30d6e2cf0c53e79e21a096d7a77e5757e99..10f0b64448d5c8bfdde2291b6e43c03290b898cf 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot
@@ -2,100 +2,144 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/vnfPackageArtifacts.txt
+Resource          VNFPackageManagementKeywords.robot 
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-GET VNF Package Artifact
-    Log    Trying to get a VNF Package Artifact
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    200
-    Log    Received a 200 OK as expected
-    ${contentType}=    Output    response headers Content-Type
+GET Individual VNF Package Artifact
+    [Documentation]    Test ID: 5.3.5.6.1
+    ...    Test title: GET Individual VNF Package Artifact
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package artifact
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET Individual VNF Package Artifact
+    Check HTTP Response Status Code Is    200
 
-GET VNF Package Artifact - Range
-    Log    Trying to get an Artifact using RANGE Header and 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    {"Range": "${range}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    206
-    Log    Received 206 Partial Content as expected.
-    ${headers}=    Output    response headers
-    Should Contain    ${headers}    Content-Range
-    Should Contain    ${headers}    Content-Length
+GET Individual VNF Package Artifact in octet stream format
+    [Documentation]    Test ID: 5.3.5.6.2
+    ...    Test title: GET Individual VNF Package Artifact in octet stream format
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format 
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO cannot determine the content type of the artifact
+    ...    Post-Conditions: none
+    GET Individual VNF Package Artifact in octet stream format
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    application/octet-stream
 
+GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests
+    [Documentation]    Test ID: 5.3.5.6.3
+    ...    Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact
+    ...    Post-Conditions: none
+    GET Individual VNF Package Artifact with Range Request
+    Check HTTP Response Status Code Is    206
+    Check HTTP Response Header Content-Range Is Present and Matches the requested range
+    Check HTTP Response Header Content-Length Is Present and Matches the requested range length
 
-GET VNF Package Artifact - 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    {"Range": "${erroneousRange}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    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 Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests
+    [Documentation]    Test ID: 5.3.5.6.4
+    ...    Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact.
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact
+    ...    Post-Conditions: none    
+    GET Individual VNF Package Artifact with Range Request
+    Check HTTP Response Status Code Is    200
 
-GET VNF Package Artifact- Negative (Not Found)
-    Log    Trying to perform a negative get, using an erroneous package ID
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath}
-    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 Individual VNF Package Artifact with invalid Range Request
+    [Documentation]    Test ID: 5.3.5.6.5
+    ...    Test title: GET Individual VNF Package Artifact with invalid Range Request
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file.
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact
+    ...    Post-Conditions: none      
+    GET Individual VNF Package Artifact with invalid Range Request
+    Check HTTP Response Status Code Is    416
 
-GET VNF Package Artifact - Negative (onboardingState issue)
-    Log    Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath}
-    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
+GET Individual VNF Package Artifact with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.6.6
+    ...    Test title: GET Individual VNF Package Artifact with invalid resource identifier
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
+    GET Individual VNF Package Artifact with invalid resource identifier
+    Check HTTP Response Status Code Is    404
 
-POST VNF Package Artifact - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a POST (method should not be implemented)
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+GET Individual VNF Package Artifact with conflict due to onboarding state
+    [Documentation]    Test ID: 5.3.5.6.7
+    ...    Test title: GET Individual VNF Package Artifact with conflict due to onboarding state
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED.
+    ...    Reference: section 9.4.7.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none   
+    GET Artifact for VNF Package in onboarding state different from ONBOARDED
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
 
-PUT VNF Package Artifact - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+POST Individual VNF Package Artifact - Method not implemented
+    [Documentation]    Test ID: 5.3.5.6.8
+    ...    Test title: POST Individual VNF Package Artifact - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.7.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send POST Request for individual VNF Package Artifact
+    Check HTTP Response Status Code Is    405
 
-PATCH VNF Package Artifact - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PUT Individual VNF Package Artifact - Method not implemented
+    [Documentation]    Test ID: 5.3.5.6.9
+    ...    Test title: PUT Individual VNF Package Artifact - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for individual VNF Package Artifact
+    Check HTTP Response Status Code Is    405
 
-DELETE VNF Package Artifact - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a DELETE. This method should not be implemented
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/artifacts/${artifactPath}
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PATCH Individual VNF Package Artifact - Method not implemented
+    [Documentation]    Test ID: 5.3.5.6.10
+    ...    Test title: PATCH Individual VNF Package Artifact - Method not implemented
+    ...    Test objective: The objective is to test that PATCH  method is not allowed to update a VNF Package artifact
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for individual VNF Package Artifact
+    Check HTTP Response Status Code Is    405
+
+DELETE Individual VNF Package Artifact - Method not implemented
+    [Documentation]    Test ID: 5.3.5.6.11
+    ...    Test title: DELETE Individual VNF Package Artifact - Method not implemented
+    ...    Test objective: The objective is to test that DELETE  method is not allowed to delete a VNF Package artifact
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.7.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package artifact is not deleted by the failed operation
+    Send DELETE Request for individual VNF Package Artifact
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Artifact Exist
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
index ebc791af2798319dc77ce531aa3c082577731af4..05c5ac4f2d3374b15ab3116d1a76cd206588a71b 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot
@@ -2,108 +2,149 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/vnfPackageContent.txt
+Resource          VNFPackageManagementKeywords.robot    
 Library           JSONLibrary
 Library           OperatingSystem    
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-GET VNF Package Content
-    Log    Trying to get a VNF Package Content
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content
-    Integer    response status    200
+GET Individual VNF Package Content
+    [Documentation]    Test ID: 5.3.5.4.1
+    ...    Test title: GET Individual VNF Package Content
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET Individual VNF Package Content
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    application/zip
 
-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    {"Range": "${range}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content
-    Integer    response status    206
-    Log    Received 206 Partial Content as expected.
-    ${headers}=    Output    response headers
-    Should Contain    ${headers}    Content-Range
-    Log    Header Content-Range is present
-    Should Contain    ${headers}    Content-Length
-    Log    Header Content-Length is present
+GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests
+    [Documentation]    Test ID: 5.3.5.4.2
+    ...    Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests
+    ...    Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file
+    ...    Post-Conditions: none
+    GET Individual VNF Package Content with Range Request
+    Check HTTP Response Status Code Is    206
+    Check HTTP Response Header Content-Type Is    application/zip
+    Check HTTP Response Header Content-Range Is Present and Matches the requested range
+    Check HTTP Response Header Content-Length Is Present and Matches the requested range length
 
+GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests
+    [Documentation]    Test ID: 5.3.5.4.3
+    ...    Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file.
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file
+    ...    Post-Conditions: none    
+    GET Individual VNF Package Content with Range Request
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Header Content-Type Is    application/zip    
 
-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    {"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.
-
-GET VNF Package Content - Negative (Not Found)
-    Log    Trying to perform a negative get, using an erroneous package ID
-    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
-
-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
-    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
-
-
-PUT VNF Package Content 
-    Log    Trying to perform a PUT. This method uploads the content of a VNF package.
-    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}
-    Integer    response status    202
-    Log    Received 202 Accepted as expected
-    Log    Verification of body. Should be empty
-    ${body}=    Output    response body
-    Should Be Empty    ${body}
-    Log    Verified empty body OK    
+GET Individual VNF Package Content with invalid Range Request
+    [Documentation]    Test ID: 5.3.5.4.4
+    ...    Test title: GET Individual VNF Package Content with invalid Range Request
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file.
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file
+    ...    Post-Conditions: none      
+    GET Individual VNF Package Content with invalid Range Request
+    Check HTTP Response Status Code Is    416
+    
+GET Individual VNF Package Content with invalid resource identifier
+    [Documentation]    Test ID: 5.3.5.4.5
+    ...    Test title: GET Individual VNF Package Content with invalid resource identifier
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
+    GET Individual VNF Package Content with invalid resource identifier
+    Check HTTP Response Status Code Is    404
 
+GET Individual VNF Package Content with conflict due to onboarding state
+    [Documentation]    Test ID: 5.3.5.4.6
+    ...    Test title: GET Individual VNF Package Content with conflict due to onboarding state
+    ...    Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED.
+    ...    Reference: section 9.4.5.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none   
+    GET Content for VNF Package in onboarding state different from ONBOARDED
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails
 
-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    {"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}
-    Integer    response status    409
-    Log    Received 409 Conflict as expected
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK
-    
+POST Individual VNF Package Content - Method not implemented
+    [Documentation]    Test ID: 5.3.5.4.7
+    ...    Test title: POST Individual VNF Package Content - Method not implemented
+    ...    Test objective: The objective is to test that POST method is not allowed to create new VNF Package content
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.5.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send POST Request for individual VNF Package Content
+    Check HTTP Response Status Code Is    405
 
-POST VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a POST (method should not be implemented)
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+Upload VNF Package Content
+    [Documentation]    Test ID: 5.3.5.4.8
+    ...    Test title: Upload VNF Package Content
+    ...    Test objective: The objective is to test the upload of a VNF Package Content in Zip format.
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO
+    Send PUT Request to upload VNF Package Content
+    Check HTTP Response Status Code Is    204
+    Check Postcondition VNF Package Content is uploaded and available in the NFVO
 
+Upload VNF Package Content with conflict due to onboarding state
+   [Documentation]    Test ID: 5.3.5.4.9
+    ...    Test title: Upload VNF Package Content with conflict due to onboarding state
+    ...    Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from ONBOARDED.
+    ...    Reference: section 9.4.5.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Send PUT Request to upload VNF Package Content with conflict due to onboarding state
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails    
 
-PATCH VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PATCH Individual VNF Package Content - Method not implemented
+    [Documentation]    Test ID: 5.3.5.4.10
+    ...    Test title: PATCH Individual VNF Package Content - Method not implemented
+    ...    Test objective: The objective is to test that PATCH  method is not allowed to update a VNF Package content
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for individual VNF Package Content
+    Check HTTP Response Status Code Is    405
 
-DELETE VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a DELETE. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+DELETE Individual VNF Package Content - Method not implemented
+    [Documentation]    Test ID: 5.3.5.4.11
+    ...    Test title: DELETE Individual VNF Package Content - Method not implemented
+    ...    Test objective: The objective is to test that DELETE  method is not allowed to delete a VNF Package content
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.5.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package content is not deleted by the failed operation
+    Send DELETE Request for individual VNF Package Content
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Content Exist
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
index 59f7d7bf29e30d039c6c04b10c7565550ee3fca3..97b4e7a76c4c53fee118ae860e7764b185b44499 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot
@@ -1,73 +1,85 @@
 *** Settings ***
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
-Resource          environment/vnfPackageContent.txt
+Resource          environment/vnfPackageContentViaUri.txt
+Resource          VNFPackageManagementKeywords.robot
 Library           JSONLibrary
 Library           OperatingSystem    
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-POST VNF Package Content 
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.6.3.1-1 and 9.4.6.3.1-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    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 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
-    ${response}=    Output    response body
-    Should Be Empty    ${response} 
+Upload VNF Package Content from URI
+    [Documentation]    Test ID: 5.3.5.5.1
+    ...    Test title: Upload VNF Package Content from URI
+    ...    Test objective: The objective is to test the upload of a VNF Package Content from URI.
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.6.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send POST Request to upload VNF Package Content from URI
+    Check HTTP Response Status Code Is    204
+    Check HTTP Response Body is Empty
 
+Upload VNF Package Content from URI with conflict due to onboarding state
+   [Documentation]    Test ID: 5.3.5.5.2
+    ...    Test title: Upload VNF Package Content from URI with conflict due to onboarding state
+    ...    Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from ONBOARDED.
+    ...    Reference: section 9.4.6.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Send POST Request to upload VNF Package Content from URI with conflict due to onboarding state
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is   ProblemDetails   
 
-POST VNF Package Content - Negative (VNF Package not in CREATED operational state)
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.6.3.1-1 and 9.4.6.3.1-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    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 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
-    Log    Trying to validate ProblemDetails
-    ${problemDetails}=    Output    response body
-    Validate Json    ProblemDetails.schema.json    ${problemDetails}
-    Log    Validation OK     
-    
-    
-GET VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a GET. This method should not be implemented
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgId}/package_content/upload_from_uri
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-    
-    
-PUT VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content/upload_from_uri
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
 
-PATCH VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content/upload_from_uri
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+GET Individual VNF Package Content from URI - Method not implemented
+    [Documentation]    Test ID: 5.3.5.5.3
+    ...    Test title: GET Individual VNF Package Content from URI - Method not implemented
+    ...    Test objective: The objective is to test that GET  method is not allowed to retrieve a VNF Package content from URI
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.6.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send GET Request for individual VNF Package Content from URI
+    Check HTTP Response Status Code Is    405
 
-DELETE VNF Package Content - (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a DELETE. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content/upload_from_uri
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+PUT Individual VNF Package Content from URI - Method not implemented
+    [Documentation]    Test ID: 5.3.5.5.4
+    ...    Test title: PUT Individual VNF Package Content from URI - Method not implemented
+    ...    Test objective: The objective is to test that PUT  method is not allowed to modify a VNF Package content from URI
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.6.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for individual VNF Package Content from URI
+    Check HTTP Response Status Code Is    405
+
+PATCH Individual VNF Package Content from URI - Method not implemented
+    [Documentation]    Test ID: 5.3.5.5.5
+    ...    Test title: PATCH Individual VNF Package Content - Method not implemented
+    ...    Test objective: The objective is to test that PATCH  method is not allowed to update a VNF Package content from URI
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.6.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for individual VNF Package Content from URI
+    Check HTTP Response Status Code Is    405
+
+DELETE Individual VNF Package Content from URI - Method not implemented
+    [Documentation]    Test ID: 5.3.5.5.6
+    ...    Test title: DELETE Individual VNF Package Content - Method not implemented
+    ...    Test objective: The objective is to test that DELETE  method is not allowed to delete a VNF Package content from URI
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.6.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package content is not deleted by the failed operation
+    Send DELETE Request for individual VNF Package Content from URI
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Package Content from URI Exist
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
index 77d83daa34042f3db81162f06c878f82cfbf3a0f..92e35285d3206537d470597285878682100468bc 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot
@@ -2,6 +2,13 @@
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
 Resource          environment/subscriptions.txt
+Resource          environment/vnfPackages.txt    # VNF Packages specific parameters
+Resource          environment/individualVnfPackage.txt
+Resource          environment/vnfdInIndividualVnfPackage.txt
+Resource          environment/vnfPackageContent.txt
+Resource          environment/vnfPackageContentViaUri.txt
+Resource          environment/vnfPackageArtifacts.txt
+Resource          environment/individualSubscription.txt
 Library           OperatingSystem
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}    ssl_verify=false
@@ -10,6 +17,677 @@ Library           MockServerLibrary
 
 
 *** Keywords ***
+Get all VNF Packages
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}   
+
+Check HTTP Response Body Does Not Contain softwareImages
+    Log    Checking that field element is missing
+    ${softwareImages}=    Get Value From Json    ${response['body']}    $..softwareImages
+    Should Be Empty    ${softwareImages}
+    Log    Element is empty as expected
+    
+Check HTTP Response Body Does Not Contain additionalArtifacts
+    Log    Checking that field element is missing
+    ${additionalArtifacts}=    Get Value From Json    ${response['body']}    $..additionalArtifacts
+    Should Be Empty    ${additionalArtifacts}
+    Log    Element is empty as expected
+    
+Check HTTP Response Body Does Not Contain userDefinedData 
+    Log    Checking that field element is missing
+    ${userDefinedData}=    Get Value From Json    ${response['body']}    $..userDefinedData
+    Should Be Empty    ${userDefinedData}
+    Log    Element is empty as expected
+
+Check HTTP Response Body Does Not Contain checksum
+    Log    Checking that field element is missing
+    ${checksum}=    Get Value From Json    ${response['body']}    $..checksum
+    Should Be Empty    ${checksum}
+    Log    Element is empty as expected    
+
+GET VNF Packages with attribute-based filter
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?${POS_FILTER}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Body VnfPkgsInfo Matches the requested Attribute-Based Filter
+    Log    Checking that attribute-based filter is matched
+    #todo
+
+GET VNF Packages with invalid attribute-based filter
+    Log    Trying to perform a negative get, filtering by the inexistent filter 'nfvId'
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?${NEG_FILTER}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get all VNF Packages with malformed authorization token
+    Pass Execution If    ${AUTH_USAGE} == 0    Skipping test as NFVO is not supporting authentication
+    Log    The GET method queries using invalid token
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Set Headers    {"Authorization": "${BAD_AUTHORIZATION}"}
+    Log    Execute Query and validate response
+    Get    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get all VNF Packages without authorization token
+    Pass Execution If    ${AUTH_USAGE} == 0    Skipping test as it is not supporting authentication
+    Log    The GET method queries omitting token
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Log    Execute Query and validate response
+    Get    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET VNF Packages with all_fields attribute selector
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?all_fields
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+   
+Check HTTP Response Body VnfPkgsInfo Matches the requested all_fields selector
+    Log    Trying to validate softwareImages schema
+    ${softwareImages}=    Get Value From Json    ${response['body']}    $..softwareImages
+    Validate Json    softwareImage.schema.json    ${softwareImages[0]}
+    Log    Validation for softwareImage schema OK
+    Log    Trying to validate additionalArtifacts schema
+    ${additional_artifacts}=    Get Value From Json    ${response['body']}    $..additionalArtifacts
+    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts[0]}
+    Log    Validation for additionalArtifacts schema OK
+    ${links}=    Get Value From Json    ${response['body']}    $.._links
+    Validate Json    links.schema.json    ${links[0]}
+    Log    Validation for _links schema OK
+
+GET VNF Packages with exclude_default attribute selector
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using exclude_default filter.
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?exclude_default   
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Body VnfPkgsInfo Matches the requested exclude_default selector
+    Log    Checking missing information for softwareImages element
+    ${softwareImages}=    Get Value From Json    ${response['body']}    $..softwareImages
+    Should Be Empty    ${softwareImages}
+    Log    softwareImages element is missing as excepted
+    Log    Checking missing information for additionalArtifact element
+    ${additional_artifacts}=    Get Value From Json    ${response['body']}    $..additionalArtifacts
+    Should Be Empty    ${additional_artifacts}
+    Log    additionalArtifact element is missing as excepted
+
+GET VNF Packages with fields attribute selector
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using fields
+    Pass Execution If    ${NFVO_FIELDS} == 0    The NFVO is not able to use fields parameter
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?fields=${fields}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Body vnfPkgsInfo Matches the requested fields selector
+    Log    Trying to validate softwareImages schema
+    ${softwareImages}=    Get Value From Json    ${response['body']}    $..softwareImages
+    Validate Json    softwareImage.schema.json    ${softwareImages[0]}
+    Log    Validation for softwareImage schema OK
+    Log    Trying to validate additionalArtifacts schema
+    ${additional_artifacts}=    Get Value From Json    ${response['body']}    $..additionalArtifacts
+    Validate Json    additionalArtifacts.schema.json    ${additional_artifacts[0]}
+    Log    Validation for additionalArtifacts schema OK
+    
+GET VNF Packages with exclude_fields attribute selector
+    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using fields
+    Pass Execution If    ${NFVO_FIELDS} == 0    The NFVO is not able to use fields parameter
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?exclude_fields=${fields}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_fields selector
+    Log    Checking missing information for softwareImages element
+    ${softwareImages}=    Get Value From Json    ${response['body']}    $..softwareImages
+    Should Be Empty    ${softwareImages}
+    Log    softwareImages element is missing as excepted
+    Log    Checking missing information for additionalArtifact element
+    ${additional_artifacts}=    Get Value From Json    ${response['body']}    $..additionalArtifacts
+    Should Be Empty    ${additional_artifacts}
+    Log    additionalArtifact element is missing as excepted
+
+GET all VNF Packages with invalid resource endpoint
+    Log    Trying to perform a GET on a erroneous URI
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_package
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send Post Request to create new VNF Package Resource
+    Log    Creating a new VNF Package
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Set Headers    {"Content-Type": "${CONTENT_TYPE_JSON}"}
+    ${body}=    Get File    jsons/CreateVnfPkgInfoRequest.json
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Check Postcondition VNF Package Resource Exists
+    Log    Checking that nsd info exists
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${response['body']['id']}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is    vnfPkgInfo
+
+Send PUT Request for all VNF Packages
+    Log    Trying to perform a PUT (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PATCH Request for all VNF Packages
+    Log    Trying to perform a PATCH (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send DELETE Request for all VNF Packages
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Packages Exist
+    Log    Checking that Pm Job still exists
+    GET all VNF Packages
+
+GET Individual VNF Package
+    Log    Trying to get a VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package
+    Log    Going to validate pacakge info retrieved
+    Should Be Equal    ${response['body']['id']}    ${vnfPackageId} 
+    Log    Pacakge identifier as expected
+
+GET Individual VNF Package with invalid resource identifier
+    Log    Trying to perform a negative get, using wrong authorization bearer
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send POST Request for individual VNF Package
+    Log    Trying to perform a POST (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PUT Request for individual VNF Package
+    Log    Trying to perform a PUT (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+ 
+Send PATCH to disable Individual VNF Package
+    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}"}
+    ${body}=    Get File    jsons/NsdInfoModificationDisable.json
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package is in operational state
+    [Arguments]    ${status}
+    Log    Checking postcondition op status
+    Should Be Equal As Strings   ${response['body']['operationalState']}    ${status} 
+
+Send PATCH to enable Individual VNF Package
+    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}"}
+    ${body}=    Get File    jsons/NsdInfoModificationEnable.json
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send DELETE Request for individual VNF Package
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${disabledVnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package is Deleted
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${disabledVnfPackageId}
+    Integer    response status    404
+
+Send DELETE Request for Individual VNF Package in operational state ENABLED
+    Log    Trying to perform a DELETE nsdInfo in ENABLED operational state
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Exists
+    Log    Checking that vnf pacakge still exists
+    GET Individual VNF Package
+
+Send DELETE Request for Individual VNF Package used for instantiated VNF instances
+    Log    Trying to perform a DELETE nsdInfo in ENABLED operational state
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${instantiatedVnfPackageId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Get single file VNFD in Individual VNF Package in Plain Format
+    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Get VNFD in Individual VNF Package in Zip Format
+    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Get single file VNFD in Individual VNF Package in Plain or Zip Format
+    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+Get multi file VNFD in Individual VNF Package in Plain or Zip Format
+    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Check HTTP Response Header Content-Type Is Any of
+    [Arguments]   ${header1}    ${header2}
+    Should Contain Any  ${response['headers']['Content-Type']}    ${header1}    ${header2}
+
+Get multi file VNFD in Individual VNF Package in Plain Format
+    Log    Trying to get a negative case performing a get on a VNFD from a given VNF Package present in the NFVO Catalogue. Accept will be text/plain but VNFD is composed my multiple files.
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Get VNFD in Individual VNF Package with invalid resource identifier
+    Log    Trying to perform a negative get, using an erroneous package ID
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Get VNFD in Individual VNF Package with conflict due to onboarding state 
+    Log    Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Send POST Request for VNFD in individual VNF Package
+    Log    Trying to perform a POST. This method should not be implemented
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Send PUT Request for VNFD in individual VNF Package
+    Log    Trying to perform a PUT. This method should not be implemented
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+    
+Send PATCH Request for VNFD in individual VNF Package
+    Log    Trying to perform a PATCH. This method should not be implemented
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Send DELETE Request for VNFD in individual VNF Package
+    Log    Trying to perform a DELETE. This method should not be implemented
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Check Postcondition VNFD Exist
+    Log    Checking that vnf pacakge still exists
+    Set Headers    {"Accept": "${ACCEPT_PLAIN}"}
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd
+    Check HTTP Response Status Code Is    200
+
+GET Individual VNF Package Content  
+    Log    Trying to get a VNF Package Content
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Header Content-Type Is
+    [Arguments]   ${header}
+    Should Contain    ${response['headers']['Content-Type']}    ${header}
+
+GET Individual VNF Package Content with Range Request
+    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_ZIP}"}
+    Set Headers    {"Range": "${range}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check HTTP Response Header Content-Range Is Present and Matches the requested range
+    Log    Check Content-Range HTTP Header
+    Should Contain    ${response['headers']}    Content-Range
+    Should Be Equal As Strings    ${response['headers']['Content-Range']}    ${range}
+    Log    Header Content-Range is present
+    
+Check HTTP Response Header Content-Length Is Present and Matches the requested range length
+    Log    Check Content-Length HTTP Header
+    Should Contain    ${response['headers']}    Content-Length
+    Should Be Equal As Integers    ${response['headers']['Content-Length']}    ${length}
+    Log    Header Content-Length is present
+
+GET Individual VNF Package Content with invalid Range Request
+    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_ZIP}"}
+    Set Headers    {"Range": "${erroneousRange}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET Individual VNF Package Content with invalid resource identifier
+    Log    Trying to perform a negative get, using an erroneous package ID
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET Content for VNF Package in onboarding state different from ONBOARDED
+    Log    Trying to get a VNF Package content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send POST Request for individual VNF Package Content
+    Log    Trying to perform a POST (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PUT Request for individual VNF Package Content
+    Log    Trying to perform a PUT (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PUT Request to upload VNF Package Content
+    Log    Trying to perform a PUT. This method upload the content of a NSD
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    ${body}=  Get Binary File     files/vnfPackage.zip
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content    ${body}
+    ${response}=    Output    response body
+    Should Be Empty    ${response} 
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Content is uploaded and available in the NFVO
+    Log    Trying to get a VNF Package Content
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${newVnfPackageId}/package_content
+    Integer    response status    200
+ 
+Send PUT Request to upload VNF Package Content with conflict due to onboarding state
+    Log    Trying to perform a PUT. This method upload the content of a NSD
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    ${body}=  Get Binary File  files/vnfPackage.zip
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/ns_descriptors/${creatingVnfPackageId}/nsd_content    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+ 
+Send PATCH Request for individual VNF Package Content
+    Log    Trying to perform a PATCH (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send DELETE Request for individual VNF Package Content
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/package_content
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Content Exist
+    Log    Checking that vnf pacakge still exists
+    GET Individual VNF Package Content
+    Check HTTP Response Status Code Is    200
+    
+GET Individual VNF Package Artifact
+    Log    Trying to get a VNF Package Artifact
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET Individual VNF Package Artifact in octet stream format  
+    Log    Trying to get a VNF Package Artifact
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET Individual VNF Package Artifact with Range Request
+    Log    Trying to get an Artifact using RANGE Header and 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    {"Range": "${range}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+GET Individual VNF Package Artifact with invalid Range Request
+    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_ZIP}"}
+    Set Headers    {"Range": "${erroneousRange}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+ 
+GET Individual VNF Package Artifact with invalid resource identifier
+    Log    Trying to perform a negative get, using an erroneous package ID
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+GET Artifact for VNF Package in onboarding state different from ONBOARDED
+    Log    Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send POST Request for individual VNF Package Artifact
+    Log    Trying to perform a POST (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PUT Request for individual VNF Package Artifact
+    Log    Trying to perform a PUT (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+ 
+Send PATCH Request for individual VNF Package Artifact
+    Log    Trying to perform a PATCH (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send DELETE Request for individual VNF Package Artifact
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Artifact Exist
+    Log    Checking that vnf pacakge still exists
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath}
+    Check HTTP Response Status Code Is    200
+
+Send POST Request to upload VNF Package Content from URI
+    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 File    jsons/UploadVnfPkgFromUriRequest.json
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send POST Request to upload VNF Package Content from URI with conflict due to onboarding state
+    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 File    jsons/UploadVnfPkgFromUriRequest.json
+    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri    ${body}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output} 
+
+Send GET Request for individual VNF Package Content from URI
+    Log    Trying to perform a PATCH (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PUT Request for individual VNF Package Content from URI
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send PATCH Request for individual VNF Package Content from URI
+    Log    Trying to perform a PATCH (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send DELETE Request for individual VNF Package Content from URI
+    Log    Trying to perform a DELETE (method should not be implemented)
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Content from URI Exist
+    Log    Checking that vnf pacakge still exists
+    Set Headers    {"Accept": "${ACCEPT_ZIP}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages/${vnfPkgViaUriId}
+    Integer    response status    200
+
 Get all VNF Package Subscriptions
     Log    Trying to get the list of subscriptions
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
@@ -17,29 +695,14 @@ Get all VNF Package Subscriptions
     GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
     ${output}=    Output    response
     Set Suite Variable    ${response}    ${output}
-    # Integer    response status    200
-    # Log    Received a 200 OK as expected
-    # ${contentType}=    Output    response headers Content-Type
-    # Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    # ${result}=    Output    response body
-    # Validate Json    PkgmSubscriptions.schema.json    ${result}
-    # Log    Validated PkgmSubscription schema
 
 Get VNF Package Subscriptions with attribute-based filters
     Log    Trying to get the list of subscriptions using filters
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ok}
-    # Integer    response status    200
-    # Log    Received a 200 OK as expected
-    # ${contentType}=    Output    response headers Content-Type
-    # Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    # ${result}=    Output    response body
-    # Validate Json    PkgmSubscriptions.schema.json    ${result}
-    # Log    Validated PkgmSubscription schema
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-
+    Set Suite Variable    ${response}    ${output}    
 
 Get VNF Package Subscriptions with invalid attribute-based filters
     Log    Trying to get the list of subscriptions using filters with wrong attribute name
@@ -47,32 +710,15 @@ Get VNF Package Subscriptions with invalid attribute-based filters
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${filter_ko}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    # Integer    response status    400
-    # Log    Received a 400 Bad Request 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
-
-
+    Set Suite Variable    ${response}    ${output} 
+    
 Get VNF Package Subscriptions with invalid resource endpoint
     Log    Trying to perform a request on a Uri which doesn't exist
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     GET    ${apiRoot}/${apiName}/${apiVersion}/subscription
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
-    # 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
+    Set Suite Variable    ${response}    ${output} 
 
 Send Post Request for VNF Package Subscription
     Log    Trying to create a new subscription
@@ -82,49 +728,158 @@ Send Post Request for VNF Package Subscription
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     POST    ${apiRoot}/${apiName}/${apiVersion}/subscriptions    ${body}
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}
+    Set Suite Variable    ${response}    ${output} 
     Run Keyword If    ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1
     ...       Check Notification Endpoint
 
-
 Send Post Request for Duplicated VNF Package Subscription
     Log    Trying to create a subscription with an already created content
-    Send Post Request for VNF Package Subscription
-
+    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} 
 
 Send Put Request for VNF Package Subscriptions
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
     Log    Trying to perform a PUT. This method should not be implemented
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PUT    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}    
-    # Integer    response status    405
-    # Log    Received 405 Method not implemented as expected
+    Set Suite Variable    ${response}    ${output} 
 
 Send Patch Request for VNF Package Subscriptions
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
     Log    Trying to perform a PATCH. This method should not be implemented
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     PATCH    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}  
-    # Integer    response status    405
-    # Log    Received 405 Method not implemented as expected
+    Set Suite Variable    ${response}    ${output} 
 
 Send Delete Request for VNF Package Subscriptions
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
     Log    Trying to perform a DELETE. This method should not be implemented
     Set Headers    {"Accept": "${ACCEPT_JSON}"}
     Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
     DELETE    ${apiRoot}/${apiName}/${apiVersion}/subscriptions
     ${output}=    Output    response
-    Set Suite Variable    ${response}    ${output}  
-    # Integer    response status    405
-    # Log    Received 405 Method not implemented as expected
+    Set Suite Variable    ${response}    ${output} 
 
+Check Postcondition VNF Package Subscriptions Exists
+    Log    Checking that subscriptions exists
+    Get all VNF Package Subscriptions    
+
+Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued 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']}
+
+
+Check Postcondition VNF Package Subscription Is Set
+    [Arguments]    ${location}=""
+    Log    Check Postcondition subscription exist
+    Log    Trying to get the subscription
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    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
+
+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']}
+    Integer    response status    200
+    Log    Received a 200 OK as expected
+    ${contentType}=    Output    response headers Content-Type
+    Should Contain    ${contentType}    application/json
+    ${result}=    Output    response body
+    Validate Json    PkgmSubscription.schema.json    ${result}
+    Log    Validated PkgmSubscription schema   
+
+Get Individual VNF Package Subscription
+    Log    Trying to get a single subscription identified by subscriptionId
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+    
+GET individual VNF Package Subscription with invalid resource identifier
+    Log    Trying to perform a request on a subscriptionID which doesn't exist
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send Delete request for individual VNF Package Subscription
+    Log    Trying to perform a DELETE on a subscriptionId
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Check Postcondition VNF Package Subscription is Deleted
+    Log    Check Postcondition Subscription is deleted
+    GET individual VNF Package Subscription
+    Check HTTP Response Status Code Is    404 
+
+Send Delete request for individual VNF Package Subscription with invalid resource identifier
+    Log    Trying to perform a DELETE on a subscriptionId which doesn't exist
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    DELETE    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    ${response}    ${output}
+
+Send Post request for individual VNF Package Subscription
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    POST    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+
+Send Put request for individual VNF Package Subscription
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${origOutput}=    Output    response
+    Set Suite Variable    ${origResponse}    ${origOutput}
+    PUT    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    
+Send Patch request for individual VNF Package Subscription
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": ${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${origOutput}=    Output    response
+    Set Suite Variable    ${origResponse}    ${origOutput}
+    PATCH    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+   
+Check Postcondition VNF Package Subscription is Unmodified (Implicit)
+    Log    Check postconidtion subscription not modified
+    GET individual VNF Package 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}
+
+Check Postcondition VNF Package Subscription is not Created
+    Log    Trying to get a new subscription
+    Set Headers    {"Accept": "${ACCEPT_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId}
+    ${output}=    Output    response
+    Set Suite Variable    @{response}    ${output}
+    Check HTTP Response Status Code Is    404
 
 Create Sessions
     Pass Execution If    ${NFVO_CHECKS_NOTIF_ENDPOINT} == 0    MockServer not started as NFVO is not checking the notification endpoint
@@ -150,6 +905,10 @@ Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filte
     Log    Check Response includes VNF Package Management according to filter
     #TODO
 
+Check HTTP Response Body Subscription Identifier matches the requested Subscription
+    Log    Trying to check response ID
+    Should Be Equal    ${response['body']['id']}    ${subscriptionId} 
+    Log    Subscription identifier as expected
 
 Check Notification Endpoint
     &{notification_request}=  Create Mock Request Matcher	GET  ${callback_endpoint}    
@@ -165,20 +924,7 @@ Check HTTP Response Body Matches the Subscription
     ${subscription}=    evaluate    json.loads('''${body}''')    json
     Should Be Equal As Strings    ${response['body']['callbackUri']}    ${subscription['callbackUri']}
     
-    
-Check Postcondition VNF Package Subscription Is Set
-    [Arguments]    ${location}=""
-    Log    Check Postcondition subscription exist
-    Log    Trying to get the subscription
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    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
+ 
     
     
 Check HTTP Response Body Is Empty
diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot
index a307e0dbb8186f94b4a4cbcda2755d72899d8f1c..9f07ac4a717cdd3ea71481bb80c59857b3769939 100644
--- a/SOL005/VNFPackageManagement-API/VNFPackages.robot
+++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot
@@ -2,233 +2,196 @@
 Resource          environment/vnfPackages.txt    # VNF Packages specific parameters
 Library           JSONSchemaLibrary    schemas/
 Resource          environment/variables.txt    # Generic Parameters
+Resource          VNFPackageManagementKeywords.robot    
 Library           JSONLibrary
 Library           REST    ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT}
 
 *** Test Cases ***
-GET all Packages
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.2.3.1-1 and 9.4.2.3.1-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate response
-    ${result}=    Output    response body
-    Validate Json    vnfPkgsInfo.schema.json    ${result}
-    Log    Validation OK
-    Log    Checking missing information for softwareImages element
-    ${softwareImages}=    Get Value From Json    ${result}    $..softwareImages
-    Should Be Empty    ${softwareImages}
-    Log    softwareImages element is missing as excepted
-    Log    Checking missing information for additionalArtifact element
-    ${additional_artifacts}=    Get Value From Json    ${result}    $..additionalArtifacts
-    Should Be Empty    ${additional_artifacts}
-    Log    additionalArtifact element is missing as excepted
-
-
-GET all Packages - Filter
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?${POS_FIELDS}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    Log    Trying to validate response
-    ${result}=    Output    response body
-    Validate Json    vnfPkgsInfo.schema.json    ${result}
-    Log    Validation OK
-
-GET all Packages - Negative (wronge filter name)
-    Log    Trying to perform a negative get, filtering by the inexistent field 'nfvId'
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?${NEG_FIELDS}
-    Integer    response status    400
-    Log    Received 400 Bad Request 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 all Packages - Negative (Unauthorized: Wrong Token)
-    Log    Trying to perform a negative get, using wrong authorization bearer
-    Pass Execution If    ${AUTH_USAGE} == 0    Skipping test as NFVO is not supporting authentication
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Set Headers    {"Authorization": "${NEG_AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    401
-    Log    Received 401 Unauthorized 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 all Packages - Negative (Unauthorized: No Token)
-    Log    Trying to perform a negative get, using wrong authorization bearer
-    Pass Execution If    ${AUTH_USAGE} == 0    Skipping test as NFVO is not supporting authentication
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    401
-    Log    Received 401 Unauthorized 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 all Packages - all_fields
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?all_fields
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    ${vnfPkgInfos}=    Output    response body
-    Log    Trying to validate response
-    Validate Json    vnfPkgsInfo.schema.json    ${vnfPkgInfos}
-    Log    Validation OK
-    Log    Trying to validate softwareImages schema
-    ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    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}
-    Log    Validation for additionalArtifacts schema OK
-    ${links}=    Get Value From Json    ${vnfPkgInfos}    $.._links
-    Validate Json    links.schema.json    ${links}
-    Log    Validation for _links schema OK
-
-GET all Packages - exclude_default
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using exclude_default filter.
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?exclude_default
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    ${vnfPkgInfos}=    Output    response body
-    Log    Trying to validate response
-    Validate Json    vnfPkgsInfo.schema.json    ${vnfPkgInfos}
-    Log    Validation OK
-    Log    Checking missing information for softwareImages element
-    ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    Should Be Empty    ${softwareImages}
-    Log    softwareImages element is missing as excepted
-    Log    Checking missing information for additionalArtifact element
-    ${additional_artifacts}=    Get Value From Json    ${vnfPkgInfos}    $..additionalArtifacts
-    Should Be Empty    ${additional_artifacts}
-    Log    additionalArtifact element is missing as excepted
-
-
-GET all Packages - fields
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
-    Pass Execution If    ${NFVO_FIELDS} == 0    The NFVO is not able to use fields parameter
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?fields=${fields}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    ${vnfPkgInfos}=    Output    response body
-    Log    Trying to validate response, checking vnfPkgInfo and other complex attributes included in the vnfPkgInfo
-    Validate Json    vnfPkgsInfo.schema.json    ${vnfPkgInfos}
-    Log    Validation for vnfPkgInfo OK
-    Log    Trying to validate softwareImages schema
-    ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    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}
-    Log    Validation for additionalArtifacts schema OK
-
-GET all Packages - exclude_fields
-    Log    Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
-    Pass Execution If    ${NFVO_FIELDS} == 0    The NFVO is not able to use exclude_fields option
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages?exclude_fields=${fields}
-    Integer    response status    200
-    ${contentType}=    Output    response headers Content-Type
-    Should Contain    ${contentType}    ${CONTENT_TYPE_JSON}
-    ${vnfPkgInfos}=    Output    response body
-    Log    Checking missing information for softwareImages element
-    ${softwareImages}=    Get Value From Json    ${vnfPkgInfos}    $..softwareImages
-    Should Be Empty    ${softwareImages}
-    Log    softwareImages element is missing as excepted
-    Log    Checking missing information for additionalArtifact element
-    ${additional_artifacts}=    Get Value From Json    ${vnfPkgInfos}    $..additionalArtifacts
-    Should Be Empty    ${additional_artifacts}
-    Log    additionalArtifact element is missing as excepted
-
-GET all PACKAGE (Negative: Not found)
-    Log    Trying to perform a GET on a erroneous URI
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    GET    ${apiRoot}/${apiName}/${apiVersion}/vnf_package
-    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
-
-POST all VNF PACKAGE
-    [Documentation]    This method shall follow the provisions specified in the Tables 9.4.2.3.1-1 and 9.4.2.3.1-2 for URI query parameters,
-    ...    request and response data structures, and response codes.
-    Log    Trying to perform a POST to create a new individual VNF package resource
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    ${body}=    Load JSON From File    jsons/CreateVnfPkgInfoRequest.json
-    POST    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages    ${body}
-    Integer    response status    201
-    Log    Received 201 Created as expected
-    Log    Trying to get Location from the header
-    ${location}=    Output    response headers Location
-    Should Not Be Empty    ${location}
-    Log    Validation of Location headers OK
-    Log    Validation of the vnfPkgInfo schema
-    ${vnfPkgInfo}=    Output    response body
-    Log    Trying to validate response
-    Validate Json    vnfPkgInfo.schema.json    ${vnfPkgInfo}
-
-PUT all PACKAGE (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PUT. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PUT    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-PATCH all PACKAGE (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a PATCH. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    PATCH    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
-
-DELETE all PACKAGE (Method not implemented)
-    Pass Execution If    ${testOptionalMethods} == 0    optional methods are not implemented on the FUT. Skipping test.
-    Log    Trying to perform a DELETE. This method should not be implemented
-    Set Headers    {"Accept": "${ACCEPT_JSON}"}
-    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization": "${AUTHORIZATION}"}
-    DELETE    ${apiRoot}/${apiName}/${apiVersion}/vnf_packages
-    Integer    response status    405
-    Log    Received 405 Method not implemented as expected
+GET all VNF Packages
+    [Documentation]    Test ID: 5.3.5.1.1
+    ...    Test title: GET all VNF Packages
+    ...    Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET all VNF Packages
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body Does Not Contain softwareImages
+    Check HTTP Response Body Does Not Contain additionalArtifacts
+    Check HTTP Response Body Does Not Contain userDefinedData
+    Check HTTP Response Body Does Not Contain checksum
+
+GET VNF Packages with attribute-based filter
+    [Documentation]    Test ID: 5.3.5.1.2
+    ...    Test title: GET VNF Packages with attribute-based filter
+    ...    Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET VNF Packages with attribute-based filter
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body VnfPkgsInfo Matches the requested attribute-based filter
+
+GET VNF Packages with invalid attribute-based filter
+    [Documentation]    Test ID: 5.3.5.1.3
+    ...    Test title: GET VNF Packages with invalid attribute-based filter
+    ...    Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET VNF Packages with invalid attribute-based filter
+    Check HTTP Response Status Code Is    400
+    Check HTTP Response Body Json Schema Is   ProblemDetails
+
+Get all VNF Packages with malformed authorization token
+    [Documentation]    Test ID: 5.3.5.1.4
+    ...    Test title: Get all VNF Packages Information with malformed authorization token
+    ...    Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO.
+    ...    Reference: section 4.5.3.3, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO requires the usage of access tokens for authorizing the API requests.
+    ...    Post-Conditions: none
+    Get all VNF Packages with malformed authorization token
+    Check HTTP Response Status Code Is    400
+
+Get all VNF Packages without authorization token
+    [Documentation]    Test ID: 5.3.1.1.5
+    ...    Test title: Get all VNF Packages without authorization token
+    ...    Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token
+    ...    Pre-conditions: One or more VNF Packages are onboarded in the NFVO.
+    ...    Reference: section 4.5.3.3, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The NFVO requires the usage of access tokens for authorizing the API requests.
+    ...    Post-Conditions: none
+    Get all VNF Packages without authorization token
+    Check HTTP Response Status Code Is    401
+
+GET VNF Packages with "all_fields" attribute selector
+    [Documentation]    Test ID: 5.3.5.1.6
+    ...    Test title: GET VNF Packages with "all_fields" attribute selector
+    ...    Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 4.3.3.2.1, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none    
+    GET VNF Packages with all_fields attribute selector
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body vnfPkgsInfo Matches the requested all_fields selector
+
+GET VNF Packages with "exclude_default" attribute selector
+    [Documentation]    Test ID: 5.3.5.1.7
+    ...    Test title: GET VNF Packages with exclude_default attribute selector
+    ...    Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 4.3.3.2.1, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none        
+    GET VNF Packages with exclude_default attribute selector
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_default selector
+
+GET VNF Packages with "fields" attribute selector
+    [Documentation]    Test ID: 5.3.5.1.8
+    ...    Test title: GET VNF Packages with fields attribute selector
+    ...    Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 4.3.3.2.1, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFM supports the use of fields attribute selector
+    ...    Post-Conditions: none
+    GET VNF Packages with fields attribute selector
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body vnfPkgsInfo Matches the requested fields selector
+
+GET VNF Packages with "exclude_fields" attribute selector
+    [Documentation]    Test ID: 5.3.5.1.9
+    ...    Test title: GET VNF Packages with exclude_fields attribute selector
+    ...    Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 4.3.3.2.1, 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: The VNFM supports the use of exclude_fields attribute selector
+    ...    Post-Conditions: none
+    GET VNF Packages with exclude_fields attribute selector
+    Check HTTP Response Status Code Is    200
+    Check HTTP Response Body Json Schema Is   vnfPkgsInfo
+    Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_fields selector   
+
+GET all VNF Packages with invalid resource endpoint
+    [Documentation]    Test ID: 5.3.5.1.10
+    ...    Test title: GET VNF Packages with invalid resource endpoint
+    ...    Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.2 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    GET all VNF Packages with invalid resource endpoint
+    Check HTTP Response Status Code Is    404
+
+Create new VNF Package Resource
+    [Documentation]    Test ID: 5.3.5.1.11
+    ...    Test title: Create new VNF Package Resource
+    ...    Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure
+    ...    Pre-conditions: none
+    ...    Reference: section 9.4.2.3.1 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Package Resource is successfully created on the NFVO
+    Send Post Request to create new VNF Package Resource
+    Check HTTP Response Status Code Is    201
+    Check HTTP Response Body Json Schema Is   vnfPkgInfo
+    Check HTTP Response Header Contains    Location
+    Check Postcondition VNF Package Resource Exists
+
+PUT all VNF Packages - Method not implemented
+    [Documentation]    Test ID: 5.3.5.1.12
+    ...    Test title: PUT all VNF Packages - Method not implemented
+    ...    Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.3 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PUT Request for all VNF Packages
+    Check HTTP Response Status Code Is    405
+
+PATCH all VNF Packages - Method not implemented
+    [Documentation]    Test ID: 5.3.5.1.13
+    ...    Test title: PATCH all VNF Packages - Method not implemented
+    ...    Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.4 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: none
+    Send PATCH Request for all VNF Packages
+    Check HTTP Response Status Code Is    405
+
+DELETE all VNF Packages - Method not implemented
+    [Documentation]    Test ID: 5.3.5.1.14
+    ...    Test title: DELETE all VNF Packages - Method not implemented
+    ...    Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages
+    ...    Pre-conditions: One or more VNF packages are onboarded in the NFVO.
+    ...    Reference: section 9.4.2.3.5 - SOL005 v2.4.1
+    ...    Config ID: Config_prod_NFVO
+    ...    Applicability: none
+    ...    Post-Conditions: The VNF Packages are not deleted by the failed operation
+    Send DELETE Request for all VNF Packages
+    Check HTTP Response Status Code Is    405
+    Check Postcondition VNF Packages Exist
+    
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt b/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt
index 23ed0f47d08c9d255fe751a1ea46b909d80e0e49..78c7b91b436411ec93240864274e0912381ef171 100644
--- a/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt
+++ b/SOL005/VNFPackageManagement-API/environment/individualSubscription.txt
@@ -1,3 +1,7 @@
 *** Variables ***
 ${subscriptionId}    f3ae6df7-07e1-47c9-8924-9ebe10343586
 ${erroneousSubscriptionId}    442e3ee5-0499-4849-9b31-eb91ce1638f1    # Not existing ID on the subscriptions
+${newSubscriptionId}    newSubsciptionId
+${response}    httpresponse
+${origResponse}    httpresponse
+
diff --git a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt
index a3edf10677ba23f74f15db40c12bf04c9dedb26c..23b0dd07b95fb53b3a1022e25b0b003eb8e46d2a 100644
--- a/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt
+++ b/SOL005/VNFPackageManagement-API/environment/individualVnfPackage.txt
@@ -1,3 +1,5 @@
 *** Variables ***
 ${erroneousVnfPackageId}    erroneousVnfPackageId    # Given ID for vnfPkg not present in database
 ${disabledVnfPackageId}    87a2c9d3-00ea-4032-8c67-a5106d001868
+${vnfPackageId}  788106a2-d692-44f3-a86d-384f0ce35e42
+${instantiatedVnfPackageId}  0b79bab50daca910b000d4f1a2b675d604257e42
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/environment/subscriptions.txt b/SOL005/VNFPackageManagement-API/environment/subscriptions.txt
index 63a33d5e2793dbc9a0b45208cbed87f5e5bd696a..cddf01eefe53be9d8ba95fe114462d481e56e156 100644
--- a/SOL005/VNFPackageManagement-API/environment/subscriptions.txt
+++ b/SOL005/VNFPackageManagement-API/environment/subscriptions.txt
@@ -1,4 +1,6 @@
 *** Variables ***
-${filter_ok}      callbackUri=http://127.0.0.1/subscription
+${filter_ok}      callbackUri=http://172.22.1.7:9091/vnfpkgm/subscriptions
 ${filter_ko}      nfvId=f9f130e4-05eb-4082-a676-4c97d13a883d    # Not existant filter attribute-based
-${NFVO_DUPLICATION}    0
+${callbackUri}    http://172.22.1.7:9091/vnfpkgm/subscriptions
+${total_polling_time}   2 min
+${polling_interval}     10 sec
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/environment/variables.txt b/SOL005/VNFPackageManagement-API/environment/variables.txt
index 31153eecbb736c24d98b685f9536e37aa9b26464..926291098db64c9abd3595dc64243fea40c2cfe4 100644
--- a/SOL005/VNFPackageManagement-API/environment/variables.txt
+++ b/SOL005/VNFPackageManagement-API/environment/variables.txt
@@ -14,7 +14,6 @@ ${apiName}        vnfpkgm
 ${FIELD_USAGE}    1
 ${NFVO_PLAIN}     1
 ${NFVO_FIELDS}    1
-${vnfPackageId}  788106a2-d692-44f3-a86d-384f0ce35e42
 ${onboardingStateVnfPkgId}    788106a2-d692-44f3-a86d-384f0ce35e42    # The VNF Package is in CREATED onboardingState
 
 ${testOptionalMethods}    0
diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt
index 5a60df8b493c9bcdf1913745a118e02a588af163..4acfbd727d6a975eb3da974c81a9cb1f7b7e397f 100644
--- a/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt
+++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageArtifacts.txt
@@ -1,10 +1,8 @@
 *** Variables ***
-${ACCEPT_ZIP}     application/zip
-${CONTENT_TYPE_ZIP}    application/zip
-${NFVO_RANGE_OK}    1    # If 1 means that Range is supported by the NFVO
-${erroneousVnfPkgId}    erroneousPkgId
-${vnfPkgId}       788106a2-d692-44f3-a86d-384f0ce35e42
-${erroneousRange}    bytes=100000-1000000    # Requesting a out of range number of bytes
-${range}          bytes=0-1023
 ${artifactPath}    artifactPath
 ${CONTENT_TYPE_OCTET}    application/octet-stream
+${NFVO_RANGE_OK}    1    # If 1 means that Range is supported by the NFVO
+${range}          bytes=0-1023
+${erroneousRange}    bytes=10000000-1000000000    # Requesting a out of range number of bytes
+${erroneousVnfPkgId}    erroneousPkgId
+${vnfPackageOctetStreamId}    octetStreamPkgId
\ No newline at end of file
diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt
index 419863ea5e5ce96d248ed5c54ecc400643d32a7a..c775a126d8f2e4031134feb00028a2358f32d2ce 100644
--- a/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt
+++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContent.txt
@@ -6,4 +6,7 @@ ${erroneousVnfPkgId}    erroneousPkgId
 ${vnfPkgId}       788106a2-d692-44f3-a86d-384f0ce35e42
 ${erroneousRange}    bytes=100000-1000000    # Requesting a out of range number of bytes
 ${range}          bytes=0-1023
+${length}          1024
 ${creatingVnfPackageId}    d246ccdd-71aa-402f-b256-6a80ee54be3d
+${newVnfPackageId}    d246ccdd-71aa-402f-b256-6a80ee54be3d
+
diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9cb902861d34f0dc7c909832c489dc7a8cea5309
--- /dev/null
+++ b/SOL005/VNFPackageManagement-API/environment/vnfPackageContentViaUri.txt
@@ -0,0 +1,4 @@
+*** Variables ***
+${vnfPkgViaUriId}       788106a2-d692-44f3-a86d-384f0ce35e42
+${creatingVnfPkgViaUriId}    d246ccdd-71aa-402f-b256-6a80ee54be3d
+
diff --git a/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt b/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt
index abba82a85d0853d05410703d0a856976bb4cf47c..e7e4eecb25a1a067e01debded892d11d73e24771 100644
--- a/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt
+++ b/SOL005/VNFPackageManagement-API/environment/vnfPackages.txt
@@ -1,5 +1,8 @@
 *** Variables ***
-${POS_FIELDS}     vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8&vnfProvider=NXW    # Positive case, suing compiant fields name for filtering get request
-${NEG_FIELDS}     nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Negative case, using wrong name of field
+${POS_FILTER}     vnfdId=41fdd38a-3d4c-465c-83e0-f80e014425f8&vnfProvider=NXW    # Positive case, suing compiant fields name for filtering get request
+${NEG_FILTER}     nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8    # Negative case, using wrong name of field
 ${CAN_FILTER}     1    # NFVO in able to use filters when retrieving VNF Packages
 ${fields}         softwareImages,additionalArtifacts
+${response}       httpresponse
+${NEG_AUTHORIZATION}    Bearer negativetoken
+${BAD_AUTHORIZATION}    Bear sometoken
diff --git a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt b/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt
index 519a2794c895f3b11a61e4e202a90d4c4a0ca72f..8e228037e47c58578d936e9e1485308add7406d2 100644
--- a/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt
+++ b/SOL005/VNFPackageManagement-API/environment/vnfdInIndividualVnfPackage.txt
@@ -9,3 +9,4 @@ ${vnfPkgPlainVNFD}    c26ad7fb-072b-48c4-a663-7d71646d9e98    # The VNF Pakcage
 ${vnfPkgZipVNFD}    f5b220d4-6177-4ebb-a554-a43311e16075    # The VNF Package contains a VNFD composed by multiple files
 ${erroneousVnfPkgId}    erroneousPkgId
 ${onboardingStateVnfPkgId}    788106a2-d692-44f3-a86d-384f0ce35e42    # The VNF Package is in CREATED onboardingState
+${vnfPackageId}  788106a2-d692-44f3-a86d-384f0ce35e42