diff --git a/SUMMARY.md b/SUMMARY.md
index 99f6b55..da0aec2 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -72,6 +72,7 @@
             * Workflow specific configuration
                 * [Configure AT&T workflow](profiles/seba/workflows/att-configure.md)
         * Operate
+            * [AT&T workflow description](profiles/seba/operate/att-workflow-description.md)
             * [Disable/Enable an ONU](profiles/seba/operate/onu-ops.md)
             * [Edit a Whitelist entry](profiles/seba/operate/whitelist-ops.md)
             * [Delete an OLT](profiles/seba/operate/olt-ops.md)
diff --git a/platform.md b/platform.md
index 9f09d67..20efd40 100644
--- a/platform.md
+++ b/platform.md
@@ -15,12 +15,19 @@
 
 ## CORD Platform as Separate Components
 
-Sometimes it his helpful (for example, when developing) to install the
-individual components that make up the CORD Platform one at a time.
-The following are the individual components included in the
-`cord-platform` chart:
+Alternatively, you may want to install the individual components separately.
+The following are the individual components included in the `cord-platform` chart:
 
 - [ONOS](./charts/onos.md#onos-manages-fabric--voltha)
 - [XOS](./charts/xos-core.md)
 - [Kafka](./charts/kafka.md)
 - [Logging-Monitoring](./charts/logging-monitoring.md)
+
+## Verify your installation and next steps
+
+Once the installation completes, monitor your setup using `kubectl get pods`.
+Wait until all pods are in *Running* state and “Tosca-loader” pods are in *Completed* state.
+
+>**Note:** Your pods may periodically transition into *error* state. This is expected. They will retry and eventually get to the desired state.
+
+You're now ready to install the desired profile. Please, continue to the [profile section](profiles.md).
diff --git a/profiles/seba/install.md b/profiles/seba/install.md
index d57c7d2..c4318ed 100644
--- a/profiles/seba/install.md
+++ b/profiles/seba/install.md
@@ -37,3 +37,13 @@
 - [VOLTHA and etcd-operator](../../charts/voltha.md)
 - [seba-services](../../charts/seba-services.md)
 - [base-kubernetes](../../charts/base-kubernetes.md)
+
+## Verify your installation and next steps
+
+Once the installation completes, monitor your setup using `kubectl get pods`.
+Wait until all pods are in *Running* state and “tosca-loader” pods are in *Completed* state.
+
+>**Note:** Your pods may periodically transition into *error* state. This is expected. They will retry and eventually get to the desired state.
+>**Note:** Depending on the profile you're installing, you may need to check also different namespaces (for example, check the voltha namespace if you're installing SEBA with `kubectl get pods -n voltha`)
+
+You're now ready to install the desired workflow. At the moment SEBA supports the AT&T workflow only. Please, continue to the [AT&T workflow section](workflows/att-install.md).
diff --git a/profiles/seba/operate/att-workflow-description.md b/profiles/seba/operate/att-workflow-description.md
new file mode 100644
index 0000000..13782e4
--- /dev/null
+++ b/profiles/seba/operate/att-workflow-description.md
@@ -0,0 +1,27 @@
+# AT&T Workflow description
+
+1. ONT discovered bottom-up
+2. If ONT serial number is not allowed or unknown (i.e it has NOT been provisioned by OSS), disable the ONT; generate an event to external OSS that an ONU has been discovered but not yet provisioned.
+3. When OSS provisions the ONT, re-enable it & program 802.1x flow - UNI port(s) will be UP
+4. Ensure that DHCP fails here (because subscriber/service-binding has not been provisioned by OSS yet)
+5. 802.1x EAPOL message happens from RG, and ONOS AAA app adds options and sends to radius server. Options are pulled from Sadis/NEM  - no subscriber information is required here
+6. If RG authentication fails, allow it to keep trying (in the future consider redirection to captive / self-help portal). DHCP should not succeed since RG authentication has failed
+7. If RG authentication succeeds, ONOS AAA app notifies via an event on the kafka bus that authentication has succeeded
+8. NEM can listen for the event, and then check to see if subscriber/service-binding has happened on that port from OSS - if not, then nothing to be done
+9. Must ensure that DHCP fails here even though RG has been authenticated (because subscriber/service-binding has not been provisioned by OSS yet)
+10. When OSS provisions the subscriber/service-binding on the UNI port and gives the C and S vlan info, then DHCP trap will be programmed on the port, and DHCP process can start
+11. If RG is disconnected from UNI port, force authentication again (even if subscriber/service-binding has been provisioned by OSS). Upon reconnection  to UNI port, RG must re-authenticate before DHCP/other-traffic can flow on the provisioned VLANs.
+12. DHCP L2 relay -> add option 82, learn public IP address, forward via dataplane to external DHCP server
+
+This schema summarizes the workflow, please note:
+
+- in `light blue` are environment events (wether they are triggered from hardware or from an operator)
+- in `yellow` are NEM configuration calls to ONOS or VOLTHA
+- in `green` are decisions
+- in `orange` event published on the kafka bus
+
+![att-workflow](../../../images/att_workflow.png)
+
+> NOTE: when we refer to `service chain` we are talking about the set of
+subscriber specific service instances that will trigger the `add_subscriber`
+call in ONOS-VOLTHA and provision the crossconnect in ONOS-FABRIC
diff --git a/profiles/seba/workflows/att-install.md b/profiles/seba/workflows/att-install.md
index 4b86649..993e6fb 100644
--- a/profiles/seba/workflows/att-install.md
+++ b/profiles/seba/workflows/att-install.md
@@ -1,6 +1,6 @@
 # Install AT&T Workflow
 
