.. This work is licensed under a Creative Commons Attribution 4.0
   International License. http://creativecommons.org/licenses/by/4.0

.. _docs_usecases:

Verified Use Cases and Functional Requirements
----------------------------------------------

Description
~~~~~~~~~~~
This session includes use cases and functional requirements which have been verified in Frankfurt release by the Integration team:
    1. What has been implemented
    2. Step by step instruction on how to deploy them, including the links to download the related assets and resources
    3. Known issues and workaround

The final testing status can be found at `Frankfurt Release Integration Testing Status <https://wiki.onap.org/display/DW/2%3A+Frankfurt+Release+Integration+Testing+Status>`_

Use Cases
~~~~~~~~~
:ref:`vFirewall Use Case <docs_vfw>`

:ref:`VF Module Scale Out Use Case (vLoadBalancer/vDNS example) <docs_scaleout>`

:ref:`vCPE Use Case <docs_vcpe>`

:ref:`CCVPN (Cross Domain and Cross Layer VPN) Use Case <docs_ccvpn>`

:ref:`vFirewall/vDNS with HPA Use Case <docs_vfw_hpa>`

:ref:`vFirewall Traffic Distribution Use Case <docs_vfw_traffic>`

:ref:`BBS (Broadband Service) Use Case <docs_bbs>`

:ref:`vIPsec with HPA Use Case <docs_vipsec_hpa>`

:ref:`vFirewall/edgex with multicloud kubernetes plugin <docs_vfw_edgex_multicloud_k8s>`

Functional Requirements
~~~~~~~~~~~~~~~~~~~~~~~
:ref:`5G - Real Time PM and High Volume Stream Data Collection <docs_realtime_pm>`

:ref:`5G - Bulk PM <docs_5g_bulk_pm>`

:ref:`5G - Configuration over NETCONF <docs_5G_Configuration_over_NETCONF>`

:ref:`5G - OOF and PCI <docs_5G_oof_pci>`

:ref:`5G - E2E Network Slicing <docs_E2E_network_slicing>`

:ref:`PNF Support - PNF Plug and Play <docs_5g_pnf_pnp>`

:ref:`PNF Support - PNF Software Upgrade <docs_5g_pnf_software_upgrade>`

:ref:`Change Management Flexible Designer and Orchestrator <docs_CM_flexible_designer_orchestrator>`

:ref:`Change Management Schedule Optimization <docs_CM_schedule_optimizer>`
