diff --git a/LICENSE.txt b/LICENSE.txt
index bb235ff..1de272e 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,7 +1,7 @@
 /*
 * ============LICENSE_START==========================================
 * ===================================================================
-* Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+* Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 *
 * Unless otherwise specified, all software contained herein is licensed
@@ -34,6 +34,4 @@
 *
 * ============LICENSE_END============================================
 *
-* ECOMP is a trademark and service mark of AT&T Intellectual Property.
-*
 */
diff --git a/docs/architecture.rst b/docs/architecture.rst
index 6211f12..19c9b70 100644
--- a/docs/architecture.rst
+++ b/docs/architecture.rst
@@ -1,21 +1,21 @@
 .. 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.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property.  All rights reserved.
 
 
 Clamp in ONAP Architecture
 --------------------------
 
-CLAMP is a platform for designing and managing control loops. It is used to design
-a closed loop, configure it with specific parameters for a particular network
+CLAMP is a platform for designing and managing control loops. It is used to visualize
+a control loop, configure it with specific parameters for a particular network
 service, then deploying and undeploying it.  Once deployed, the user can also
 update the loop with new parameters during runtime, as well as suspending and
 restarting it.
 
-It interacts with other systems to deploy and execute the closed loop. For
-example, it pushes the control loop design to the SDC catalog, associating it
-with the VF resource.  It requests from DCAE the instantiation of microservices
-to manage the closed loop flow.  Further, it creates and updates multiple
+It interacts with other systems to deploy and execute the control loop. For
+example, it gets the control loop blueprint from SDC - DCAE-D.
+It requests from DCAE the instantiation of microservices
+to manage the control loop flow.  Furthermore, it creates and updates multiple
 policies in the Policy Engine that define the closed loop flow.
 
 The ONAP CLAMP platform abstracts the details of these systems under the concept
@@ -25,6 +25,9 @@
 control loops, where no low-level user interaction with other components is
 required.
 
+CLAMP also allows to visualize control loop metrics through a dashboard, in order
+to help operations understand how and when a control loop is triggered and takes action.
+
 At a higher level, CLAMP is about supporting and managing the broad operational
 life cycle of VNFs/VMs and ultimately ONAP components itself. It will offer the
 ability to design, test, deploy and update control loop automation - both closed
diff --git a/docs/index.rst b/docs/index.rst
index 38044ab..dfb19eb 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,6 +1,6 @@
 .. 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.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
 
 CLAMP - Closed Loop Automation Management Platform
 ==================================================
@@ -40,32 +40,48 @@
 Delivery
 --------
 CLAMP component is composed of a UI layer and a BackEnd layer and packaged into a single container.
-CLAMP also requires a database instance with 2 DB, it uses MariaDB.
+CLAMP also requires a database instance with 1 DB, it uses MariaDB.
+CLAMP also uses an ELK stack (Elastic Search, Logstash and Kibana) for the Dashboard.
 
 .. blockdiag::
 
 
    blockdiag layers {
-   orientation = portrait
-   CLAMP_UI -> CLAMP_BACKEND;
-   CLAMP_BACKEND -> CAMUNDADB;
-   CLAMP_BACKEND -> CLDSDB;
-   group l1 {
-   color = blue;
-   label = "CLAMP container";
-   CLAMP_UI; CLAMP_BACKEND;
+       orientation = portrait
+       CLAMP_UI -> CLAMP_BACKEND;
+       CLAMP_BACKEND -> CLDSDB;
+       CLAMP_KIBANA -> CLAMP_ELASTICSEARCH;
+       CLAMP_LOGSTASH -> CLAMP_ELASTICSEARCH;
+       group l1 {
+       color = blue;
+       label = "CLAMP container";
+       CLAMP_UI; CLAMP_BACKEND;
+       }
+       group l3 {
+       color = orange;
+       label = "MariaDB container";
+       CLDSDB;
+       }
+       group l4 {
+       color = green;
+       label = "E_Search container";
+       CLAMP_ELASTICSEARCH;
+       }
+       group l5 {
+          color = green;
+          label = "Kibana container";
+          CLAMP_KIBANA;
+       }
+       group l6 {
+          color = green;
+          label = "LogStash container";
+          CLAMP_LOGSTASH;
+       }
    }
-   group l3 {
-   color = orange;
-   label = "MariaDB container";
-   CAMUNDADB; CLDSDB;
-   }
-   }
-
 
 Logging & Diagnostic Information
 --------------------------------
