.. This work is licensed under a Creative Commons Attribution 4.0
.. International License. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.

Design
======

The goal of the design process is to create all artifacts (models)
that are required to instantiate and manage resources, services,
and products on the ONAP platform. The design process requires
input from users with multiple roles.

Design progresses logically through a series of phases. Each phase:

* is organized into steps that are completed in sequence

* is accessed using a different role with specific responsibilities
  generates artifacts that are used in other phases of design or when
  instantiating or monitoring virtual functions.

Design includes the following topics:

.. toctree::
   :maxdepth: 1
   :titlesonly:

   Pre-Onboarding <./pre-onboarding/index.rst>

   Resource-Onboarding <./resource-onboarding/index.rst>

   VF Creation and Testing <./vfcreation/index.rst>

   Service Design <./service-design/index.rst>

   Governance Approval and Service Distribution <./service-distribution/index.rst>

   Control Loop Design <./control-loop/index.rst>

* `Policy Design <https://wiki.onap.org/x/SYAP>`_

* `SDC Artifacts List <https://wiki.onap.org/x/LYAP>`_
