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

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>`_

* `Resource Onboarding <https://wiki.onap.org/x/YIAP>`_

* `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>`_
