diff --git a/docs/README.md b/docs/README.md
index 0a8cd02..507615c 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -26,12 +26,16 @@
 
 ## Example Tosca - Create a Subscriber
 
-The following TOSCA recipe creates an `RCORDSubscriber`:
+The following TOSCA recipe creates:
+
+- `RCORDSubscriber`
+- `BandwidthProfile`
 
 ```yaml
 tosca_definitions_version: tosca_simple_yaml_1_0
 imports:
   - custom_types/rcordsubscriber.yaml
+  - custom_types/bandwidthprofile.yaml
 
 description: Pre-provsion a subscriber
 
@@ -39,21 +43,40 @@
   node_templates:
 
     # Pre-provision the subscriber
+    high_speed_bp:
+      type: tosca.nodes.BandwidthProfile
+      properties:
+         air: 2000
+         cbs: 2000
+         cir: 2000
+         ebs: 2000
+         eir: 2000
+         name: Bronze
+
+    # Pre-provision the subscriber the subscriber
     onf_subscriber_1:
       type: tosca.nodes.RCORDSubscriber
       properties:
-        name: Sub_BRCM22222222
+        name: Sub_ALPHe3d1cfde
         status: pre-provisioned
-        c_tag: 111
+        c_tag: 222
         s_tag: 111
-        onu_device: BRCM22222222
-        nas_port_id : "PON 1/1/03/1:1.1.1"
-        circuit_id: foo1
-        remote_id: bar1
+        onu_device: ALPHe3d1cfde
+        nas_port_id : "PON 1/1/04/1:1.1.1"
+        circuit_id: foo2
+        remote_id: bar2
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: high_speed_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: high_speed_bp
+            relationship: tosca.relationships.BelongsToOne
 ```
 
 > NOTE: an `onu_device` with the provided serial number must exist in the system.
-> For more informations about ONU Devices, please refer to the
+> For more information about ONU Devices, please refer to the
 > [vOLTService](../olt-service/README.md) guide.
 
 ## Integration with other Services
@@ -66,6 +89,9 @@
 - The `provider_service` exposes an API called `has_access_device(onu_serial_number)`
   that returns a boolean. This is used to validate that the ONU the subscriber
   is pointing to really exists.