-You can find a complete description of the SEBA workflow for At&t in [this document](https://docs.google.com/document/d/1nou2c8AsRzhaDJmA_eYvFgd0Y33KiCsioveU77AOVCI/edit#heading=h.x73smxj2xaib). This pages focus exclusively on the internals details of the workflow such as actions triggered by the environment and decisions taken by NEM.
+You can find a complete description of the SEBA workflow for AT&T in [this document](https://docs.google.com/document/d/1nou2c8AsRzhaDJmA_eYvFgd0Y33KiCsioveU77AOVCI/edit#heading=h.x73smxj2xaib). This pages focus exclusively on the internals details of the workflow such as actions triggered by the environment and decisions taken by NEM.
 
 ## Install the `att-workflow` chart
 
@@ -12,31 +12,11 @@
 > then you need to specify `--set att-workflow-driver.kafkaService=cord-kafka`
 > during the installation command to match the name of the kafka service.
 
-## Workflow description
+## Verify your installation and next steps
 
-1. ONT discovered bottom-up
-2. If ONT serial number is not allowed or unknown (i.e it has NOT been provisioned by OSS), disable the ONT; generate an event to external OSS that an ONU has been discovered but not yet provisioned.
-3. When OSS provisions the ONT, re-enable it & program 802.1x flow - UNI port(s) will be UP
-4. Ensure that DHCP fails here (because subscriber/service-binding has not been provisioned by OSS yet)
-5. 802.1x EAPOL message happens from RG, and ONOS AAA app adds options and sends to radius server. Options are pulled from Sadis/NEM  - no subscriber information is required here
-6. If RG authentication fails, allow it to keep trying (in the future consider redirection to captive / self-help portal). DHCP should not succeed since RG authentication has failed
-7. If RG authentication succeeds, ONOS AAA app notifies via an event on the kafka bus that authentication has succeeded
-8. NEM can listen for the event, and then check to see if subscriber/service-binding has happened on that port from OSS - if not, then nothing to be done
-9. Must ensure that DHCP fails here even though RG has been authenticated (because subscriber/service-binding has not been provisioned by OSS yet)
-10. When OSS provisions the subscriber/service-binding on the UNI port and gives the C and S vlan info, then DHCP trap will be programmed on the port, and DHCP process can start
-11. If RG is disconnected from UNI port, force authentication again (even if subscriber/service-binding has been provisioned by OSS). Upon reconnection  to UNI port, RG must re-authenticate before DHCP/other-traffic can flow on the provisioned VLANs.
-12. DHCP L2 relay -> add option 82, learn public IP address, forward via dataplane to external DHCP server
+Once the installation completes, monitor your setup using `kubectl get pods`.
+Wait until all pods are in *Running* state and “tosca-loader” pods are in *Completed* state.
 
+>**Note:** The tosca-loader pods may periodically transition into *error* state. This is expected. They will retry and eventually get to the desired state.
 
-This schema summarizes the workflow, please note:
-
-- in `light blue` are environment events (wether they are triggered from hardware or from an operator)
-- in `yellow` are NEM configuration calls to ONOS or VOLTHA
-- in `green` are decisions
-- in `orange` event published on the kafka bus
-
-![att-workflow](../../../images/att_workflow.png)
-
-> NOTE: when we refer to `service chain` we are talking about the set of
-subscriber specific service instances that will trigger the `add_subscriber`
-call in ONOS-VOLTHA and provision the crossconnect in ONOS-FABRIC
+Your POD is now installed and ready for use. To learn how to operate your POD continue to the [SEBA configuration section](../configuration.md).