-CLAMP uses logback framework to generate logs. The logback.xml file cand be found under the [src/main/resources/ folder](src/main/resources).
+CLAMP uses logback framework to generate logs. The logback.xml file can be found under the [src/main/resources/ folder](src/main/resources).
 
 With the default log settings, all logs will be generated into console and into root.log file under the CLAMP root folder. The root.log file is not allowed to be appended, thus restarting the CLAMP will result in cleaning of the old log files.
 
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index a5b9280..2e6fd47 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -1,6 +1,6 @@
 .. 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.
+.. Copyright (c) 2017-2018 AT&T Intellectual Property.  All rights reserved.
 
 Release Notes
 =============
@@ -8,7 +8,7 @@
 Version: 2.0.0
 --------------
 
-:Release Date: 2018-03-28
+:Release Date: 2018-06-25
 
 **New Features**
 
@@ -16,19 +16,17 @@
 
 The main goal of the Beijing release was to:
 
-    - Enhance Platform maturity by improving CLAMP maturity matrix see `Wiki <https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity>`_
+    - Enhance Platform maturity by improving CLAMP maturity matrix see `Wiki <https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity>`_.
     - Focus CLAMP on Closed loop runtime operations and control - this is reflected by the move of the design part to DCAE-D.
     - Introduce CLAMP Dashboard for monitoring of active Closed Loops.
-    - CLAMP is integrated with MSB
-    - CLAMP has integrated SWAGGER
-    - CLAMP main Core has been reworked for improved flexibility
+    - CLAMP is integrated with MSB.
+    - CLAMP has integrated SWAGGER.
+    - CLAMP main Core has been reworked for improved flexibility.
 
 **Bug Fixes**
 
-	- The full list of implemented user stories and epics is available on `JIRA <https://jira.onap.org/projects/CLAMP/versions/10314>`_
-	  This is technically the first release of CLAMP, previous release was the seed code contribution.
-	  As such, the defects fixed in this release were raised during the course of the release.
-	  Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above.
+	- The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://jira.onap.org/projects/CLAMP/versions/10314>`_
+	  This includes the list of bugs that were fixed during the course of this release.
 
 **Known Issues**
 
@@ -38,27 +36,26 @@
 
         Workaround:
 
-        You have to close the CL and reopen it again. In that case the Deploy action will do something
+        You have to close the CL and reopen it again. In that case the Deploy action will do something.
 
 
 **Security Issues**
-	CLAMP is following the CII Best Practices Badge Program, results including security assesment can be found on the
-	`project page <https://bestpractices.coreinfrastructure.org/projects/1197>`_
 
-    CLAMP Code is formally scanned during build time, the goal of Beijing Release was to ensure that all Critical items are closed
-    The remaining security issues and their workarounds are captured `here <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_
+CLAMP is following the CII Best Practices Badge Program, results including security assesment can be found on the `project page <https://bestpractices.coreinfrastructure.org/projects/1197>`_.
+CLAMP Code is formally scanned during build time, the goal of Beijing Release was to ensure that all Critical items are closed.
+The remaining security issues and their workarounds are captured `here <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_.
 
 **Upgrade Notes**
 
-    New Docker Containers are avaialble, an ELK stack is also now part of CLAMP deployments
+    New Docker Containers are avaialble, an ELK stack is also now part of CLAMP deployments.
 
 **Deprecation Notes**
 
-    The CLAMP Designer UI is now deprecated and unavailable, the design time is being onboarded into SDC - DCAE D
+    The CLAMP Designer UI is now deprecated and unavailable, the design time is being onboarded into SDC - DCAE D.
 
 **Other**
 
-    CLAMP Dashboard is now implemented, allows to monitor Closed Loops that are running by retrieving CL events on DMAAP
+    CLAMP Dashboard is now implemented, allows to monitor Closed Loops that are running by retrieving CL events on DMAAP.
 
 Version: 1.1.0
 --------------
@@ -77,7 +74,7 @@
 
 **Bug Fixes**
 
-	- The full list of implemented user stories and epics is available on `JIRA <https://jira.onap.org/projects/CLAMP/versions/10313>`_
+	- The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://jira.onap.org/projects/CLAMP/versions/10313>`_
 	  This is technically the first release of CLAMP, previous release was the seed code contribution.
 	  As such, the defects fixed in this release were raised during the course of the release.
 	  Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above.
@@ -90,7 +87,7 @@
         Workaround:
 
         If you have multiple service available (if not create a dummy one on SDC), just click on another one and then click back on the first one in the list. The ResourceVF should be provisioned now.
-.
+
     - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work.
 
         The "Deploy" action does not work directly after submitting it.