+- The `provider_service` exposes API called `get_olt_technology_from_unu_sn(onu_serial_number)` and `get_tech_profile(technology, tech_profile_id)`
+  that returns a boolean. This is used to validate that the Technology Profile the subscriber
+  is pointing to really exists. See [Technology Profile Management](https://github.com/opencord/voltha/tree/master/common/tech_profile) for more informations.
 
 ## Synchronizer workflow
 
diff --git a/docs/voltha_install.md b/docs/voltha_install.md
deleted file mode 100644
index 1469834..0000000
--- a/docs/voltha_install.md
+++ /dev/null
@@ -1,380 +0,0 @@
-# Installing VOLTHA
-
-The following describes how to install VOLTHA (configured with the EdgeCore OLT
-device) into R-CORD.
-
-> Note: VOLTHA is not officially included in the release, but it can be
-> configured manually, as described below.
-
-## Prerequisites
-
-The starting point is a physical CORD POD with the `rcord` profile, at which
-point the manual fabric configuration steps outlined below can be performed.
-Make sure your fabric has Internet access (i.e., `vRouter` has been
-configured).
-
-The ONOS cluster controlling the fabric is located on the CORD head node.  We
-will deploy VOLTHA and a separate single-instance ONOS cluster for running the
-OLT control apps on one of the CORD compute nodes. It doesn’t matter which
-compute node is used at this stage, given that we are communicating with the
-OLT out-of-band over the management network.
-
-In R-CORD, each PON is identified by a subscriber VLAN tag, and each customer
-on a PON is identified by a customer VLAN tag. You will need to decide on an
-`s-tag` for the OLT and a `c-tag` for each subscriber that you want to
-provision.
-
-You will also need to take note of the OpenFlow port numbers of the fabric
-switch port where the OLT is connected, as well as the fabric switch port where
-  your compute node is connected. These port numbers are needed for fabric
-  configuration later on.
-
-> Note: Currently there is a restriction that the OLT and the node hosting the
-> vSG serving the customers on that OLT need to be attached to the same fabric
-> leaf.  In a small 1-node/1-switch setup this will obviously be the case, but
-> if running on a larger setup it is necessary to be aware of the fact that vSG
-> placement is constrained.
-
-## Bring Up OLT Device
-
-Install the OLT in your POD. Connect the 1G copper Ethernet port to the
-management switch, and connect the top left NNI uplink to one of your fabric
-leaf switches.
-
-In CORD 5.0, the EdgeCore ASFvOLT16 OLT is able to PXE boot and have its OS
-image automatically installed. Once the OLT is connected to the management
-network, start the OLT in ONIE boot mode and the CORD automation will will take
-it from there.
-
-You can see the progress of this process in `cord prov list`. The default
-username is `root` and default password is `onl`.
-
-### Install ONL, BAL, and VOLTHA Software
-
-Once the OS is ready, there is a set of software that needs to be installed on
-the device. Unfortunately, as of the CORD 5.0 release, ONF is unable to
-distribute this software, due to licensing issues with the Broadcom SDK.
-If you have a relationship with Broadcom, then you can obtain this software
-yourself and proceed with the rest of this guide. If not, you will have to wait
-until we have clearance to distribute this software.
-
-Assuming you have the software, then simply copy it over to the OLT and install it:
-
-```shell
-scp bal.deb root@<olt_mgmt_ip>:
-ssh root@<olt_mgmt_ip>                #password: onl
-dpkg -i bal.deb
-reboot
-```
-
-### Configure NNI Speed
-
-Depending on the switch that the OLT is connected to, you might need to
-change the NNI speed. The NNI port on the OLT will default to running at 100G.
-If it is connected to a switch that can support 100G then nothing further needs
-to be done. If, however, it is connected to a switch that can only support 40G,
-then you need to downgrade the speed of the NNI port on the OLT.
-
-On the OLT box itself, edit the file `/broadcom/qax.soc`. Find the lines with
-`port …` and add the following line underneath:
-
-```cfg
-port ce128 sp=40000
-```
-
-Then reboot your OLT.
-
-## Bring Up a vSG Instance
-
-Browse to the XOS UI in a web browser: `http://<head_node_ip>/xos`
-
-Log in with your admin credentials.
-
-On the menu on the left hand side, click on `Volt`, then on `vOLT Tenants`,
-and then click the button on the right labelled `Add`. Fill out the form with
-values for the new vSG that you want to create.
-
-* C tag: the c-tag for this subscriber
-* Creator id: Select ‘1’
-* Master serviceinstance id: can leave blank
-* Name: can leave blank
-* Owner id: Select ‘volt’
-* S tag: the s-tag for the OLT PON that the subscriber is attached to
-* Service specific attribute: can leave blank
-* Service specific id: put the c-tag number in here as well
-
-Now click `Save` and a vSG will be created in the background on a compute node.
-This will take a few minutes to fully come up. Again, make sure your fabric has
-access to the internet when you do this, because the vSG needs to reach out to the
-internet in order to fully come up.
-
-## Configure Fabric ONOS
-
-Once an OLT has been connected to the fabric, the fabric needs some
-configuration to forward the data traffic from the OLT to the right compute
-node running the vSGs.  All vSGs serving customers on a particular PON will be
-located on the same compute node.
-
-Recall that the fabric controller ONOS is located on the HEAD node The steps in
-this section are done on the CORD head node.
-
-The file `/opt/cord_profile/fabric-network-cfg.json` should contain the base
-fabric network configuration that you created earlier. In this step we will
-edit this file to add some additional configuration to add a tagged VLAN on two
-fabric switch ports: the port facing the OLT, and the port facing the compute
-node where the vSGs will be hosted.
-
-Create a new section in the `ports` section for the port facing your OLT.  For
-example:
-
-```json
-...
-“ports” {
-    …
-    },
-    "of:0000cc37ab6180ca/9": {
-        "interfaces": [
-            {
-                "vlan-tagged" : [ 300 ]
-            }
-        ]
-    }
-}
-```
-
-The port facing your compute node will already have an interface config from
-the earlier provisioning of the fabric. We now need to add a new interface
-config under the same existing port config for the data traffic from the OLT:
-
-```json
-...
-"of:0000cc37ab6180ca/5": {
-    "interfaces": [
-        {
-            "ips": [ "10.6.1.254/24" ],
-                "vlan-untagged" : 1
-            },
-            {
-                "vlan-tagged" : [ 300 ]
-            }
-        ]
-    }
-...
-```
-
-Run the following command on the head node to refresh the config in
-ONOS:
-
-```shell
-curl -H "xos-username: xosadmin@opencord.org" -H "xos-password: `cat /opt/credentials/xosadmin@opencord.org`" -X POST --data-binary @/opt/cord_profile/fabric-service.yaml http://localhost:9102/xos-tosca/run
-```
-
-Now it is best to log in to the fabric ONOS and verify that the config was
-received properly:
-
-```shell
-ssh karaf@localhost -p 8101      #password=karaf
-```
-
-Run the `interfaces` command and verify that your new `vlanTagged`
-interfaces are there:
-
-```shell
-onos> interfaces
-...
-(unamed): port=of:0000cc37ab6180ca/5 vlanTagged=[300]
-(unamed): port=of:0000cc37ab6180ca/9 vlanTagged=[300]
-…
-```
-
-It’s also best to restart the segment routing app to make sure it picks up the
-new config:
-
-```shell
-onos> app deactivate org.onosproject.segmentrouting
-onos> app activate org.onosproject.segmentrouting
-```
-
-## Run VOLTHA and ONOS
-
-VOLTHA comes with a Docker stack file that runs a full single-node ensemble of
-VOLTHA. This means we will run a single copy of all the VOLTHA containers, plus
-a single copy of all the infrastructure services that VOLTHA needs to run
-(e.g., consul, kafka, zookeeper, fluentd, etc). The stack file will also run an
-ONOS instance that we will use to control the logical OpenFlow device that
-VOLTHA exposes.
-
-### Prepare ONOS Configuration
-
-Before we run VOLTHA, we’ll need to prepare our ONOS configuration. This is
-because the stack file will bring up ONOS at the same time as it brings up
-VOLTHA, and ONOS needs to be configured at system startup.
-
-Create a config file that looks like this in `~/network-cfg.json`
-
-```json
-{
-  "devices": {
-    "of:0001000000000001": {
-      "basic": {
-        "driver": "voltha"
-      },
-      "accessDevice": {
-        "uplink": "128",
-        "vlan": "300"
-      }
-    }
-  }
-}
-```
-
-### Prepare the Node for Swarm
-
-Prepare the node as a single-node docker swarm (substitute the dataplane IP
-address of the node on which you are running VOLTHA):
-
-```shell
-docker swarm init --advertise-addr 10.6.1.2
-```
-
-### Run a Released Version of VOLTHA
-
-Download the VOLTHA run script:
-
-```shell
-curl https://raw.githubusercontent.com/opencord/voltha/voltha-1.2/scripts/run-voltha.sh > run-voltha.sh
-chmod +x run-voltha.sh
-```
-
-Then you can start voltha like this:
-
-```shell
-ONOS_CONFIG=~/network-cfg.json REPOSITORY=voltha/ TAG=1.2.1 ./run-voltha.sh start
-```
-
-Now we have started a single-node VOLTHA stack. You can use the following
-command to see the various containers that are runnning as part of the stack:
-
-```shell
-docker stack ps voltha
-```
-
-## Provision the OLT + ONU
-
-Access VOLTHA's CLI with:
-
-```shell
-ssh voltha@localhost -p 5022
-```
-
-Run the health command and verify you get this output:
-
-```json
-(voltha) health
-{
-    "state": "HEALTHY"
-}
-```
-
-Now we can provision our OLT:
-
-```shell
-(voltha) preprovision_olt -t asfvolt16_olt -H <olt_mgmt_ip>:59991
-success (device id = 0001f6f4595fdc93)
-
-(voltha) enable 0001f6f4595fdc93
-enabling 0001f6f4595fdc93
-waiting for device to be enabled...
-waiting for device to be enabled...
-waiting for device to be enabled...
-```
-
-This will start to provision the device and will take approximately two
-minutes. During this time you should see logs scrolling by in the
-`bal_core_dist` and `voltha_bal_driver` apps on the OLT. The "waiting for
-device to be enabled" message will stop once the device has finished being
-provisioned.
-
-Next, add the OLT configuration. The following is a series of commands that
-need to be entered into the VOLTHA CLI in order to configure an OLT and ONU.
-Pay attention to the device ID in the channel termination command,
-(`0001bb590711de28`) as this will need to be changed to match your OLT's device
-ID.
-
-```shell
-(voltha) xpon
-(voltha-xpon ) channel_group create -n "Manhattan" -d "Channel Group for Manhattan" -a up -p 100 -s 000000 -r raman_none
-(voltha-xpon ) channel_partition create -n "WTC" -d "Channel Partition for World Trade Center in Manhattan" -a up -r 20 -o 0 -f false -m false -u serial_number -c "Manhattan"
-(voltha-xpon ) channel_pair create -n "PON port" -d "Channel Pair for Freedom Tower in WTC" -a up -r (voltha-xpon ) down_10_up_10 -t channelpair -g "Manhattan" -p "WTC" -i 0 -o class_a
-(voltha-xpon ) traffic_descriptor_profile create -n "TDP 1" -f 100000 -a 500000 -m 1000000 -p 1 -w 1 -e additional_bw_eligibility_indicator_none
-(voltha-xpon ) channel_termination create -i 0001bb590711de28 -n "PON port" -d "Channel Termination for Freedom Tower" -a up -r "PON port" -c "AT&T WTC OLT"
-```
-
-Then for every ONU that you want to bring up, run the following commands in the
-VOLTHA CLI.  The value of the ONU serial number (`BRCM12345678`) needs to be
-changed to match your ONU's serial number.
-
-```shell
-(voltha-xpon ) vont_ani create -n "ATT Golden User" -d "ATT Golden User in Freedom Tower" -a up -p "WTC" -s "BRCM12345678" -r "PON port" -o 1
-
-# Wait for 5 sec for ONT to come up
-(voltha-xpon ) ont_ani create -n "ATT Golden User" -d "ATT Golden User in Freedom Tower" -a up -u true -m false
-(voltha-xpon ) tcont create -n "TCont 1" -r "ATT Golden User" -t "TDP 1"
-
-# Wait for 5 sec for scheduler configuration to finish.
-(voltha-xpon ) v_enet create -n "Enet UNI 1" -d "Ethernet port - 1" -a up -r "ATT Golden User"
-(voltha-xpon ) gem_port create -n "Gemport 1" -r "Enet UNI 1" -c 2 -a true -t "TCont 1"
-```
-
-At this point the ONU should have been provisioned and ready to have its
-subscriber VLANs programmed by ONOS.
-
-## Provision a Subscriber in ONOS
-
-Now we need to provision a subscriber in ONOS. ONOS will then send flow rules
-to forward the subscriber’s traffic to the VOLTHA logical device, and VOLTHA will
-take these flow rules and configure the PON accordingly.
-
-On the node where VOLTHA is running, you can access the ONOS CLI using:
-
-```shell
-ssh karaf@localhost -p 8101           #password=karaf
-```
-
-In the previous step we already provisioned VOLTHA with an OLT, so it should
-have automatically connected to this new ONOS instance. Running `devices`
-and `ports` should show one OLT device with two ports, an NNI port and a UNI
-port.
-
-```shell
-onos> devices
-id=of:0001000000000001, available=true, local-status=connected 34m43s ago, role=MASTER, type=SWITCH, mfr=cord project, hw=n/a, sw=logical device for Edgecore ASFvOLT16 OLT, serial=10.6.0.199:59991, driver=voltha, channelId=172.25.0.1:55015, locType=geo, managementAddress=172.25.0.1, name=of:0001000000000001, protocol=OF_13
-onos> ports
-id=of:0001000000000001, available=true, local-status=connected 34m45s ago, role=MASTER, type=SWITCH, mfr=cord project, hw=n/a, sw=logical device for Edgecore ASFvOLT16 OLT, serial=10.6.0.199:59991, driver=voltha, channelId=172.25.0.1:55015, locType=geo, managementAddress=172.25.0.1, name=of:0001000000000001, protocol=OF_13
-  port=16, state=enabled, type=fiber, speed=0 , portName=Enet UNI 1, portMac=00:00:00:01:00:15
-  port=128, state=enabled, type=fiber, speed=0 , portName=nni, portMac=00:00:00:00:00:81
-```
-
-If this is all correct, then the final step is to use the ONOS CLI to provision
-subscriber VLANs on the PON:
-
-```shell
-onos> add-subscriber-access <olt_dpid> <uni_port> <c_vlan>
-e.g., add-subscriber-access of:0001000000000001 16 400
-```
-
-If all is going well, traffic should be able to flow through the PON, to the vSG
-and out to the Internet. If you place a client behind the ONU it should be able to
-DHCP and get an address from the vSG, then reach the Internet using the vSG
-as its default gateway.
-
-## Troubleshooting
-
-If you ever need to reset the system, then you can stop VOLTHA like this:
-
-```shell
-./run-voltha.sh stop
-```
-
-Then reboot the OLT to ensure that it is in a fresh state to be reprovisioned.
-
