.. 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.

.. _user-guides-service-design:

Service Design
==============
The goal of the service 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:


* `Pre-Onboarding <https://wiki.onap.org/x/Y4AP>`_

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

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

* `VF Creation and Testing <https://wiki.onap.org/x/PoAP>`_

* `Governance Approval and Service Distribution <https://wiki.onap.org/x/UYAP>`_

* `Control Loop Design <https://wiki.onap.org/x/WYAP>`_

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

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