diff --git a/exercises/ansible_network/8-controller-rbac/README.md b/exercises/ansible_network/8-controller-rbac/README.md
index 0c41f647a..50cd3cf7a 100644
--- a/exercises/ansible_network/8-controller-rbac/README.md
+++ b/exercises/ansible_network/8-controller-rbac/README.md
@@ -4,20 +4,21 @@
## Table of Contents
- * [Objective](#objective)
- * [Guide](#guide)
- * [Step 1: Opening up Organizations](#step-1-opening-up-organizations)
- * [Step 2: Open the network organization](#step-2-open-the-network-organization)
- * [Step 3: Examine Teams](#step-3-examine-teams)
- * [Step 4: Examine the Netops Team](#step-4-examine-the-netops-team)
- * [Step 5: Login as network-admin](#step-5-login-as-network-admin)
- * [Step 6: Understand Team Roles](#step-6-understand-team-roles)
- * [Step 7: Job Template Permissions](#step-7-job-template-permissions)
- * [Step 8: Login as network-operator](#step-8-login-as-network-operator)
- * [Step 9: Launching a Job Template](#step-9-launching-a-job-template)
- * [Bonus Step](#bonus-step)
- * [Takeaways](#takeaways)
- * [Complete](#complete)
+- [Exercise 8: Understanding RBAC in Automation controller](#exercise-8-understanding-rbac-in-automation-controller)
+ - [Table of Contents](#table-of-contents)
+ - [Objective](#objective)
+ - [Guide](#guide)
+ - [Step 1: Opening up Organizations](#step-1-opening-up-organizations)
+ - [Step 2: Open the network organization](#step-2-open-the-network-organization)
+ - [Step 3: Add network-admin as an administrator](#step-3-add-network-admin-as-an-administrator)
+ - [Step 4: Login as network-admin](#step-4-login-as-network-admin)
+ - [Step 5: Give job template access to the network-operator user](#step-5-give-job-template-access-to-the-network-operator-user)
+ - [Step 6: Verify the Network-Commands job template](#step-6-verify-the-network-commands-job-template)
+ - [Step 7: Login as network-operator](#step-7-login-as-network-operator)
+ - [Step 8: Launching a Job Template](#step-8-launching-a-job-template)
+ - [Bonus Step](#bonus-step)
+ - [Takeaways](#takeaways)
+ - [Complete](#complete)
## Objective
@@ -45,9 +46,9 @@ Lets review some Automation controller terminology:

-* Under the **Access** section, click on **Organizations**
+* Under the **Access Management** section, click on **Organizations**
- As the *admin* user, you will be able to view all organizations configured for Automation controller:
+ As the `admin` user, you will be able to view all organizations configured for Automation controller:
@@ -60,19 +61,16 @@ Lets review some Automation controller terminology:
* Examine the organizations
There are 2 organizations (other than Default):
+ 1. **Red Hat compute organization**
+ 2. **Red Hat network organization**
- * **Red Hat compute organization**
- * **Red Hat network organization**

-
-
-
- Observe that this page gives you a summary of all the teams, users, inventories, projects and job templates associated with it. If a Organization level admin is configure you will see that as well. |
-
-
-
+> Note:
+>
+> This page gives you a summary of all the teams, users, inventories, projects and job templates associated with it.
+> If a Organization level admin is configure you will see that as well.
### Step 2: Open the network organization
@@ -83,120 +81,107 @@ Lets review some Automation controller terminology:

-2. Click on the **Access** tab to see users associated with this organization.
+### Step 3: Add network-admin as an administrator
-
-
-
- Observe that both the network-admin and network-operator users are associated with this organization. |
-
-
-
+1. Click on the **Administrators** tab
-### Step 3: Examine Teams
+ 
-1. Click on **Teams** in the sidebar
+2. Click on the blue **Add administrators** button:
- 
+ 
-2. Examine the teams. The Automation controller admin will be able to see all available teams. There are four teams:
+3. Select the **network-admin** user and then click the blue **Add administrators** button
- * Compute T1
- * Compute T2
- * Netadmin
- * Netops
+ 
- 
+### Step 4: Login as network-admin
-### Step 4: Examine the Netops Team
+1. Log out from the admin user by clicking the admin button in the top right corner of the Automation controller UI:
-* Click on the **Netops** Team and then click on the **Access** tab. Take note to two particular users:
+ 
- * network-admin
- * network-operator
+2. Login to the system with the **network-admin** user.
- 
+ | Parameter | Value |
+ |---|---|
+ | username | network-admin |
+ | password| provided by instructor |
-* Observe the following two points:
+3. Confirm that you are logged in as the **network-admin** user.
- * The **network-admin** user has administrative privileges for the **Red Hat network organization**
- * The **network-operator** is simply a member of the Netops team. We will dive into each of these users to understand the roles
+ 
-### Step 5: Login as network-admin
+4. Click on the **Organizations** link on the sidebar under the `Access Management` section.
-* Log out from the admin user by clicking the admin button in the top right corner of the Automation controller UI:
+ You will notice that you only have visibility to the organization you are an admin of, the **Red Hat network organization**.
- 
+ The following two Organizations are not seen anymore:
-* Login to the system with the **network-admin** user.
+ * `Red Hat compute organization`
+ * `Default`
- | Parameter | Value |
- |---|---|
- | username | network-admin |
- | password| provided by instructor |
+> Bonus step:
+>
+> Try this as the network-operator user (same password as network-admin).
+> What is the difference between `network-operator` and `network-admin`?
+> As the `network-operator` are you able to view other users?
+> Are you able to add a new user or edit user credentials?
-* Confirm that you are logged in as the **network-admin** user.
- 
+### Step 5: Give job template access to the network-operator user
-* Click on the **Organizations** link on the sidebar.
+As the `network-admin` we can now setup access for the `network-operator` user.
- You will notice that you only have visibility to the organization you are an admin of, the **Red Hat network organization**.
+1. Click on Templates on the left menu
- The following two Organizations are not seen anymore:
+ 
- * Red Hat compute organization
- * Default
+2. Click on the `Network-Commands` job template.
-* Bonus step: Try this as the network-operator user (same password as network-admin).
+ 
- * What is the difference between network-operator and network-admin?
- * As the network operator are you able to view other users?
- * Are you able to add a new user or edit user credentials?
+3. Click on the `User Access` tab
-### Step 6: Understand Team Roles
+ 
-1. To understand how different roles and therefore RBACs may be applied, log out and log back in as the **admin** user.
+4. Click on the blue `Add roles` button
-2. Navigate to **Inventories** and click on the **Workshop Inventory**
+ 
-3. Click on the **Access** button
+5. Click `network-operator` then click the blue `Next` button at the bottom
- 
+ 
-4. Examine the permissions assigned to each user
+6. Click on `JobTemplate Execute` then click on the blue `Next button at the bottom
- 
+ 
-
-
-
- Note: ROLES assigned for the network-admin and network-operator users. By assigning the Use Role, the network-operator user has been granted permission to use this particular inventory. |
-
-
-
+7. Review to make sure you set it up correctly, and click the blue `Finish` button at the bottom.
+ 
+8. Click the `Close` button after the role is applied
-### Step 7: Job Template Permissions
+ 
-1. Click on the **Templates** button in the left menu
+### Step 6: Verify the Network-Commands job template
-2. Click on the **Network-Commands** Job Template
+1. Navigate back to the `Network-Commands` Job Template
-3. Click on the **Access** button at the top
+ 
- 
+2. Verify the Survey is enabled
-
-
-
- Note: the same users have different roles for the job template. This highlights the granularity operators can introduce with Automation controller in controlling "Who gets access to what". In this example, the network-admin can update (Admin) the Network-Commands job template, whereas the network-operator can only Execute it. |
-
-
-
+ 
-### Step 8: Login as network-operator
+3. Verify the Survey questions
+
+ 
+
+4. Click on the blue `Save survey question`
+
+### Step 7: Login as network-operator
Finally, to see the RBAC in action!
@@ -207,19 +192,15 @@ Finally, to see the RBAC in action!
| username | `network-operator` |
| password| provided by instructor |
-2. Navigate to **Templates** and click on the **Network-Commands** Job Template.
+2. Navigate to **Templates** under the Automation Execution section, and click on the **Network-Commands** Job Template.

-
-
-
- Note that, as the network-operator user, you will have no ability to change any of the fields. The Edit button is no longer available. |
-
-
-
+> Note:
+>
+> The `network-operator` user, you will have no ability to change any of the fields. The **Edit** button is no longer available
-### Step 9: Launching a Job Template
+### Step 8: Launching a Job Template
1. Launch the **Network-Commands** template by clicking on the **Launch** button:
@@ -235,9 +216,18 @@ If time permits, log back in as the network-admin and add another show command y
## Takeaways
-* Using Automation controller's powerful RBAC feature, you can see it is easy to restrict access to operators to run prescribed commands on production systems without requiring them to have access to the systems themselves.
-* Automation controller can support multiple Organizations, multiple Teams and users. Users can even belong to multiple Teams and Organizations if needed. Something not covered in this exercise is that we do not need to manage users in Automation controller, we can use [enterprise authentication](https://docs.ansible.com/automation-controller/latest/html/administration/ent_auth.html) including Active Directory, LDAP, RADIUS, SAML and TACACS+.
-* If there needs to be an exception (a user needs access but not his entire team) this is also possible. The granularity of RBAC can be down to the credential, inventory or Job Template for an individual user.
+
+ -
+ Using Ansible Automation Platform's powerful RBAC feature, you can see it is easy to restrict access to operators to run prescribed commands on production systems without requiring them to have access to the systems themselves.
+
+ -
+ Ansible Automation Platform can support multiple
Organizations
, multiple Teams
, and Users
. Something not covered in this exercise is that we do not need to manage users in Ansible Automation Platform; we can use enterprise authentication including Active Directory, LDAP, RADIUS, SAML, and TACACS+.
+
+ -
+ If there needs to be an exception (a user needs access but not their entire team), this is also possible. The granularity of RBAC can be down to the credential, inventory, or Job Template for an individual user.
+
+
+
## Complete
diff --git a/exercises/ansible_network/8-controller-rbac/images/add_role_user.png b/exercises/ansible_network/8-controller-rbac/images/add_role_user.png
new file mode 100644
index 000000000..7afbd25aa
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/add_role_user.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/add_roles.png b/exercises/ansible_network/8-controller-rbac/images/add_roles.png
new file mode 100644
index 000000000..237d1d4fc
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/add_roles.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/add_user_window.png b/exercises/ansible_network/8-controller-rbac/images/add_user_window.png
new file mode 100644
index 000000000..0bf019831
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/add_user_window.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/admin_button.png b/exercises/ansible_network/8-controller-rbac/images/admin_button.png
new file mode 100644
index 000000000..4edbbf860
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/admin_button.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/admin_tab.png b/exercises/ansible_network/8-controller-rbac/images/admin_tab.png
new file mode 100644
index 000000000..c086de372
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/admin_tab.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/close_window.png b/exercises/ansible_network/8-controller-rbac/images/close_window.png
new file mode 100644
index 000000000..ca020a26e
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/close_window.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/finish.png b/exercises/ansible_network/8-controller-rbac/images/finish.png
new file mode 100644
index 000000000..b374df8d3
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/finish.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/job_templates.png b/exercises/ansible_network/8-controller-rbac/images/job_templates.png
new file mode 100644
index 000000000..2207d63c7
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/job_templates.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/network-commands-job-template.png b/exercises/ansible_network/8-controller-rbac/images/network-commands-job-template.png
new file mode 100644
index 000000000..c513dc25a
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/network-commands-job-template.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/network_commands.png b/exercises/ansible_network/8-controller-rbac/images/network_commands.png
new file mode 100644
index 000000000..b974114ca
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/network_commands.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/select_admin_button.png b/exercises/ansible_network/8-controller-rbac/images/select_admin_button.png
new file mode 100644
index 000000000..ef18e6944
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/select_admin_button.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step1-organizations.png b/exercises/ansible_network/8-controller-rbac/images/step1-organizations.png
index 36c65e5be..1bb1f1459 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step1-organizations.png and b/exercises/ansible_network/8-controller-rbac/images/step1-organizations.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step2-network_org.png b/exercises/ansible_network/8-controller-rbac/images/step2-network_org.png
index 4141b2e55..479796035 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step2-network_org.png and b/exercises/ansible_network/8-controller-rbac/images/step2-network_org.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step3_teams.png b/exercises/ansible_network/8-controller-rbac/images/step3_teams.png
deleted file mode 100644
index 4cd5a980b..000000000
Binary files a/exercises/ansible_network/8-controller-rbac/images/step3_teams.png and /dev/null differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step3_teams_view.png b/exercises/ansible_network/8-controller-rbac/images/step3_teams_view.png
deleted file mode 100644
index ba56b5b3b..000000000
Binary files a/exercises/ansible_network/8-controller-rbac/images/step3_teams_view.png and /dev/null differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step5_logout.png b/exercises/ansible_network/8-controller-rbac/images/step5_logout.png
index fc975e6d6..47ea1ddeb 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step5_logout.png and b/exercises/ansible_network/8-controller-rbac/images/step5_logout.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step5_network-admin.png b/exercises/ansible_network/8-controller-rbac/images/step5_network-admin.png
index 06ab46d15..7a678e109 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step5_network-admin.png and b/exercises/ansible_network/8-controller-rbac/images/step5_network-admin.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step7_job_template_access.png b/exercises/ansible_network/8-controller-rbac/images/step7_job_template_access.png
deleted file mode 100644
index 57fa5e63e..000000000
Binary files a/exercises/ansible_network/8-controller-rbac/images/step7_job_template_access.png and /dev/null differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step8_operator.png b/exercises/ansible_network/8-controller-rbac/images/step8_operator.png
index e942e7896..f754a4fdc 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step8_operator.png and b/exercises/ansible_network/8-controller-rbac/images/step8_operator.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step9_survey.png b/exercises/ansible_network/8-controller-rbac/images/step9_survey.png
index 243e38457..9b16805f3 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step9_survey.png and b/exercises/ansible_network/8-controller-rbac/images/step9_survey.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/step_1.png b/exercises/ansible_network/8-controller-rbac/images/step_1.png
index 5ded5c1ee..44f3a4489 100644
Binary files a/exercises/ansible_network/8-controller-rbac/images/step_1.png and b/exercises/ansible_network/8-controller-rbac/images/step_1.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/survey-enabled.png b/exercises/ansible_network/8-controller-rbac/images/survey-enabled.png
new file mode 100644
index 000000000..cd76b10c8
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/survey-enabled.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/user_access.png b/exercises/ansible_network/8-controller-rbac/images/user_access.png
new file mode 100644
index 000000000..95ae5db9f
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/user_access.png differ
diff --git a/exercises/ansible_network/8-controller-rbac/images/verify-survey.png b/exercises/ansible_network/8-controller-rbac/images/verify-survey.png
new file mode 100644
index 000000000..b8e105979
Binary files /dev/null and b/exercises/ansible_network/8-controller-rbac/images/verify-survey.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/README.md b/exercises/ansible_network/9-controller-workflow/README.md
index 004204571..4562b8f7d 100644
--- a/exercises/ansible_network/9-controller-workflow/README.md
+++ b/exercises/ansible_network/9-controller-workflow/README.md
@@ -4,21 +4,23 @@
## Table of Contents
-* [Objective](#objective)
-* [Guide](#guide)
- * [Step 1: Create a workflow template](#step-1-create-a-workflow-template)
- * [Step 2: The Workflow Visualizer](#step-2-the-workflow-visualizer)
- * [Step 3: Add the Configure Banner Job Template](#step-3-add-the-configure-banner-job-template)
- * [Step 4: Add the Configure Network-User Job Template](#step-4-add-the-configure-network-user-job-template)
- * [Step 5: Add the Network-Restore Job Template](#step-5-add-the-network-restore-job-template)
- * [Step 6: Create a converged link](#step-6-create-a-converged-link)
- * [Step 7: Run the Workflow](#step-7-run-the-workflow)
-* [Takeaways](#takeaways)
-* [Complete](#complete)
+- [Exercise 9: Creating a Workflow](#exercise-9-creating-a-workflow)
+ - [Table of Contents](#table-of-contents)
+ - [Objective](#objective)
+ - [Guide](#guide)
+ - [Step 1: Create a workflow template](#step-1-create-a-workflow-template)
+ - [Step 2: The Workflow Visualizer](#step-2-the-workflow-visualizer)
+ - [Step 3: Add the Configure Banner Job Template](#step-3-add-the-configure-banner-job-template)
+ - [Step 4: Add the Configure Network-User Job Template](#step-4-add-the-configure-network-user-job-template)
+ - [Step 5: Add the Network-Restore Job Template](#step-5-add-the-network-restore-job-template)
+ - [Step 6: Create a converged link](#step-6-create-a-converged-link)
+ - [Step 7: Run the Workflow](#step-7-run-the-workflow)
+ - [Takeaways](#takeaways)
+ - [Complete](#complete)
## Objective
-Demonstrate the use of [Automation Controller workflow](https://docs.ansible.com/automation-controller/latest/html/userguide/workflows.html). Workflows allow you to configure a sequence of disparate job templates (or workflow templates) that may or may not share inventory, playbooks, or permissions.
+Demonstrate the use of Ansible Automation Platform workflow . Workflows allow you to configure a sequence of disparate job templates (or workflow templates) that may or may not share inventory, playbooks, or permissions.
For this exercise we will create a time-stamped backup, if the backup job successfully completes the workflow will simultaneously configure a banner and a user. If either job template fails we will restore to the time stamped backup.
@@ -30,7 +32,9 @@ For this exercise we will create a time-stamped backup, if the backup job succes
2. Click on the **Templates** link on the left menu.
-3. Click on the blue Add button and select **Add workflow template**.
+ 
+
+3. Click on the blue **Create template** button and select **Create workflow job template**.

@@ -39,124 +43,203 @@ For this exercise we will create a time-stamped backup, if the backup job succes
| Parameter | Value |
|---|---|
| Name | Workshop Workflow |
- | Organization | Default |
+ | Organization | Red Hat network organization |
| Inventory | Workshop Inventory |
-5. Click on the blue **Save** button
+5. Click on the blue **Create workflow job template** button
### Step 2: The Workflow Visualizer
-1. When you click the **Save** the **Workflow visualizer** should automatically open. If not click on the **Visualizer** tab.
+1. When you clicked the **Create workflow job template** the **Workflow visualizer** should automatically open. If not click on the **View workflow visualizer** button.

-2. By default only a green **Start** button will appear. Click on the **Start** button.
+2. By default only a blue **Add step** button will appear. Click on the **Add step** button.
+
+ 
-3. The **Add Node** window will appear.
+3. The **Add step** window will appear.
* Set the Node Type to `Job Template`.
- * Select the `Backup` Job Template that was created in exercise 6.
+ * Select the `Backup network configurations` Job Template that was created in exercise 6.
+
+ * Convergence can be left as **Any**
+
+ * Node alias can be left blank

- * Click the blue **Save** button.
+ * Click the blue **Next** button.
+
+ * Click on the blue **Finish** button
-
-
-
- The Backup network configurations job template is now a node. Job or workflow templates are linked together using a graph-like structure called nodes. These nodes can be approvals, jobs, project syncs, inventory syncs, or even other workflows. A template can be part of different workflows or used multiple times in the same workflow. |
-
-
-
+> Note:
+>
+> The `Backup network configurations` job template is now a node. Job or workflow templates are linked together using a graph-like structure called nodes. These nodes can be approvals, jobs, project syncs, inventory syncs, or even other workflows. A template can be part of different workflows or used multiple times in the same workflow.

### Step 3: Add the Configure Banner Job Template
-1. Hover over the *Backup network configurations* node and click the **+** symbol. The **Add Node** window will appear again.
+1. Hover over the three dots **⋮** on the `Backup network configurations` node and click the **Add step and link** link.
-2. For the **Run type** select **On Success** from the drop down menu. Press the blue **Next** button.
+ 
- 
+ The **Add Step** window will appear again.
+
+2. Fill out the following values:
-
-
- Workflows can be configured to run automation jobs when the previous node succeeds, fails, or have it always run no matter what the previous job did. This allows workflows to fix issues or revert the state of a device.
- |
-
-
+
+ Parameter |
+ Value |
+
+
+ Node Type |
+ Job Template |
+
+
+ Job template |
+ Network-Banner |
+
+
+ Status |
+ Run on success |
+
+
+ Convergence |
+ Any |
+
+
+ Node alias |
+ |
+
-3. Select the **Network-Banner** Job Template.
-
- 
+ 
- * Click the blue **Next** button
+> Note:
+>
+> Workflows can be configured to run automation jobs when the previous node succeeds, fails, or have it always run no matter what the previous job did. This allows workflows to fix issues or revert the state of a device.
-4. Fill out the Survey similar to exercise 7.
+1. Click the blue **Next** button and fill out the survey field
- 
+ 
-5. Click Next and then Save.
+2. Click the blue **Next** button again, review, and then click the blue **Finish** button.
-4. A green line should exist between **Backup network configurations** and **Configure Banner**
+3. A green line should exist between `Backup network configurations` and `Network-Banner`

### Step 4: Add the Configure Network-User Job Template
-1. Hover over the *Backup network configurations* node (not the **Configure Banner** node) and click the **+** symbol. The **Add Node** will appear again.
-
-2. For the **Run type** select **On Success** from the drop down menu. Press the blue **Next** button.
+1. Hover over the three dots **⋮** on the `Backup network configurations` node and click the **Add step and link** link. (not the `Network-Banner` node)
- 
+2. Fill out the following values:
-3. Select the **Network-User** Job Template.
+
+
+ Parameter |
+ Value |
+
+
+ Node Type |
+ Job Template |
+
+
+ Job template |
+ Network-User |
+
+
+ Status |
+ Run on success |
+
+
+ Convergence |
+ Any |
+
+
+ Node alias |
+ |
+
+

-4. Fill out the survey (or just let it default to configure the `ansible` user
+3. Click the blue **Next** button and fill out the survey field (feel free to leave the defaults!)
+
+ 
-5. Click **Next** and **Save**
+4. Click **Next**, review then click **Finish**
+
+ Your workflow should now look similar to the following image:

### Step 5: Add the Network-Restore Job Template
-1. Hover over the **Network-Banner** node and click the **+** symbol. The **Add Node** window will appear again.
+1. Hover over the **Network-Banner** node and click the three dots **⋮** The **Add step and link** window will appear again.
-2. Select **On Failure** for Run type
+2. Fill out the following values:
- 
+
+
+ Parameter |
+ Value |
+
+
+ Node Type |
+ Job Template |
+
+
+ Job template |
+ Network Automation - Restore |
+
+
+ Status |
+ Run on fail |
+
+
+ Convergence |
+ Any |
+
+
+ Node alias |
+ |
+
+
- * Click Next
+ Your forum should look similar to the following image:
-3. Select the **Network-Restore** job template.
+ 
- 
+3. Click the blue **Next** button for the Survey step, then choose a rollback date (Note: there may only be one choice if you only ran the backup one time)
-4. Select a rollback date and click **Next** and **Save**
+4. Click the blue **Next** button again, then review and click the **Finish** button.
- 
+ Your workflow should now look similar to the following image:
+ 
### Step 6: Create a converged link
-1. Hover over the **Network-User** node and click the **chain**  symbol.
+1. Hover over the `Network-User` node until a a small arrow appears to the right.
-2. Now, double click on the existing **Network-Restore**. A **Add Link** window will appear. For the **RUN** parameter choose **On Failure**.
+ 
- 
+2. Click on the arrow (it will turn gray), and drag it over to the `Network Automation - Restore` node
- * Click Save
+ 
-3. Now your workflow should look like the following:
+3. Now click on the **Run always** and change to **Run on fail**

-4. Click Save to exit the visualizer.
+4. Click Save, then click on the **X** to exit the visualizer.
+
+ 
### Step 7: Run the Workflow
@@ -174,9 +257,9 @@ For this exercise we will create a time-stamped backup, if the backup job succes
You have
-* Created a workflow template that creates a backup, attempts to create a user and banner for all network nodes
-* Made the workflow robust, if either job template fails it will restore to the specified backup
-* Launched the workflow template and explored the **Workflow Visualizer**
+* Created a **Workflow template** that creates a backup, then attempts to create a user and banner for all network nodes
+* Made the workflow **robust**, if either job template fails it will restore to the specified backup
+* Launched the Workflow template and explored the **Workflow Visualizer**
## Complete
diff --git a/exercises/ansible_network/9-controller-workflow/images/add_backup_node.png b/exercises/ansible_network/9-controller-workflow/images/add_backup_node.png
index 550dd04c3..c4bf3fe09 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/add_backup_node.png and b/exercises/ansible_network/9-controller-workflow/images/add_backup_node.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/add_step.png b/exercises/ansible_network/9-controller-workflow/images/add_step.png
new file mode 100644
index 000000000..9a5c08c1e
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/add_step.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/arrow.png b/exercises/ansible_network/9-controller-workflow/images/arrow.png
new file mode 100644
index 000000000..350569a40
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/arrow.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/controller_add_workflow.png b/exercises/ansible_network/9-controller-workflow/images/controller_add_workflow.png
index 90a0bb787..017c8aefe 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/controller_add_workflow.png and b/exercises/ansible_network/9-controller-workflow/images/controller_add_workflow.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/fill_out_restore.png b/exercises/ansible_network/9-controller-workflow/images/fill_out_restore.png
new file mode 100644
index 000000000..9f74023c8
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/fill_out_restore.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/new_add_step.png b/exercises/ansible_network/9-controller-workflow/images/new_add_step.png
new file mode 100644
index 000000000..048c17ef7
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/new_add_step.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/save.png b/exercises/ansible_network/9-controller-workflow/images/save.png
new file mode 100644
index 000000000..589497986
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/save.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step2_workflow.png b/exercises/ansible_network/9-controller-workflow/images/step2_workflow.png
index e53f4784c..f83bb0c2a 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step2_workflow.png and b/exercises/ansible_network/9-controller-workflow/images/step2_workflow.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step3_add_network_banner.png b/exercises/ansible_network/9-controller-workflow/images/step3_add_network_banner.png
index 450b3481b..ac43dbc3f 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step3_add_network_banner.png and b/exercises/ansible_network/9-controller-workflow/images/step3_add_network_banner.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step3_add_node.png b/exercises/ansible_network/9-controller-workflow/images/step3_add_node.png
index b26946e9a..ec7a58203 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step3_add_node.png and b/exercises/ansible_network/9-controller-workflow/images/step3_add_node.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step3_final.png b/exercises/ansible_network/9-controller-workflow/images/step3_final.png
index 6800ae949..8200e1b30 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step3_final.png and b/exercises/ansible_network/9-controller-workflow/images/step3_final.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step4_add_node.png b/exercises/ansible_network/9-controller-workflow/images/step4_add_node.png
index 3d36fd575..d499afcdc 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step4_add_node.png and b/exercises/ansible_network/9-controller-workflow/images/step4_add_node.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step4_final.png b/exercises/ansible_network/9-controller-workflow/images/step4_final.png
index 703043b78..1b363bc5e 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step4_final.png and b/exercises/ansible_network/9-controller-workflow/images/step4_final.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step5_add_node_restore.png b/exercises/ansible_network/9-controller-workflow/images/step5_add_node_restore.png
deleted file mode 100644
index 66db50a18..000000000
Binary files a/exercises/ansible_network/9-controller-workflow/images/step5_add_node_restore.png and /dev/null differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step5_final.png b/exercises/ansible_network/9-controller-workflow/images/step5_final.png
index e36fd33d0..274e9fa5a 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step5_final.png and b/exercises/ansible_network/9-controller-workflow/images/step5_final.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step5_on_failure.png b/exercises/ansible_network/9-controller-workflow/images/step5_on_failure.png
deleted file mode 100644
index 8baf62191..000000000
Binary files a/exercises/ansible_network/9-controller-workflow/images/step5_on_failure.png and /dev/null differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step6_complete_workflow.png b/exercises/ansible_network/9-controller-workflow/images/step6_complete_workflow.png
index 2d117d9d4..2cfd7be7d 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step6_complete_workflow.png and b/exercises/ansible_network/9-controller-workflow/images/step6_complete_workflow.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step6_on_fail.png b/exercises/ansible_network/9-controller-workflow/images/step6_on_fail.png
index 064004a18..252882f8d 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step6_on_fail.png and b/exercises/ansible_network/9-controller-workflow/images/step6_on_fail.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step7_final.png b/exercises/ansible_network/9-controller-workflow/images/step7_final.png
index 3ea7e3dcd..c93471164 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step7_final.png and b/exercises/ansible_network/9-controller-workflow/images/step7_final.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/step7_launch.png b/exercises/ansible_network/9-controller-workflow/images/step7_launch.png
index 0b3222530..6025d1d5b 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/step7_launch.png and b/exercises/ansible_network/9-controller-workflow/images/step7_launch.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/templates.png b/exercises/ansible_network/9-controller-workflow/images/templates.png
new file mode 100644
index 000000000..8c2f2c2f8
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/templates.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/user-survey.png b/exercises/ansible_network/9-controller-workflow/images/user-survey.png
new file mode 100644
index 000000000..eacfc2d91
Binary files /dev/null and b/exercises/ansible_network/9-controller-workflow/images/user-survey.png differ
diff --git a/exercises/ansible_network/9-controller-workflow/images/visualizer_tab.png b/exercises/ansible_network/9-controller-workflow/images/visualizer_tab.png
index 8c5e54867..8508ccff0 100644
Binary files a/exercises/ansible_network/9-controller-workflow/images/visualizer_tab.png and b/exercises/ansible_network/9-controller-workflow/images/visualizer_tab.png differ