summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaul.gill <saul.gill@est.tech>2023-04-18 12:26:48 +0100
committersaul.gill <saul.gill@est.tech>2023-04-18 12:26:54 +0100
commit158db767058c6e7eae01d1a7b166aed610262fe4 (patch)
tree320228547812d2611097d001871ede00a0406d0a
parentad9a1e88471b5073fe24399b0f51e8ae5bca3e05 (diff)
Update ACM design arch docs
Issue-ID: POLICY-4601 Change-Id: I3b32171663ae57de7502cf86d8e8aa95515bb17c Signed-off-by: saul.gill <saul.gill@est.tech>
-rw-r--r--docs/clamp/acm/acm-architecture.rst239
-rw-r--r--docs/clamp/acm/draw.io/acm-concepts.drawio1
-rw-r--r--docs/clamp/acm/draw.io/acm-instance-states.drawio1
-rw-r--r--docs/clamp/acm/draw.io/acm-overview.drawio1
-rw-r--r--docs/clamp/acm/draw.io/api-gateway-sandbox.drawio1
-rw-r--r--docs/clamp/acm/draw.io/feature-automation-compositions.drawio1
-rw-r--r--docs/clamp/acm/draw.io/feature-compositions.drawio1
-rw-r--r--docs/clamp/acm/images/01-controlloop-overview.pngbin85668 -> 0 bytes
-rw-r--r--docs/clamp/acm/images/02-controlloop-concepts.pngbin36275 -> 0 bytes
-rw-r--r--docs/clamp/acm/images/03-acm-instance-states.pngbin78171 -> 500531 bytes
-rw-r--r--docs/clamp/acm/images/03-controlloop-instance-states.pngbin100670 -> 0 bytes
-rw-r--r--docs/clamp/acm/images/05-upgrade-states.pngbin10908 -> 6296 bytes
-rw-r--r--docs/clamp/acm/images/06-api-gateway-sandbox.pngbin93026 -> 534306 bytes
-rw-r--r--docs/clamp/acm/images/feature-automation-compositions.pngbin0 -> 263986 bytes
-rw-r--r--docs/clamp/acm/images/feature-compositions.pngbin0 -> 375957 bytes
15 files changed, 141 insertions, 104 deletions
diff --git a/docs/clamp/acm/acm-architecture.rst b/docs/clamp/acm/acm-architecture.rst
index ec2a656e..4e8f6744 100644
--- a/docs/clamp/acm/acm-architecture.rst
+++ b/docs/clamp/acm/acm-architecture.rst
@@ -2,13 +2,50 @@
.. _clamp-acm_architecture-label:
-TOSCA Defined Automation Compositions: Architecture and Design
-##############################################################
-
+Automation Composition Management: Architecture and Design
+##########################################################
.. contents::
:depth: 4
+To get a feature, service, or capability working in modern networks is not straightforward.
+It is not as simple as deploying a microservice or running a workflow. Our features, services, and capabilities are
+now typically delivered using loose compositions of microservices, rules, algorithms, configurations, and workflows.
+Of course, we use workflows and deploy microservices, but how do we keep track of what workflow activated which service
+or what microservice instance enables a given capability. We must be able to deploy, keep track of, amend, and remove
+the compositions that combine to give us our features, services and capabilities, that is we must manage those compositions.
+
+.. image:: images/feature-compositions.png
+
+Consider Features A, B and C in the diagram above.
+
+Feature A is realised as an Analytic Microservice, but it also requires counters to be configured in a collection
+service to enable its input stream of data. It also requires two policies to be present, and its result
+requires an Ansible playbook to be present.
+
+Feature B is realised as an AI microservice, which is triggered by a set of triggers that are configured in the
+persistence service. The AI algorithm in Feature B triggers a workflow in the workflow service
+
+Feature C is realised as two microservices, an analytic microservice and a Machine Learning microservice.
+The feature also requires that certain counters are collected and certain Netconf configurations are enabled.
+
+All three features are realised as Automation Compositions, as shown in the diagram below.
+
+.. image:: images/feature-automation-compositions.png
+
+The ability to deploy features in a scalable, flexible and loosely coupled microservice architecture is of course
+a major step forward from layered architectures of the past. However, managing at "Feature" level in such architectures
+does present challenges. For example, to manage the three running instances of Features A to C above,
+9 separate elements must be kept track of. There is nothing in the deployed system to sat what element is
+related to what other element, and what element are working together to realise a feature.
+
+Automation Composition Management (ACM) is a framework that supports Life Cycle Management of Automation Compositions.
+It supports deployment, monitoring, update and removal of Automation Compositions en-bloc, allowing users
+to manage their features, services, and capabilities as single logical units.
+
+1 Introduction
+==============
+
The idea of using automation compositions to automatically (or autonomously) perform network management
has been the subject of much research in the Network Management research community, see
:download:`this paper <files/Acms.pdf>` for some background. However, it is only with
@@ -30,20 +67,20 @@ time system.
.. image:: images/01-acm-overview.png
-1 Terminology
+2 Terminology
=============
This section describes the terminology used in the system.
-1.1 Automation Composition Terminology
+2.1 Automation Composition Terminology
--------------------------------------
**Automation Composition Type:** A definition of a Automation Composition in the TOSCA language. This definition describes
a certain type of a automation composition. The life cycle of instances of a Automation Composition Type are managed
-by CLAMP.
+by ACM.
**Automation Composition Instance:** An instance of a Automation Composition Type. The life cycle of a Automation Composition
-Instance is managed by CLAMP. A Automation Composition Instance is a set of executing elements on which
+Instance is managed by ACM. An Automation Composition Instance is a set of executing elements on which
Life Cycle Management (LCM) is executed collectively. For example, a set of microservices may be
spawned and executed together to deliver a service. This collection of services is a automation composition.
@@ -55,12 +92,12 @@ Composition Type.
being managed as part of the overall automation composition. For example, a single microservice that is
executing as one microservice in a service.
-**CLAMP Automation Composition Runtime:** The CLAMP server that holds Automation Composition Type definitions and manages
+**Automation Composition Runtime:** The ACM Runtime server that holds Automation Composition Type definitions and manages
the life cycle of Automation Composition Instances and their Automation Composition Elements in cooperation with
participants.
-1.2 Participant Terminology
+2.2 Participant Terminology
---------------------------
**Participant Type:** Definition of a type of system or framework that can take part in control
@@ -68,11 +105,11 @@ loops and a definition of the capabilities of that participant type. A participa
its type to the CLAMP Automation Composition Runtime.
**Participant:** A system or framework that takes part in automation compositions by executing Automation Composition
-Elements in cooperation with the CLAMP Automation Composition Runtime. A participant chooses to partake
-in automation compositions, to manage Automation Composition Elements for CLAMP, and to receive, send and act on
-LCM messages for the CLAMP runtime.
+Elements in cooperation with the Automation Composition Runtime. A participant chooses to partake
+in automation compositions, to manage Automation Composition Elements for ACM, and to receive, send and act on
+LCM messages for the ACM runtime.
-1.3 Terminology for Properties
+2.3 Terminology for Properties
------------------------------
**Common Properties:** Properties that apply to all Automation Composition Instances of a certain Automation
@@ -81,7 +118,7 @@ Composition Type and are specified when a Automation Composition Type is commiss
**Instance Specific Properties:** Properties that must be specified for each Automation Composition Instance
and are specified when a Automation Composition Instance is Initialized.
-1.4 Concepts and their relationships
+2.4 Concepts and their relationships
------------------------------------
The UML diagram below shows the concepts described in the terminology sections above and how
@@ -96,7 +133,7 @@ definitions created at design time.
.. _acm-capabilities:
-2 Capabilities
+3 Capabilities
==============
We consider the capabilities of Automation Compositions at Design Time and Run Time.
@@ -135,88 +172,91 @@ At Design Time, three capabilities are supported:
At Run Time, the following participant related capabilities are supported:
-#. **System Pre-Configuration.** This capability allows participants to register and deregister
- with CLAMP. Participants explicitly register with CLAMP when they start. Automation Composition Priming
- is performed on each participant once it registers. The post condition for an execution of this
- capability is that a participant becomes available (registration) or is no longer available
- (deregistration) for participation in a automation composition.
-
-#. **Automation Composition Priming on Participants.** A participant is primed to support a Automation Composition Type.
- Priming a participant means that the definition of a automation composition and the values of Common
- Property Types that apply to all instances of a automation composition type on a participant are sent
- to a participant. The participant can then take whatever actions it need to do to support
- the automation composition type in question. Automation Composition Priming takes place at participant
- registration and at Automation Composition Commissioning. The post condition for an execution of this
- capability is that all participants in this automation composition type are commissioned, that is they
- are prepared to run instances of their Automation Composition Element types.
-
+#. **System Pre-Configuration.** This capability allows participants to register and deregister with ACM-R.
+ Participants explicitly register with ACM-R when they start. The post condition for an execution of this capability
+ is that a participant becomes available (registration) or is no longer available (deregistration) for
+ participation in an Automation Composition.
At Run Time, the following Automation Composition Life Cycle management capabilities are supported:
#. **Automation Composition Commissioning:** This capability allows version controlled Automation Composition Type
definitions to be taken from the Automation Composition Design Time Catalogue and be placed in the
Commissioned Automation Composition Inventory. It also allows the values of Common Property Types
- that apply to all instances of a Automation Composition Type to be set. Further, the Automation Composition
- Type is primed on all concerned participants. The post condition for an execution of this
+ that apply to all instances of a Automation Composition Type to be set. The post condition for an execution of this
capability is that the Automation Composition Type definition is in the Commissioned Automation Composition
- Inventory and the Automation Composition Type is primed on concerned participants.
+ Inventory.
+
+#. **Automation Composition Priming on Participants.** The Priming operation sends Automation Composition Types
+ and common property values to participants for each Automation Composition Element Type in the Automation
+ Composition Type. The participant can then take whatever actions it need to do to support
+ the automation composition type in question. Automation Composition Priming is triggered by user interaction
+ with the ACM-R Rest API. The post condition for an execution of this capability is that the AC definitions are
+ primed on all participants, that is they are prepared to run instances of their Automation Composition Element types.
+ Automation composition definitions cannot be primed until they are commissioned.
#. **Automation Composition Instance Life Cycle Management:** This capability allows a Automation Composition
Instance to have its life cycle managed.
- #. **Automation Composition Instance Creation:** This capability allows a Automation Composition Instance to be
- created. The Automation Composition Type definition is read from the Commissioned Automation Composition
- Inventory and values are assigned to the Instance Specific Property Types defined for
- instances of the Automation Composition Type in the same manner as the existing CLAMP client does.
- A Automation Composition Instance that has been created but has not yet been instantiated on
- participants is in state UNINITIALIZED. In this state, the Instance Specific Property Type
- values can be revised and updated as often as the user requires. The post condition for an
- execution of this capability is that the Automation Composition instance is created in the
- Instantiated Automation Composition Inventory but has not been instantiated on Participants.
+ #. **Automation Composition Instance Creation:** This capability allows an Automation Composition Instance to be
+ created. The Automation Composition Type definition is read from the Commissioned Automation Composition Inventory
+ and values are assigned to the Instance Specific Property Types defined for instances of the Automation Composition
+ Type by the ACM client. An Automation Composition Instance that has been created but has not yet been deployed
+ on participants is in deploy state UNDEPLOYED and lock state LOCKED. In this state, the Instance Specific Property
+ Type values can be revised and updated as often as the user requires. The post condition for an execution of this
+ capability is that the Automation Composition instance is created in the Instance Automation Composition Inventory but
+ has not been deployed on Participants.
#. **Automation Composition Instance Update on Participants:** Once the user is happy with the property
values, the Automation Composition Instance is updated on participants and the Automation Composition Elements
- for this Automation Composition Instance are initialized or updated by participants using the control
- loop metadata. The post condition for an execution of this capability is that the Automation
- Composition instance is updated on Participants.
+ for this Automation Composition Instance are deployed or updated by participants using the acm metadata.
+ The post condition for an execution of this capability is that the Automation Composition instance is updated
+ on Participants.
#. **Automation Composition State Change:** The user can now order the participants to change the state
- of the Automation Composition Instance. If the Automation Composition is set to state RUNNING, each participant
- begins accepting and processing automation composition events and the Automation Composition Instance is set
- to state RUNNING in the Instantiated Automation Composition inventory. The post condition for an
- execution of this capability is that the Automation Composition instance state is changed on
- participants.
+ of the Automation Composition Instance. If the Automation Composition is set to deploy state DEPLOYED and
+ lock state UNLOCKED, each participant begins accepting and processing automation composition events and the
+ Automation Composition Instance is set to state DEPLOYED/UNLOCKED in the Instantiated Automation Composition
+ inventory. The post condition for an execution of this capability is that the Automation Composition instance
+ state is changed on participants.
#. **Automation Composition Instance Monitoring:** This capability allows Automation Composition Instances to be
monitored. Users can check the status of Participants, Automation Composition Instances, and Automation
Composition Elements. Participants report their overall status and the status of Automation Composition
- Elements they are running periodically to CLAMP. Clamp aggregates these status reports
+ Elements they are running periodically to ACM-R. ACM aggregates these status reports
into an aggregated Automation Composition Instance status record, which is available for monitoring.
The post condition for an execution of this capability is that Automation Composition Instances are
being monitored.
#. **Automation Composition Instance Supervision:** This capability allows Automation Composition Instances to be
- supervised. The CLAMP runtime expects participants to report on Automation Composition Elements
- periodically. The CLAMP runtime checks that periodic reports are received and that each
+ supervised. The ACM runtime expects participants to report on Automation Composition Elements
+ periodically. The ACM runtime checks that periodic reports are received and that each
Automation Composition Element is in the state it should be in. If reports are missed or if a
Automation Composition Element is in an incorrect state, remedial action is taken and notifications
are issued. The post condition for an execution of this capability is that Automation Composition
- Instances are being supervised by the CLAMP runtime.
+ Instances are being supervised by the ACM runtime.
#. **Automation Composition Instance Removal from Participants:** A user can order the removal of a Automation
Composition Instance from participants. The post condition for an execution of this capability is
that the Automation Composition instance is removed from Participants.
#. **Automation Composition Instance Deletion:** A user can order the removal of a Automation Composition Instance
- from the CLAMP runtime. Automation Composition Instances that are instantiated on participants cannot
- be removed from the CLAMP runtime. The post condition for an execution of this capability
- is that the Automation Composition instance is removed from Instantiated Automation Composition Inventory.
+ from the ACM runtime. Automation Composition Instances that are DEPLOYED/UNLOCKED on participants cannot
+ be removed from the ACM runtime. The post condition for an execution of this capability
+ is that the Automation Composition instance is removed from Instance Automation Composition Inventory.
+
+#. **Automation Composition Depriming on Participants.** The Depriming operation removes Automation Composition Types
+ and common property values from participants for each Automation Composition Element Type in the Automation
+ Composition Type. Automation Composition Depriming is triggered by user interaction
+ with the ACM-R Rest API. The post condition for an execution of this capability is that the AC definitions are
+ deprimed on all participants, that is they are no longer prepared to run instances of their Automation Composition
+ Element types. Automation composition definitions cannot be deprimed on a participant until the instances for that
+ participant are deleted.
#. **Automation Composition Decommissioning:** This capability allows version controlled Automation Composition Type
- definitions to be removed from the Commissioned Automation Composition Inventory. A Automation Composition
- Definition that has instances in the Instantiated Automation Composition Inventory cannot be removed.
- The post condition for an execution of this capability is that the Automation Composition Type
- definition removed from the Commissioned Automation Composition Inventory.
+ definitions to be removed from the Commissioned Automation Composition Inventory. An Automation Composition
+ Definition that has instances in the Instantiated Automation Composition Inventory or has not been deprimed on
+ participants cannot be removed. The post condition for an execution of this capability is that the Automation
+ Composition Type definition removed from the Commissioned Automation Composition Inventory.
.. note::
The system dialogues for run time capabilities are described in detail on the
@@ -224,20 +264,20 @@ At Run Time, the following Automation Composition Life Cycle management capabili
.. _acm-instance-states:
-2.1 Automation Composition Instance States
+3.1 Automation Composition Instance States
------------------------------------------
-When a automation composition definition has been commissioned, instances of the automation composition can be
-created, updated, and deleted. The system manages the lifecycle of automation compositions and control
-loop elements following the state transition diagram below.
+When an automation composition definition has been commissioned and primed, instances of the automation composition can be
+created, updated, and deleted. The system manages the lifecycle of automation compositions and ac elements
+following the state transition diagram below.
.. image:: images/03-acm-instance-states.png
-3 Overall Target Architecture
+4 Overall Target Architecture
=============================
The diagram below shows an overview of the architecture of TOSCA based Automation Composition
-Management in CLAMP.
+Management in ACM-R.
.. image:: images/04-overview.png
@@ -251,7 +291,7 @@ in the figure above, the Design Time component provides a system where Automatio
designed and defined in metadata. This means that a Automation Composition can have any arbitrary
structure and the Automation Composition developers can use whatever analytic, policy, or control
participants they like to implement their Automation Composition. At composition time, the user
-parameterises the Automation Composition and stores it in the design time catalogue. This catalogue
+parameterizes the Automation Composition and stores it in the design time catalogue. This catalogue
contains the primitive metadata for any participants that can be used to compose a Automation
Composition. A Automation Composition SDK is used to compose a Automation Composition by aggregating the metadata for
the participants chosen to be used in a Automation Composition and by constructing the references between
@@ -269,11 +309,11 @@ deletions are not allowed on Automation Composition Types that have instances de
The Instantiation component manages the Life Cycle Management of Automation Composition Instances and
their Automation Composition Elements. It publishes a REST interface that is used to create Automation Composition
Instances and set values for Common and Instance Specific properties. This REST interface is
-public and is used by the CLAMP GUI. It may also be used by any other client via the public
-REST interface. the REST interface also allows the state of Automation Composition Instances to be changed.
+public and is used by the ACM GUI. It may also be used by any other client via the public
+REST interface. The REST interface also allows the state of Automation Composition Instances to be changed.
A user can change the state of Automation Composition Instances as described in the state transition
diagram shown in section 2 above. The Instantiation component issues update and state change
-messages via DMaaP to participants so that they can update and manage the state of the Automation
+messages via DMaaP/Kafka to participants so that they can update and manage the state of the Automation
Composition Elements they are responsible for. The Instantiation component also implements persistence
of Automation Composition Instances, automation composition elements, and their state changes.
@@ -286,15 +326,15 @@ Composition Instances and their Automation Composition Elements, as well as publ
Automation Composition statistics.
The Supervision component is responsible for checking that Automation Composition Instances are correctly
-instantiated and are in the correct state (UNINITIALIZED/READY/RUNNING). It also handles
+instantiated and are in the correct state (UNDEPLOYED/DEPLOYED/LOCKED/UNLOCKED). It also handles
timeouts and on state changes to Automation Composition Instances, and retries and rolls back state
changes where state changes failed.
A Participant is an executing component that partakes in automation compositions. More explicitly, a
Participant is something that implements the Participant Instantiation and Participant
-Monitoring messaging protocol over DMaaP for Life Cycle management of Automation Composition Elements.
+Monitoring messaging protocol over DMaaP/Kafka for Life Cycle management of Automation Composition Elements.
A Participant runs Automation Composition Elements and manages and reports on their life cycle
-following the instructions it gets from the CLAMP runtime in messages delivered over DMaaP.
+following the instructions it gets from the ACM runtime in messages delivered over DMaaP/Kafka.
In the figure above, five participants are shown. A Configuration Persistence Participant
manages Automation Composition Elements that interact with the `ONAP Configuration Persistence Service
@@ -310,12 +350,12 @@ run Automation Composition Elements that interact with any existing system (such
analytic, machine learning, or artificial intelligence system) so that those systems can
partake in automation compositions.
-4. Other Considerations
+5. Other Considerations
=======================
.. _management-acm-instance-configs:
-4.1 Management of Automation Composition Instance Configurations
+5.1 Management of Automation Composition Instance Configurations
----------------------------------------------------------------
In order to keep management of versions of the configuration of automation composition instances
@@ -331,19 +371,10 @@ the **major.minor.patch** number of the version.
Change constraints:
-#. A Automation Composition or Automation Composition Element in state **RUNNING** can be changed to a higher patch
- level or rolled back to a lower patch level. This means that hot changes that do not
- impact the structure of a Automation Composition or its elements can be executed.
-
-#. A Automation Composition or Automation Composition Element in state **PASSIVE** can be changed to a higher
- minor/patch level or rolled back to a lower minor/patch level. This means that structural
- changes to Automation Composition Elements that do not impact the Automation Composition as a whole can be
- executed by taking the automation composition to state **PASSIVE**.
-
-#. A Automation Composition or Automation Composition Element in state **UNINITIALIZED** can be changed to a higher
+#. An Automation Composition or Automation Composition Element in state **UNDEPLOYED** can be changed to a higher
major/minor/patch level or rolled back to a lower major/minor/patch level. This means
that where the structure of the entire automation composition is changed, the automation composition must
- be uninitialized and reinitialized.
+ be undeployed and redeployed.
#. If a Automation Composition Element has a **minor** version change, then its Automation Composition Instance
must have at least a **minor** version change.
@@ -351,40 +382,40 @@ Change constraints:
#. If a Automation Composition Element has a **major** version change, then its Automation Composition Instance
must have a **major** version change.
-4.2 Scalability
+5.2 Scalability
---------------
-The system is designed to be inherently scalable. The CLAMP runtime is stateless, all state
+The system is designed to be inherently scalable. The ACM runtime is stateless, all state
is preserved in the Instantiated Automation Composition inventory in the database. When the user
-requests an operation such as an instantiation, activation, passivation, or an uninitialization
-on a Automation Composition Instance, the CLAMP runtime broadcasts the request to participants over
-DMaaP and saves details of the request to the database. The CLAMP runtime does not directly
+requests an operation such as an undeploy, deploy, lock, or an unlock
+on a Automation Composition Instance, the ACM runtime broadcasts the request to participants over
+DMaaP/Kafka and saves details of the request to the database. The ACM runtime does not directly
wait for responses to requests.
-When a request is broadcast on DMaaP, the request is asynchronously picked up by participants
+When a request is broadcast on DMaaP/Kafka, the request is asynchronously picked up by participants
of the types required for the Automation Composition Instance and those participants manage the life
cycle of its automation composition elements. Periodically, each participant reports back on the status
of operations it has picked up for the Automation Composition Elements it controls, together with
-statistics on the Automation Composition Elements over DMaaP. On reception of these participant messages,
-the CLAMP runtime stores this information to its database.
+statistics on the Automation Composition Elements over DMaaP/Kafka. On reception of these participant messages,
+the ACM runtime stores this information to its database.
The participant to use on a automation composition can be selected from the registered participants
in either of two ways:
-**Runtime-side Selection:** The CLAMP runtime selects a suitable participant from the list of
+**Runtime-side Selection:** The ACM runtime selects a suitable participant from the list of
participants and sends the participant ID that should be used in the Participant Update message.
In this case, the CLAMP runtime decides on which participant will run the Automation Composition Element
based on a suitable algorithm. Algorithms could be round robin based or load based.
-**Participant-side Selection:** The CLAMP runtime sends a list of Participant IDs that may be used
+**Participant-side Selection:** The ACM runtime sends a list of Participant IDs that may be used
in the Participant Update message. In this case, the candidate participants decide among
themselves which participant should host the Automation Composition Element.
This approach makes it easy to scale Automation Composition life cycle management. As Automation Composition
-Instance counts increase, more than one CLAMP runtime can be deployed and REST/supervision
+Instance counts increase, more than one ACM runtime can be deployed and REST/supervision
operations on Automation Composition Instances can run in parallel. The number of participants can
scale because an asynchronous broadcast mechanism is used for runtime-participant communication
-and there is no direct connection or communication channel between participants and CLAMP
+and there is no direct connection or communication channel between participants and ACM
runtime servers. Participant state, Automation Composition Instance state, and Automation Composition Element
state is held in the database, so any CLAMP runtime server can handle operations for any
participant. Because many participants of a particular type can be deployed and participant
@@ -392,7 +423,7 @@ instances can load balance automation composition element instances for differen
of many types across themselves using a mechanism such as a Kubernetes cluster.
-4.3 Sandboxing and API Gateway Support
+5.3 Sandboxing and API Gateway Support
--------------------------------------
At runtime, interaction between ONAP platform services and application microservices are
@@ -421,7 +452,7 @@ Instance and Automation Composition Element level.
At design time, the Automation Composition type definition specifies the type of API gateway configuration
that should be supported at Automation Composition and Automation Composition Element levels.
-At runtime, the CLAMP can configure the API gateway to enable (or deny) interactions between
+At runtime, the ACM-R can configure the API gateway to enable (or deny) interactions between
Automation Composition Instances and individually for each Automation Composition Element. All service-level
interactions in/out of a Automation Composition Element, except that to/from the API Gateway, can be
blocked by networking policies, thus sandboxing a Automation Composition Element and an entire Automation
@@ -438,7 +469,7 @@ configuration for their Automation Composition Element.
Monitoring and logging of the use of the API gateway may also be provided. Information and
statistics on API gateway use can be read from the API gateway and passed back in monitoring
-messages to the CLAMP runtime.
+messages to the ACM runtime.
Additional isolation and execution-environment sandboxing can be supported depending on the
Automation Composition Element Type. For example: ONAP policies for given Automation Composition Instances/Types
@@ -446,7 +477,7 @@ can be executed in a dedicated PDP engine instances; DCAE or K8S-hosted services
in isolated namespaces or in dedicated workers/clusters; etc..
-5 APIs and Protocols
+6 APIs and Protocols
====================
The APIs and Protocols used by CLAMP for Automation Compositions are described on the pages below:
@@ -456,7 +487,7 @@ The APIs and Protocols used by CLAMP for Automation Compositions are described o
#. :ref:`REST APIs for CLAMP Automation Compositions <acm-rest-apis-label>`
-6 Design and Implementation
+7 Design and Implementation
===========================
The design and implementation of TOSCA Automation Compositions in CLAMP is described for each executable entity on the pages below:
diff --git a/docs/clamp/acm/draw.io/acm-concepts.drawio b/docs/clamp/acm/draw.io/acm-concepts.drawio
new file mode 100644
index 00000000..9ef513c8
--- /dev/null
+++ b/docs/clamp/acm/draw.io/acm-concepts.drawio
@@ -0,0 +1 @@
+<mxfile host="drawio-plugin" modified="2023-04-14T14:24:19.568Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="Zb9oexhmKxQXwYzSQ46_" version="20.5.3" type="embed"><diagram id="bvb-jbqjrMuuALgzDfic" name="Page-1"><mxGraphModel dx="1631" dy="1013" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="tXU4QVJW2cZJAh9cHZi9-1" value="Automation Composition Runtime" style="shape=umlFrame;whiteSpace=wrap;html=1;width=140;height=30;fillColor=none;" parent="1" vertex="1"><mxGeometry x="370" y="70" width="340" height="310" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-2" value="Automation Composition Definition" style="shape=umlFrame;whiteSpace=wrap;html=1;width=140;height=30;fillColor=none;" parent="1" vertex="1"><mxGeometry x="50" y="70" width="280" height="310" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-3" value="Automation Composition Concepts" style="shape=umlFrame;whiteSpace=wrap;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;width=140;height=30;fillColor=none;" parent="1" vertex="1"><mxGeometry x="40" y="25" width="680" height="365" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-4" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-30" target="tXU4QVJW2cZJAh9cHZi9-29" edge="1"><mxGeometry relative="1" as="geometry"><mxPoint x="377.5" y="492" as="sourcePoint"/><mxPoint x="378" y="544" as="targetPoint"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-5" value="1" style="resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-4" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="5" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-6" value="1..n" style="resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-4" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="25" y="-20" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-7" value="Executes" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-29" target="tXU4QVJW2cZJAh9cHZi9-34" edge="1"><mxGeometry x="0.1411" y="-13" relative="1" as="geometry"><mxPoint x="509" y="353" as="sourcePoint"/><mxPoint x="559" y="644" as="targetPoint"/><Array as="points"/><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-8" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-7" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="-30" y="17" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-9" value="" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-7" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="-10" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-10" value="Manages Lifecycle Of" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-30" target="tXU4QVJW2cZJAh9cHZi9-28" edge="1"><mxGeometry x="0.3636" relative="1" as="geometry"><mxPoint x="603" y="523" as="sourcePoint"/><mxPoint x="563" y="312" as="targetPoint"/><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-11" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-10" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-12" value="1" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-10" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint y="12.5" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-13" value="Defines" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-30" target="tXU4QVJW2cZJAh9cHZi9-32" edge="1"><mxGeometry x="0.8243" y="9" relative="1" as="geometry"><mxPoint x="620" y="523" as="sourcePoint"/><mxPoint x="760" y="478" as="targetPoint"/><mxPoint as="offset"/><Array as="points"><mxPoint x="420" y="188"/><mxPoint x="420" y="114"/></Array></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-14" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-13" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="-30" y="-2.5" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-15" value="" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-13" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="-10" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-16" value="Defines" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-29" target="tXU4QVJW2cZJAh9cHZi9-33" edge="1"><mxGeometry x="0.8205" relative="1" as="geometry"><mxPoint x="580" y="650" as="sourcePoint"/><mxPoint x="310" y="348" as="targetPoint"/><Array as="points"><mxPoint x="548" y="250"/><mxPoint x="243" y="250"/></Array><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-17" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-16" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="-34" y="-2" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-18" value="" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-16" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="-10" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-19" value="Defines" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-34" target="tXU4QVJW2cZJAh9cHZi9-31" edge="1"><mxGeometry x="0.119" y="-10" relative="1" as="geometry"><mxPoint x="490" y="426.5" as="sourcePoint"/><mxPoint x="410" y="350" as="targetPoint"/><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-20" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-19" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="-30" y="-2.5" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-21" value="" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-19" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="-10" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-22" value="Supports" style="endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-33" target="tXU4QVJW2cZJAh9cHZi9-31" edge="1"><mxGeometry x="-0.3798" y="3" relative="1" as="geometry"><mxPoint x="191" y="233" as="sourcePoint"/><mxPoint x="153" y="663" as="targetPoint"/><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-23" value="1..n" style="resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-22" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="-28" y="20" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-24" value="" style="resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-22" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="-10" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-25" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="tXU4QVJW2cZJAh9cHZi9-32" target="tXU4QVJW2cZJAh9cHZi9-33" edge="1"><mxGeometry relative="1" as="geometry"><mxPoint x="648" y="403" as="sourcePoint"/><mxPoint x="328" y="263" as="targetPoint"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-26" value="1" style="resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-25" connectable="0" vertex="1"><mxGeometry x="-1" relative="1" as="geometry"><mxPoint x="5" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-27" value="1..n" style="resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;" parent="tXU4QVJW2cZJAh9cHZi9-25" connectable="0" vertex="1"><mxGeometry x="1" relative="1" as="geometry"><mxPoint x="25" y="-20" as="offset"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-28" value="Automation Composition Runtime" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="480" y="108" width="198" height="28" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-29" value="Automation Composition Element" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=28;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1" collapsed="1"><mxGeometry x="520" y="339" width="177" height="28" as="geometry"><mxRectangle x="430" y="350" width="130" height="28" as="alternateBounds"/></mxGeometry></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-30" value="Automation Composition Instance" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="480" y="200" width="200" height="30" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-31" value="Participant Type" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="63" y="253" width="90" height="28" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-32" value="AUtomation Composition Type" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="100" y="108" width="173" height="28" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-33" value="Automation Composition Element Type" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="90" y="173" width="210" height="28" as="geometry"/></mxCell><mxCell id="tXU4QVJW2cZJAh9cHZi9-34" value="Participant" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=110;fillColor=none;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=10;align=center;" parent="1" vertex="1"><mxGeometry x="410" y="290" width="70" height="28" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file
diff --git a/docs/clamp/acm/draw.io/acm-instance-states.drawio b/docs/clamp/acm/draw.io/acm-instance-states.drawio
new file mode 100644
index 00000000..d78d8c74
--- /dev/null
+++ b/docs/clamp/acm/draw.io/acm-instance-states.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2023-04-14T15:30:30.126Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" etag="jZRzBngGmc27DtbIDxr-" version="21.1.8" type="device"><diagram id="oVKnN-L9xyo0QkGYcwZH" name="Page-1">7Vvbdps4FP0aPyaLO/Zj4jidWZM2XU16mzcFZFurgBiBY7tfPxJIXCRMiAdw2nEeHN0QQnufraODmJjzcPeOgHj9HvswmBiav5uYNxPDMDTXov9YyT4v0TWHl6wI8nlZWfCAfkLRkJdukA+TWsMU4yBFcb3Qw1EEvbRWBgjB23qzJQ7qd43Bit9RKwsePBBApdlX5KfrvHRqV1r/AdFqLe6sa7wmBKIxL0jWwMfbSpG5mJhzgnGap8LdHAZs9sS85NfdHqgtBkZglHa5wLx9/PsOBp9+zi5sff91NSeb6QXv5RkEG/7AV5sU07EjHNHyOQ5jnCCe+zNKUhB5kCbv5u/5U6V7MVX0AWOW3ITBLQEhTV5v1yiFDzHwWPmWUoSWrdMwoDmdJgneRD70ea6YII1mPBwij6cD8ASDa+D9WGUXzHGACa2KcMTukaQE/yjAYR0tcZTeghAFjHRfIPFBBHgxJ5hOZ/8aBGgV0YxHJxASNlrRh8PuuhawZjl1tsXUQZLCXaWIz/47iEOYkj1twmtNToR9PbstaaVrglfrCqdslxcCzuVV0XUJN01wxF+BvqGgr4BKe6GmBuu4CaQpHUj6kIKU1S9REAhoJvTpsr8Cn0rNcslreoG/I9gs3zQ6hQQ+IlRHGOHp8+ENg6YP8PWpXUNft2wFfrMBfHMo7E0F+88fbhYf7+6/L2jm9u5+/tfiRqFDHbIXzBsQj0NgWCpBlvTPayfIG6FEH/DrkvG7+qVKAL3J/J2hGGCpxu7TtY9nMUnXeIUjECzK0iq6cIfSb5X0d4YNfSiai+jwvnGoskxZ144cjPwrtmiz+8cwyks4ZtNWqrxS8wO4TPm4b3ZipCyzrw67rMpyou4gH6heEA+2TDmHnMrmCqYt7dy8HcOjlV0EBnSpfq77Kr0TxVak4v7TzeITLXq8pz+5akyY++GAkGlA/ktLPn9gOnJWkZ5UxLTqKmJYM1VDjDE1xGnVEBg84e0L8qEdlg+9Lh/uWT/0aUcBMfsWEH7pR4zomAtC2hIhralV7yIfKL9K4loxjOPp57Y4MReP9xelQ3NWoF4UyJY3Ma7b5MeMqkHTozXojYlJi9vUJictjthBeTpegtyOCqQ740iQa8jb6lm9i/yJBpOg2X/zot8WBY+nhXHShYlOEthXGsQM7eQwaQxNcqR0KXb2uvY0kY+gV2aJLWO/GzTjF9uhvSB8fcub2ZHH9jjqpruSg2WOq2663g8HVS//jdFsACrps3E4UnhWgiNON44oHVlSR7YuuWwDe/O6+Zt7coY9Oc5dG2g36XT15XqPRx1gsrS7cAzrOCbLHVmz2bhMbo+t/oJMlmIxXfckdd13h9qU6J13JWNpstYXk7UTM9n+3Zj8yt318K6k2MCOzUnLPdJPkJ1S1xk36ifWrUrYL39dyUJ++SuHc8ivt5CfHGA5/UsHXQ37Vt5cTwwnYAb/RGhqxVJnSvRMiZkU9jenzsmjwOLVSAMpclk4vwvomQXy28hiPTkdB2YKB4TtMw6cVWDQheH0+IubnQ+0jX+gzbZV9Ec90FY8QhX83BVgc1VjgfPPBouKiySb1SvaQHfiXVkp3Ic5gYwQvC86try7vFLhF52+VCJXjS8C5Qq5eJGCHAMDeSC44hUh8v1sk9WkUSX3ejquKsdQisNpFYCtBoCNwQA2BgKY7mLh/xFgaf1usuBxAVbPpJZHzufscQmO2ZTBhN0+8jNgMtvUvDWIViyBiU/n1tCeIIpWrAHMqJHifLrofKMY8JeDjcfXKR4BlcmXXQE6FEQfnCEpLvpYFl2Lg/PGJAszmD05XdKiq1uqVRb78ypquvxevD/YLAW2K4ZW5XOBiK6DhubDOMB7yGDLvieow6E9bXIbRtktDzhrA6M07QclW94zdz8mU3xA0j9O6jnOlo89xNHNwqCqhgSyu0n45QYJtoB2kZkegUmMowSObWuO0ZODq8m21uDgNvk4A2Kohr5aMKwYXA7OJgqw96O0wCYcx4XK7SkiIRtc94jEgGCpcSpZGFfoGUYVI8usS8QqDqN0SfOPa5RkRhbi52xBTNesR1R2viQ4LMorl/8mS5/pnn7pU4NOTQgXINRgFvoaNWE0un/SkyG6yocuDZrZ5FUOaIZqVEj4+j56LoLEUUUtWzRV2Fe24pHcuUlfcG4uK3uLyi0bRqEGrztf+riGDAcPRJn3y9Q+9qlznI2IZCNk2xz/svs9RmXgtCeZsKWVwOhKQMsQS0b/H9upgalXUczLQhDZCp7kvpWHwxAlCb0gJyz7HpcivERR1svI8tHThlR+Qdmg743IyeeUOuBGs+Wn1/mLyfILdnPxLw==</diagram></mxfile>
diff --git a/docs/clamp/acm/draw.io/acm-overview.drawio b/docs/clamp/acm/draw.io/acm-overview.drawio
new file mode 100644
index 00000000..d842e06f
--- /dev/null
+++ b/docs/clamp/acm/draw.io/acm-overview.drawio
@@ -0,0 +1 @@
+<mxfile host="drawio-plugin" modified="2023-04-14T14:12:32.931Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="B0CZ_13FJ164OxiPQfnF" version="20.5.3" type="embed"><diagram id="KfsiAd6VWCwOmLBcd4b7" name="Page-1"><mxGraphModel dx="2031" dy="1413" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="y7BpoCNVdQsxZ7AoowJW-1" value="" style="endArrow=classic;html=1;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="200" y="360" as="sourcePoint"/><mxPoint x="760" y="360" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-2" value="" style="endArrow=classic;html=1;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="200" y="370" as="sourcePoint"/><mxPoint x="760" y="370" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-3" value="" style="endArrow=classic;html=1;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="200" y="350" as="sourcePoint"/><mxPoint x="760" y="350" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-4" value="Automation Composition Management Design (SDC)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="40" y="-20" width="210" height="170" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-5" value="&lt;div&gt;Design Time Catalogue&lt;/div&gt;" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#f8cecc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="60" y="50" width="70" height="80" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-6" value="Automation Composition Management Runtime (ACM-R)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="420" y="10" width="310" height="160" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-7" value="&lt;div&gt;Run Time Inventory&lt;/div&gt;" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#f8cecc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="540" y="40" width="70" height="80" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-8" value="Automation Composition Element Definitions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-130" y="-37.5" width="120" height="60" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-9" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-8" target="y7BpoCNVdQsxZ7AoowJW-5" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="60" y="105" as="sourcePoint"/><mxPoint x="40" y="60" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-10" value="Metadata" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=13;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-120" y="52.5" width="80" height="60" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-11" value="" style="endArrow=none;dashed=1;html=1;exitX=0;exitY=0;exitDx=80;exitDy=36.5;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-10" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="210" y="322.5" as="sourcePoint"/><mxPoint x="20" y="20" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-12" value="&lt;div&gt;Automation Composition&lt;/div&gt;&lt;div&gt;Assembling&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="160" y="35" width="80" height="60" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-13" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-5" target="y7BpoCNVdQsxZ7AoowJW-12" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="100" y="315" as="sourcePoint"/><mxPoint x="150" y="265" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-14" value="&lt;font style=&quot;font-size: 10px&quot;&gt;AC Definition (TOSCA)&lt;/font&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=9;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="270" y="120" width="70" height="40" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-15" value="&lt;div&gt;AC Execution Control&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="430" y="35" width="80" height="75" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-16" value="" style="endArrow=none;dashed=1;html=1;exitX=0.6;exitY=-0.017;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-14" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="263.5" y="210" as="sourcePoint"/><mxPoint x="330" y="70" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-17" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-7" target="y7BpoCNVdQsxZ7AoowJW-15" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="180" y="330" as="sourcePoint"/><mxPoint x="230" y="280" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-18" value="DMaaP" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="230" y="242" width="500" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-19" value="&lt;div&gt;AC Execution Monitoring&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="640" y="40" width="80" height="60" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-20" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-19" target="y7BpoCNVdQsxZ7AoowJW-7" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="550" y="90" as="sourcePoint"/><mxPoint x="520" y="75" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-21" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="230" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-22" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="316" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-23" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="402" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-24" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="488" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-25" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="660" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-26" value="AC Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="574" y="302" width="70" height="98" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-27" value="" style="endArrow=classic;html=1;exitX=0.898;exitY=0.1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-18" target="y7BpoCNVdQsxZ7AoowJW-19" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="480" y="105" as="sourcePoint"/><mxPoint x="482" y="227" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-28" value="&lt;font style=&quot;font-size: 10px&quot;&gt;Control&lt;br&gt;Messages&lt;/font&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=13;verticalAlign=top;horizontal=1;spacing=-1;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="350" y="170" width="62" height="40" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-29" value="&lt;font style=&quot;font-size: 10px&quot;&gt;Monitoring&lt;br&gt;Messages&lt;/font&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=13;verticalAlign=top;horizontal=1;spacing=-1;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="750" y="180" width="62" height="40" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-30" value="" style="endArrow=none;dashed=1;html=1;exitX=1.027;exitY=0.567;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-28" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="322" y="129.32000000000005" as="sourcePoint"/><mxPoint x="450" y="150" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-31" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-18" target="y7BpoCNVdQsxZ7AoowJW-21" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="480" y="127" as="sourcePoint"/><mxPoint x="482" y="249" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-32" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="331.5" y="262" as="sourcePoint"/><mxPoint x="330" y="299.34000000000015" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-33" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="421.5" y="264.65999999999985" as="sourcePoint"/><mxPoint x="420" y="302" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-34" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="501.5" y="264.65999999999985" as="sourcePoint"/><mxPoint x="500" y="301.99999999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-35" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="591.5" y="264.65999999999985" as="sourcePoint"/><mxPoint x="590" y="301.99999999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-36" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="671.5" y="264.65999999999985" as="sourcePoint"/><mxPoint x="670" y="301.99999999999955" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-37" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="710" y="299.3399999999997" as="sourcePoint"/><mxPoint x="711.5" y="262" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-38" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="630" y="302" as="sourcePoint"/><mxPoint x="631.5" y="264.65999999999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-39" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="540" y="301.99999999999955" as="sourcePoint"/><mxPoint x="541.5" y="264.65999999999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-40" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="460" y="299.3399999999997" as="sourcePoint"/><mxPoint x="461.5" y="262" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-41" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="370" y="302" as="sourcePoint"/><mxPoint x="371.5" y="264.65999999999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-42" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="280" y="301.99999999999955" as="sourcePoint"/><mxPoint x="281.5" y="264.65999999999985" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-43" value="" style="endArrow=none;dashed=1;html=1;exitX=0.645;exitY=1.05;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-28" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="401.64599999999996" y="232.68000000000006" as="sourcePoint"/><mxPoint x="420" y="282" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-44" value="" style="endArrow=none;dashed=1;html=1;exitX=-0.059;exitY=0.35;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-29" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="423.674" y="202.67999999999995" as="sourcePoint"/><mxPoint x="680" y="160" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-45" value="" style="endArrow=none;dashed=1;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-29" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="771" y="232" as="sourcePoint"/><mxPoint x="710" y="282" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-46" value="&lt;div&gt;Automation&lt;br&gt;Composition&lt;br&gt;&lt;/div&gt;&lt;div&gt;Execution&lt;br&gt;&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="140" y="302" width="40" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-47" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="190" y="360" as="sourcePoint"/><mxPoint x="150" y="340" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-48" value="Other Systems&lt;br&gt;&lt;div&gt;(eg. DCAE-MOD)&lt;/div&gt;&lt;div&gt;(Others)&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-130" y="137.5" width="120" height="60" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-49" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.029;entryY=0.788;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-48" target="y7BpoCNVdQsxZ7AoowJW-5" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="60" y="10" as="sourcePoint"/><mxPoint x="40" y="100" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-50" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-40" y="92.5" as="sourcePoint"/><mxPoint x="20" y="140" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-53" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-12" target="y7BpoCNVdQsxZ7AoowJW-15" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="240" y="65" as="sourcePoint"/><mxPoint x="430" y="65" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-54" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#000000;fontColor=#000000;direction=south;" parent="1" vertex="1"><mxGeometry x="350" y="55" width="17.5" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-55" value="" style="endArrow=classic;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-15" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="470" y="95" as="sourcePoint"/><mxPoint x="460" y="240" as="targetPoint"/><Array as="points"><mxPoint x="450" y="140"/></Array></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-56" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#000000;fontColor=#000000;direction=south;" parent="1" vertex="1"><mxGeometry x="450" y="204" width="17.5" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-57" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#000000;fontColor=#000000;direction=south;" parent="1" vertex="1"><mxGeometry x="671.25" y="180" width="17.5" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-58" value="&lt;font size=&quot;1&quot;&gt;&lt;b style=&quot;font-size: 15px&quot;&gt;Commissioning&lt;/b&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="270" y="-37.5" width="136" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-59" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;dashed=1;dashPattern=1 1;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-58" target="y7BpoCNVdQsxZ7AoowJW-54" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="280" y="330" as="sourcePoint"/><mxPoint x="330" y="280" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-60" value="&lt;font size=&quot;1&quot;&gt;&lt;b style=&quot;font-size: 15px&quot;&gt;Instantiation&lt;/b&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="504" y="206" width="136" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-61" value="" style="endArrow=classic;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;dashed=1;dashPattern=1 1;strokeColor=#000000;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="524" y="215.5" as="sourcePoint"/><mxPoint x="467.5" y="215.5" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-62" value="&lt;font size=&quot;1&quot;&gt;&lt;b style=&quot;font-size: 15px&quot;&gt;Monitoring&lt;/b&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="750" y="262" width="136" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-63" value="" style="endArrow=classic;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;dashed=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;dashPattern=1 1;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-62" target="y7BpoCNVdQsxZ7AoowJW-57" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="550" y="220" as="sourcePoint"/><mxPoint x="688.75" y="212" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-64" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#000000;fontColor=#000000;direction=south;" parent="1" vertex="1"><mxGeometry x="472" y="80" width="17.5" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-65" value="&lt;font size=&quot;1&quot;&gt;&lt;b style=&quot;font-size: 15px&quot;&gt;Supervision&lt;/b&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="489.5" y="177.5" width="136" height="20" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-66" value="" style="endArrow=classic;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;dashed=1;dashPattern=1 1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-65" target="y7BpoCNVdQsxZ7AoowJW-64" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="534" y="225.5" as="sourcePoint"/><mxPoint x="477.5" y="225.5" as="targetPoint"/></mxGeometry></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-67" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="233" y="340" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-68" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-67" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-69" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-67" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-70" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-67" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-71" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-67" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-72" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="318" y="340" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-73" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-72" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-74" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-72" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-75" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-72" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-76" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-72" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-77" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="406" y="342" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-78" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-77" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-79" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-77" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-80" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-77" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-81" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-77" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-82" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="491" y="341" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-83" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-82" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-84" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-82" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-85" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-82" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-86" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-82" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-87" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="578" y="341" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-88" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-87" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-89" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-87" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-90" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-87" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-91" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-87" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-92" value="" style="group;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1" connectable="0"><mxGeometry x="663" y="340" width="65" height="44" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-93" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-92" vertex="1"><mxGeometry width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-94" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-92" vertex="1"><mxGeometry x="5" y="5" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-95" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-92" vertex="1"><mxGeometry x="10" y="9" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-96" value="AC&lt;br&gt;Element" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcccc;strokeColor=#000000;fontColor=#000000;" parent="y7BpoCNVdQsxZ7AoowJW-92" vertex="1"><mxGeometry x="15" y="14" width="50" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-97" value="ACM Client (ACM-C)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="510" y="-47" width="130" height="30" as="geometry"/></mxCell><mxCell id="y7BpoCNVdQsxZ7AoowJW-98" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeColor=#000000;fontColor=#000000;" parent="1" source="y7BpoCNVdQsxZ7AoowJW-6" target="y7BpoCNVdQsxZ7AoowJW-97" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="240" y="320" as="sourcePoint"/><mxPoint x="290" y="270" as="targetPoint"/></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file
diff --git a/docs/clamp/acm/draw.io/api-gateway-sandbox.drawio b/docs/clamp/acm/draw.io/api-gateway-sandbox.drawio
new file mode 100644
index 00000000..78052944
--- /dev/null
+++ b/docs/clamp/acm/draw.io/api-gateway-sandbox.drawio
@@ -0,0 +1 @@
+<mxfile host="drawio-plugin" modified="2023-04-17T11:09:12.717Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="981j9kqHC77rX1gktut3" version="20.5.3" type="embed"><diagram id="5qC4zMirkx8gMw6tzPM5" name="Page-1"><mxGraphModel dx="1631" dy="1413" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="#FFFFFF" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="WGhXLp_J_A_eNvpc9kTa-1" value="" style="shape=flexArrow;endArrow=classic;html=1;strokeColor=#000000;strokeWidth=1;fillColor=#FFFA66;fontColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="160" y="369" as="sourcePoint"/><mxPoint x="760" y="369" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-3" value="" style="group;fontColor=#ffffff;strokeColor=none;fillColor=none;" parent="1" vertex="1" connectable="0"><mxGeometry x="230" y="233.65999999999985" width="490" height="190" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=8;strokeColor=#006EAF;fontColor=#ffffff;" parent="WGhXLp_J_A_eNvpc9kTa-3" vertex="1"><mxGeometry x="-30" y="16.680000000000007" width="520" height="173.32" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#000000;verticalAlign=bottom;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" vertex="1"><mxGeometry y="38.71000000000015" width="100" height="126.63" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-6" value="&amp;nbsp;Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" vertex="1"><mxGeometry x="11" y="47.340000000000146" width="80" height="44" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-7" value="" style="endArrow=none;html=1;fontColor=#000000;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" target="WGhXLp_J_A_eNvpc9kTa-6" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="51" y="105.34000000000015" as="sourcePoint"/><mxPoint x="147.1579999999999" y="214.21600000000012" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-8" value="Automation Composition Element" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#FFED4D;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" vertex="1"><mxGeometry x="10" y="105.34" width="80" height="54.35" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-9" value="" style="endArrow=classic;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="28" y="0.3400000000001455" as="sourcePoint"/><mxPoint x="27.5" y="37.340000000000146" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-10" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-3" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="60" y="37.33999999999969" as="sourcePoint"/><mxPoint x="61.5" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=8;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="215" y="261.3599999999999" width="130" height="148.66" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-11" value="Automation Composition Runtime (ACM-R)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="410" y="60" width="310" height="120" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-12" value="&lt;div&gt;Run Time Inventory&lt;/div&gt;" style="shape=cylinder;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;fillColor=#f8cecc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="530" y="90" width="70" height="80" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-13" value="&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;AC Definition (TOSCA)&lt;br&gt;including API Gateway Metadata&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=9;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="160" y="60" width="70" height="90" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-14" value="&lt;div&gt;ACM Execution Control&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="420" y="105" width="80" height="55" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-15" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-12" target="WGhXLp_J_A_eNvpc9kTa-14" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="170" y="380" as="sourcePoint"/><mxPoint x="220" y="330" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-16" value="DMaaP/Kafka" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="200" y="211" width="520" height="20" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-17" value="&lt;div&gt;CL Execution Monitoring&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="630" y="110" width="80" height="60" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-18" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-17" target="WGhXLp_J_A_eNvpc9kTa-12" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="540" y="140" as="sourcePoint"/><mxPoint x="510" y="125" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-19" value="" style="endArrow=classic;html=1;exitX=0.898;exitY=0.1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-16" target="WGhXLp_J_A_eNvpc9kTa-17" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="470" y="155" as="sourcePoint"/><mxPoint x="472" y="277" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-20" value="Automation&lt;br&gt;Composition" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;strokeWidth=0;" parent="1" vertex="1"><mxGeometry x="120" y="281" width="40" height="30" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-21" value="" style="endArrow=none;dashed=1;html=1;fontColor=#000000;strokeColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="180" y="369" as="sourcePoint"/><mxPoint x="140" y="321" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-22" value="" style="endArrow=classic;html=1;exitX=0.986;exitY=0.475;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-13" target="WGhXLp_J_A_eNvpc9kTa-14" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="230" y="115" as="sourcePoint"/><mxPoint x="420" y="115" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-23" value="" style="endArrow=classic;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-14" target="WGhXLp_J_A_eNvpc9kTa-16" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="460" y="145" as="sourcePoint"/><mxPoint x="450" y="290" as="targetPoint"/><Array as="points"><mxPoint x="460" y="190"/></Array></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-24" value="Specify API Gateway configuration for entire Automation Compostion Instance&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#dae8fc;strokeColor=#000000;size=9;verticalAlign=top;gradientColor=#7ea6e0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="290" y="-40" width="110" height="100" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-25" value="" style="endArrow=none;dashed=1;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-14" target="WGhXLp_J_A_eNvpc9kTa-24" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="260" y="330" as="sourcePoint"/><mxPoint x="310" y="280" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-26" value="Specify API Gateway configuration for each Participant&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=9;verticalAlign=top;gradientColor=#97d077;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="450" y="-40" width="100" height="70" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-27" value="" style="endArrow=none;dashed=1;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-14" target="WGhXLp_J_A_eNvpc9kTa-26" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="462.0588235294117" y="115" as="sourcePoint"/><mxPoint x="425" y="10" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-28" value="Monitor API Gateway access&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#bac8d3;strokeColor=#000000;size=9;verticalAlign=top;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="760" y="20" width="100" height="50" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-29" value="" style="endArrow=none;dashed=1;html=1;entryX=0.41;entryY=1.02;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-17" target="WGhXLp_J_A_eNvpc9kTa-28" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="490" y="115" as="sourcePoint"/><mxPoint x="550" y="-10" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-30" value="" style="group;fontColor=#000000;strokeColor=none;" parent="1" vertex="1" connectable="0"><mxGeometry x="411" y="229.99999999999983" width="116" height="181.02" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-31" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#000000;verticalAlign=bottom;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-30" vertex="1"><mxGeometry y="43.37000000000012" width="100" height="126.63" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-32" value="&amp;nbsp;Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-30" vertex="1"><mxGeometry x="11" y="47.340000000000146" width="80" height="44" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-33" value="" style="endArrow=none;html=1;fontColor=#000000;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-30" target="WGhXLp_J_A_eNvpc9kTa-32" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="51" y="105.34000000000015" as="sourcePoint"/><mxPoint x="147.1579999999999" y="214.21600000000012" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-34" value="Automation Composition Element" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#FFED4D;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-30" vertex="1"><mxGeometry x="10" y="105.34" width="80" height="54.35" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-35" value="" style="group;fontColor=#000000;strokeColor=none;" parent="1" vertex="1" connectable="0"><mxGeometry x="594" y="231.99999999999983" width="115" height="187.36999999999998" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-36" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#000000;verticalAlign=bottom;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" vertex="1"><mxGeometry y="38.71000000000015" width="100" height="126.63" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-37" value="&amp;nbsp;Participant" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" vertex="1"><mxGeometry x="11" y="47.340000000000146" width="80" height="44" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-38" value="" style="endArrow=none;html=1;fontColor=#000000;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" target="WGhXLp_J_A_eNvpc9kTa-37" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="51" y="105.34000000000015" as="sourcePoint"/><mxPoint x="147.1579999999999" y="214.21600000000012" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-39" value="Automation Composition Element" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#FFED4D;strokeColor=#000000;fontColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" vertex="1"><mxGeometry x="10" y="105.34" width="80" height="54.35" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-40" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=8;strokeColor=#2D7600;fontColor=#ffffff;" parent="WGhXLp_J_A_eNvpc9kTa-35" vertex="1"><mxGeometry x="-15" y="27.69999999999998" width="130" height="148.66" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-41" value="" style="endArrow=classic;html=1;exitX=0.038;exitY=1.133;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="60" y="37.33999999999969" as="sourcePoint"/><mxPoint x="61.5" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-42" value="" style="endArrow=classic;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;strokeColor=#000000;" parent="WGhXLp_J_A_eNvpc9kTa-35" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="28" y="1.7053025658242404e-13" as="sourcePoint"/><mxPoint x="27.5" y="37.340000000000146" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-43" value="Automation Composition Instance sandboxed by API Gateway using configuration for entire Automation Composition Instance&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#dae8fc;strokeColor=#000000;size=9;verticalAlign=top;gradientColor=#7ea6e0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="780" y="110" width="130" height="119" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-44" value="" style="endArrow=none;dashed=1;html=1;entryX=0.331;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-4" target="WGhXLp_J_A_eNvpc9kTa-43" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="190" y="379" as="sourcePoint"/><mxPoint x="150" y="331" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-45" value="Individual Automation Composition Elements sandboxed by API Gateway using configuration for the Automation Composition Element&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 10px&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#d5e8d4;strokeColor=#000000;size=9;verticalAlign=top;gradientColor=#97d077;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="350" y="450" width="150" height="110" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-46" value="" style="endArrow=none;dashed=1;html=1;entryX=0.288;entryY=0.754;entryDx=0;entryDy=0;entryPerimeter=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-45" target="WGhXLp_J_A_eNvpc9kTa-4" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="730" y="303.66999999999985" as="sourcePoint"/><mxPoint x="853.0300000000002" y="240" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-47" value="" style="endArrow=none;dashed=1;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=60.5;exitDy=0;exitPerimeter=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-45" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="418.54195901245384" y="491" as="sourcePoint"/><mxPoint x="462" y="411.02" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-48" value="" style="endArrow=none;dashed=1;html=1;entryX=0.008;entryY=0.944;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=121;exitDy=0;exitPerimeter=0;entryPerimeter=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-45" target="WGhXLp_J_A_eNvpc9kTa-40" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="440.5" y="491" as="sourcePoint"/><mxPoint x="472" y="421.02" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-49" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=8;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="395" y="261.3599999999998" width="130" height="148.66" as="geometry"/></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-50" value="" style="endArrow=classic;html=1;entryX=0.377;entryY=0.975;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.585;exitY=0.001;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#000000;strokeColor=#000000;" parent="1" source="WGhXLp_J_A_eNvpc9kTa-31" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="470" y="267" as="sourcePoint"/><mxPoint x="469.5" y="231.5" as="targetPoint"/></mxGeometry></mxCell><mxCell id="WGhXLp_J_A_eNvpc9kTa-51" value="" style="endArrow=classic;html=1;fontColor=#000000;strokeColor=#000000;" parent="1" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="440" y="230" as="sourcePoint"/><mxPoint x="440" y="273" as="targetPoint"/></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file
diff --git a/docs/clamp/acm/draw.io/feature-automation-compositions.drawio b/docs/clamp/acm/draw.io/feature-automation-compositions.drawio
new file mode 100644
index 00000000..056f5e4d
--- /dev/null
+++ b/docs/clamp/acm/draw.io/feature-automation-compositions.drawio
@@ -0,0 +1 @@
+<mxfile host="drawio-plugin" modified="2023-04-14T13:39:50.992Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="Zsdg9rKQ1hq74QbQaHBk" version="20.5.3" type="embed"><diagram id="lSokAbcfXSGMeVBiZo5u" name="Page-1"><mxGraphModel dx="2831" dy="1813" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="#FFFFFF" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="aK3J91lnGgMxlQ-kPJ-H-1" value="Feature A Analytic&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cce5ff;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-555" y="-285" width="90" height="50" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-2" value="Feature B AI&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cdeb8b;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-557.5" y="-430" width="90" height="50" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-3" value="Counter Metadata for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-740" y="-295" width="90" height="75" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#CCE5FF;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="85" y="-285" width="40" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-5" value="Policies for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-410" y="-295" width="90" height="75" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-6" value="Ansible Playbook for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-147.5" y="-295" width="90" height="75" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#CDEB8B;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="85" y="-415" width="40" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-8" value="Persistence Subscription Metadata for&amp;nbsp; Feature B" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cdeb8b;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-720" y="-450" width="90" height="95" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-9" value="Workflow Metadata for&amp;nbsp; Feature B" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cdeb8b;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-252.5" y="-445" width="90" height="95" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-10" value="Feature C Analytic&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffff88;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-555" y="-564" width="90" height="50" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-11" value="Counter Metadata for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#ffff88;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-790" y="-564" width="90" height="75" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-12" value="Netconf Configuration&amp;nbsp; for Feature C" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#ffff88;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-92.5" y="-561.5" width="90" height="75" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-13" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffff88;strokeColor=#36393d;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="80" y="-544" width="40" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-14" value="Feature C&lt;br&gt;Automation&lt;br&gt;Composition" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="140" y="-544" width="60" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-15" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#FFFF88;strokeWidth=7;arcSize=40;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-830" y="-580" width="890" height="100" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontColor=#000000;" parent="1" source="aK3J91lnGgMxlQ-kPJ-H-15" target="aK3J91lnGgMxlQ-kPJ-H-15" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-17" value="Feature B&lt;br&gt;Automation&lt;br&gt;Composition" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="140" y="-415" width="60" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-18" value="Feature A&lt;br&gt;Automation&lt;br&gt;Composition" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="140" y="-285" width="60" height="30" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-19" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#CDEB8B;strokeWidth=7;arcSize=40;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-830" y="-460" width="890" height="120" as="geometry"/></mxCell><mxCell id="aK3J91lnGgMxlQ-kPJ-H-20" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#CCE5FF;strokeWidth=7;arcSize=40;fontColor=#000000;" parent="1" vertex="1"><mxGeometry x="-830" y="-320" width="890" height="105" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file
diff --git a/docs/clamp/acm/draw.io/feature-compositions.drawio b/docs/clamp/acm/draw.io/feature-compositions.drawio
new file mode 100644
index 00000000..da9b3e59
--- /dev/null
+++ b/docs/clamp/acm/draw.io/feature-compositions.drawio
@@ -0,0 +1 @@
+<mxfile host="drawio-plugin" modified="2023-04-14T12:49:10.271Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="mzABpIjCA13g6pmTEEeU" version="20.5.3" type="embed"><diagram id="afCysr8GEn6kYzTnkZfl" name="Page-1"><mxGraphModel dx="2831" dy="1813" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="#FFFFFF" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="nrERlms_FdSTFeYwvalG-1" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-590" y="-220" width="125" height="90" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-2" value="Feature A Analytic&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cce5ff;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-575" y="-210" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-3" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-810" y="-110" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-4" value="Common&lt;br&gt;Collection Microservices" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-795" y="-90" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-5" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-130" y="-110" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-6" value="Controller Microservices" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-115" y="-90" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-7" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-450" y="-110" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-8" value="Policy Microservices" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-435" y="-90" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-9" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-592.5" y="-340" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-10" value="Feature B AI&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cdeb8b;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-577.5" y="-320" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-11" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-290" y="-110" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-12" value="Workflow&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-275" y="-90" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-13" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-292.5" y="-447.5" width="125" height="90" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-14" value="Feature C Machine Learning&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffff88;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-277.5" y="-437.5" width="97.5" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-15" value="Counter Metadata for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-760" y="-220" width="90" height="75" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-16" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cce5ff;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="60" y="-220" width="40" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-17" value="Feature A" style="text;html=1;strokeColor=#050505;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="110" y="-220" width="60" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-18" value="Policies for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-430" y="-220" width="90" height="75" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.433;exitY=0.92;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-15" target="nrERlms_FdSTFeYwvalG-4" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-250" y="-240" as="sourcePoint"/><mxPoint x="-200" y="-290" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.411;exitY=0.947;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-18" target="nrERlms_FdSTFeYwvalG-8" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-731.03" y="-206" as="sourcePoint"/><mxPoint x="-718.75" y="-100" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-21" value="Ansible Playbook for&amp;nbsp; Feature A" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cce5ff;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-167.5" y="-220" width="90" height="75" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.422;exitY=0.947;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-21" target="nrERlms_FdSTFeYwvalG-6" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-383.01" y="-198.9749999999999" as="sourcePoint"/><mxPoint x="-330" y="-120" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-23" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#cdeb8b;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="60" y="-305" width="40" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-24" value="Feature B" style="text;html=1;strokeColor=#050505;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="110" y="-305" width="60" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-25" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-640" y="-110" width="125" height="100" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-26" value="Persistence Microservices" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-625" y="-90" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-27" value="Persistence Subscription Metadata for&amp;nbsp; Feature B" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cdeb8b;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-740" y="-340" width="90" height="95" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.578;exitY=0.789;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-27" target="nrERlms_FdSTFeYwvalG-25" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-731.03" y="-206" as="sourcePoint"/><mxPoint x="-740" y="-80" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-29" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#050505;gradientColor=#b3b3b3;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="60" y="-90" width="40" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-30" value="Support" style="text;html=1;strokeColor=#050505;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="110" y="-90" width="60" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-31" value="Workflow Metadata for&amp;nbsp; Feature B" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#cdeb8b;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-272.5" y="-335" width="90" height="95" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.461;exitY=0.926;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-31" target="nrERlms_FdSTFeYwvalG-11" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-677.98" y="-355.0450000000001" as="sourcePoint"/><mxPoint x="-598.75" y="-100" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-33" value="Container" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=bottom;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#050505;" parent="1" vertex="1"><mxGeometry x="-590" y="-450" width="125" height="90" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-34" value="Feature C Analytic&lt;br&gt;Microservice" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffff88;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-575" y="-440" width="90" height="50" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-35" value="Counter Metadata for&amp;nbsp; Feature C" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#ffff88;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-810" y="-440" width="90" height="75" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-36" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.278;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-35" target="nrERlms_FdSTFeYwvalG-4" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-731.03" y="-206" as="sourcePoint"/><mxPoint x="-740" y="-80" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-37" value="Netconf Configuration&amp;nbsp; for Feature C" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;fillColor=#ffff88;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="-112.5" y="-437.5" width="90" height="75" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-38" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.728;exitY=0.713;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fontColor=#333333;strokeColor=#050505;" parent="1" source="nrERlms_FdSTFeYwvalG-37" target="nrERlms_FdSTFeYwvalG-6" edge="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="-119.51999999999998" y="-198.9749999999999" as="sourcePoint"/><mxPoint x="-82.5" y="-80" as="targetPoint"/></mxGeometry></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-39" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffff88;strokeColor=#050505;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="60" y="-420" width="40" height="30" as="geometry"/></mxCell><mxCell id="nrERlms_FdSTFeYwvalG-40" value="Feature C" style="text;html=1;strokeColor=#050505;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#333333;" parent="1" vertex="1"><mxGeometry x="110" y="-420" width="60" height="30" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file
diff --git a/docs/clamp/acm/images/01-controlloop-overview.png b/docs/clamp/acm/images/01-controlloop-overview.png
deleted file mode 100644
index ac4f1459..00000000
--- a/docs/clamp/acm/images/01-controlloop-overview.png
+++ /dev/null
Binary files differ
diff --git a/docs/clamp/acm/images/02-controlloop-concepts.png b/docs/clamp/acm/images/02-controlloop-concepts.png
deleted file mode 100644
index b2469b90..00000000
--- a/docs/clamp/acm/images/02-controlloop-concepts.png
+++ /dev/null
Binary files differ
diff --git a/docs/clamp/acm/images/03-acm-instance-states.png b/docs/clamp/acm/images/03-acm-instance-states.png
index b9d4e7f7..62951f05 100644
--- a/docs/clamp/acm/images/03-acm-instance-states.png
+++ b/docs/clamp/acm/images/03-acm-instance-states.png
Binary files differ
diff --git a/docs/clamp/acm/images/03-controlloop-instance-states.png b/docs/clamp/acm/images/03-controlloop-instance-states.png
deleted file mode 100644
index 85e5aa8e..00000000
--- a/docs/clamp/acm/images/03-controlloop-instance-states.png
+++ /dev/null
Binary files differ
diff --git a/docs/clamp/acm/images/05-upgrade-states.png b/docs/clamp/acm/images/05-upgrade-states.png
index a10538c9..137d38ac 100644
--- a/docs/clamp/acm/images/05-upgrade-states.png
+++ b/docs/clamp/acm/images/05-upgrade-states.png
Binary files differ
diff --git a/docs/clamp/acm/images/06-api-gateway-sandbox.png b/docs/clamp/acm/images/06-api-gateway-sandbox.png
index e9da657b..8ebceca7 100644
--- a/docs/clamp/acm/images/06-api-gateway-sandbox.png
+++ b/docs/clamp/acm/images/06-api-gateway-sandbox.png
Binary files differ
diff --git a/docs/clamp/acm/images/feature-automation-compositions.png b/docs/clamp/acm/images/feature-automation-compositions.png
new file mode 100644
index 00000000..257b22e0
--- /dev/null
+++ b/docs/clamp/acm/images/feature-automation-compositions.png
Binary files differ
diff --git a/docs/clamp/acm/images/feature-compositions.png b/docs/clamp/acm/images/feature-compositions.png
new file mode 100644
index 00000000..4d2b8b2b
--- /dev/null
+++ b/docs/clamp/acm/images/feature-compositions.png
Binary files differ