diff --git a/code/lab-0/configureCloud9.sh b/code/lab-0/configureCloud9.sh
index 3150192..fb5ce96 100755
--- a/code/lab-0/configureCloud9.sh
+++ b/code/lab-0/configureCloud9.sh
@@ -5,7 +5,6 @@ sudo yum update -y
pip install cfn-lint --use-feature=2020-resolver
#cleanup
-rm -fr ~/environment/wild-rydes-async-messaging/workshop/
rm -fr ~/environment/wild-rydes-async-messaging/.git
mv ~/environment/wild-rydes-async-messaging/code/lab-* ~/environment/wild-rydes-async-messaging/
rm -fr ~/environment/wild-rydes-async-messaging/code/
\ No newline at end of file
diff --git a/workshop/buildspec.yml b/workshop/buildspec.yml
deleted file mode 100644
index 54adf0e..0000000
--- a/workshop/buildspec.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-version: 0.2
-phases:
- install:
- runtime-versions:
- golang: 1.13
- nodejs: 10
- commands:
- - echo Entered the install phase...
- - apt-get -qq update && apt-get -qq install curl
- - apt-get -qq install asciidoctor
- - curl -s -L https://github.com/gohugoio/hugo/releases/download/v0.74.3/hugo_0.74.3_Linux-64bit.deb -o hugo.deb
- - dpkg -i hugo.deb
- finally:
- - echo Installation done
- build:
- commands:
- - echo Entered the build phase ...
- - echo Build started on `date`
- - cd $CODEBUILD_SRC_DIR/workshop
- - hugo --quiet
- finally:
- - echo Building the HTML files finished
-artifacts:
- files:
- - "**/*"
- base-directory: $CODEBUILD_SRC_DIR/workshop/public/
- discard-paths: no
diff --git a/workshop/config.toml b/workshop/config.toml
deleted file mode 100644
index 0b46ea0..0000000
--- a/workshop/config.toml
+++ /dev/null
@@ -1,40 +0,0 @@
-RelativeURLs=true
-CanonifyURLs=true
-languageCode = "en-US"
-defaultContentLanguage = "en"
-
-title = "Wild Rydes Asynchronous Messaging Workshop"
-theme = "learn"
-metaDataFormat = "yaml"
-defaultContentLanguageInSubdir= false
-
-uglyurls = true
-sectionPagesMenu = "main"
-pygmentsCodeFences = true
-pygmentsStyle = "monokai"
-
-[params]
- editURL = "https://code.amazon.com/packages/AwsSaDeMsgPtnMcrSrv/trees/mainline/--/workshop/content/"
- description = "Wild Rydes Asynchronous Messaging Workshop"
- author = "Jane Architect"
- disableBreadcrumb = false
- disableNextPrev = false
- themeVariant = "aws"
- disableSearch = false
- disableAssetsBusting = true
- disableLanguageSwitchingButton = false
- disableShortcutsTitle = true
- disableInlineCopyToClipBoard = true
-
-[outputs]
-home = [ "HTML", "RSS", "JSON"]
-
-[blackfriday]
-plainIDAnchors = true
-hrefTargetBlank = true
-
-[[menu.shortcuts]]
-name = " Github repo"
-identifier = "ds"
-url = "https://github.com/aws-samples/asynchronous-messaging-workshop/"
-weight = 10
\ No newline at end of file
diff --git a/workshop/content/_index.md b/workshop/content/_index.md
deleted file mode 100644
index 4f2e6bb..0000000
--- a/workshop/content/_index.md
+++ /dev/null
@@ -1,23 +0,0 @@
-+++
-title = "Decoupled Microservices"
-weight = 1
-pre = "1. "
-+++
-
-
-
-# Welcome Builders!
-
-Extend the existing and successful Wild Rydes service with asynchronous messaging for our microservices to allow us to scale reliable into new dimensions.
-
-One of the implications of applying the microservices architectural style in Wild Rydes is that a lot of communication between components is done over the network. In order to be able to individually scale, operate, and evolve each service, this communication needs to happen in a loosely coupled manner. One option that our initial architect have in mind here is that all services expose an API following the REST architectural style.
-
-Using REST APIs for communications between a set of systems can decouple them to a certain degree, but only if applied properly - which is often not the case. Additionally, REST APIs tend to be designed with synchronous communications, which limits the potential for decoupling when you think about request paths through a landscape of microservices. However, there is another option that provides even looser coupling: asynchronous messaging.
-
-Asynchronous messaging is a fundamental approach for integrating independent systems, or building up a set of loosely coupled systems that can operate, scale, and evolve independently and flexibly. One could also quote our colleague Tim Bray on this:
-
-> **If your application is cloud-native, or large-scale, or distributed, and doesn’t include a messaging component, that’s probably a bug.**
-
-Within this workshop, we will introduce asynchronous messaging into Wild Rydes to support the ever growing demand of our business.
-
-{{< youtube UJxog8pDydU >}}
diff --git a/workshop/content/choose-your-own-advanture/_index.md b/workshop/content/choose-your-own-advanture/_index.md
deleted file mode 100644
index f4c95b2..0000000
--- a/workshop/content/choose-your-own-advanture/_index.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Choose Your Own Adventure"
-class = "adventure"
-weight = 19
-pre = ""
-+++
-
-Start with the lab which is most interesting for you and choose how to continue. All labs are independent and you don't have to follow a strict order.
-
-| | |
-|:---------------------------------------------:|:---------------------------------------------:|
-| [](/fan-out-and-message-filtering.html) | [](/topic-queue-chaining-and-load-balancer.html) |
-| [](/scatter-gather.html) | [](/orchestration-and-coordination.html) |
diff --git a/workshop/content/choose-your-own-advanture/lab-1.png b/workshop/content/choose-your-own-advanture/lab-1.png
deleted file mode 100644
index d799d4a..0000000
Binary files a/workshop/content/choose-your-own-advanture/lab-1.png and /dev/null differ
diff --git a/workshop/content/choose-your-own-advanture/lab-2.png b/workshop/content/choose-your-own-advanture/lab-2.png
deleted file mode 100644
index 5baed36..0000000
Binary files a/workshop/content/choose-your-own-advanture/lab-2.png and /dev/null differ
diff --git a/workshop/content/choose-your-own-advanture/lab-3.png b/workshop/content/choose-your-own-advanture/lab-3.png
deleted file mode 100644
index 1da6655..0000000
Binary files a/workshop/content/choose-your-own-advanture/lab-3.png and /dev/null differ
diff --git a/workshop/content/choose-your-own-advanture/lab-4.png b/workshop/content/choose-your-own-advanture/lab-4.png
deleted file mode 100644
index d0b0e2f..0000000
Binary files a/workshop/content/choose-your-own-advanture/lab-4.png and /dev/null differ
diff --git a/workshop/content/cleanups/_index.md b/workshop/content/cleanups/_index.md
deleted file mode 100644
index 166a9cc..0000000
--- a/workshop/content/cleanups/_index.md
+++ /dev/null
@@ -1,31 +0,0 @@
-+++
-title = "Clean up"
-weight = 60
-pre = ""
-+++
-
-{{% notice tip %}}
-**Running the workshop at an AWS Event**
-If you are running this workshop at an AWS hosted event, such as re:Invent,
-Loft, Immersion Day, or any other event hosted by an AWS employee, you skip this section, as we will clean up everything for you.
-{{% /notice %}}
-
-In this step, we will clean up the AWS Cloud9 IDE we have created at the very beginning.
-
-#### 1. Delete the AWS Cloud9 IDE
-
-Follow **[this deep link](https://console.aws.amazon.com/cloudformation/home?#/stacks?filteringText=wild-rydes-async-msg-0)** to list the **AWS CloudFormation** stack with the name `wild-rydes-async-msg-0`. Select the stack and choose **Delete**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-1. Open the [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation/home)
-2. Select `wild-rydes-lab-x` stack from the list of Stacks
-3. Click the **Delete** button
-4. On the confirmation modal screen that appears, click **Delete Stack** button
-
-> Note: You will need to delete the S3 bucket you created for this lab manually.
-
-That's it! All done.
diff --git a/workshop/content/cleanups/step-1.png b/workshop/content/cleanups/step-1.png
deleted file mode 100644
index 4ae1725..0000000
Binary files a/workshop/content/cleanups/step-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/_index.md b/workshop/content/fan-out-and-message-filtering/_index.md
deleted file mode 100644
index ca54430..0000000
--- a/workshop/content/fan-out-and-message-filtering/_index.md
+++ /dev/null
@@ -1,42 +0,0 @@
-+++
-title = "Fan-Out & Message Filtering"
-weight = 20
-pre = "Lab-1: "
-+++
-
-{{% notice info %}}
-Make sure you executed the **[Workshop Prerequisites](/prerequisites.html)** first, before you start with this lab!
-{{% /notice %}}
-
-As a registered customer, when you need a ride, you can use the Wild Rydes customer app to request a unicorn and manage everything around it.
-As a registered unicorn, you can use the Wild Rydes unicorn app to manage everything around your business.
-
-In particular, unicorns are interested to use the app to submit a ride completion after they have successfully delivered a customer to their destination.
-This is the use case we will now have a closer look at.
-
-At Wild Rydes, end-user clients typically communicate via REST APIs with the backend services. For our use case, the Wild Rydes unicorn app interacts with the API exposed by the unicorn management service. It uses the submit-ride-completion resource to send the relevant details of the ride to the backend. In response to that, the backend creates a new completed-ride resource and returns the respective status code, the location, and a representation of the new resource to the client.
-
-It’s probably not a surprise that there are other services in the Wild Rydes microservices landscape, that are also interested in a new completed ride:
-
-+ **Customer notification service**: Customers should get a notification into their app about their latest completed ride.
-+ **Customer accounting service**: After all, Wild Rydes is a business, so this service would be responsible to collect the fare from the customer.
-+ **Extraordinary rides service**: This is special service that is interested in rides with fares or distances above certain thresholds - preparing the respective data for marketeers and success managers.
-
-This use case obviously cries for making use of publish/subscribe messaging, which can comfortably done using Amazon SNS in a serverless and scalable manner. It decouples both sides as much as possible. Services on the right hand side can autonomously subscribe to the topic, transparent to the left hand side.
-
-
-
-## Lab Objectives
-
-In this lab, you will acquire the following skills:
-
-+ **How to create an Amazon SNS topic?**
-+ **How to add a AWS Lambda subscription to an Amazon SNS topic?**
-+ **How to define a subscription filter in an Amazon SNS subscriptions?**
-+ **How to call Amazon SNS from AWS Lambda?**
-
-
-{{% notice tip %}}
-**Lab source code**
-If you are curious and would like to dive into the lab's source code, you are more than welcome to do so. You will find the source code of this lab in our Github repo **[here](https://github.com/aws-samples/asynchronous-messaging-workshop/tree/master/code/lab-1)**.
-{{% /notice %}}
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml
deleted file mode 100644
index 7a64813..0000000
--- a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml
+++ /dev/null
@@ -1,501 +0,0 @@
-AWSTemplateFormatVersion: '2010-09-09'
-Transform: AWS::Serverless-2016-10-31
-Description: >
- SAM template to bootstrap the Wild Rydes Async Messaging Workshop Lab-1
-
-# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
-Globals:
- Function:
- Timeout: 10
-
-Resources:
- PythonLayerWithBoto3:
- Type: AWS::Serverless::LayerVersion
- Properties:
- LayerName: PythonLayerWithBoto3
- Description: Lambda Python 3.6 Layer with Boto3
- ContentUri: lambda-layers/
- CompatibleRuntimes:
- - python3.6
- LicenseInfo: Apache 2.0
- RetentionPolicy: Retain
-
- SubmitRideCompletionFunction:
- Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
- Properties:
- CodeUri: unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.6
- Layers:
- - !Ref PythonLayerWithBoto3
- Environment:
- Variables:
- TABLE_NAME: !Ref RidesTable
-# TOPIC_ARN: !Ref RideCompletionTopic
- Policies:
- - DynamoDBCrudPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TableName: !Ref RidesTable
-# - SNSPublishMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
-# TopicName: !GetAtt RideCompletionTopic.TopicName
- Events:
- WildRydes:
- Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
- Properties:
- Path: /submit-ride-completion
- Method: post
-
- RidesTable:
- Type: AWS::Serverless::SimpleTable
- Properties:
- TableName: Rides
- PrimaryKey:
- Name: id
- Type: String
-
-# RideCompletionTopic:
-# Type: AWS::SNS::Topic
-# Properties:
-# TopicName: RideCompletionTopic
-
-# CustomerNotificationServiceSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# TopicArn: !Ref RideCompletionTopic
-# Protocol: http
-# Endpoint: !Sub "http://${CustomerNotifyLoadBalancer.DNSName}"
-
-# CustomerAccountingServiceSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# TopicArn: !Ref RideCompletionTopic
-# Protocol: http
-# Endpoint: !Sub "http://${CustomerAccountingLoadBalancer.DNSName}"
-
-# ExtraordinaryRidesServiceSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# TopicArn: !Ref RideCompletionTopic
-# Protocol: http
-# Endpoint: !Sub "http://${ExtraordinaryRidesLoadBalancer.DNSName}"
-# FilterPolicy: { "fare": [{"numeric": [">=", 50]}], "distance": [{"numeric": [">=", 20]}] }
-
- ##################################################
- ## BACKEND MICROSERVICES BASED ON AWS FARGATE ##
- ##################################################
-
- VPC:
- Type: AWS::EC2::VPC
- Properties:
- CidrBlock: 10.11.0.0/16
- EnableDnsSupport: true
- EnableDnsHostnames: true
- Tags:
- - Key: Name
- Value: !Join [ ':', [ !Ref 'AWS::StackName', 'VPC' ] ]
-
- InternetGateway:
- Type: AWS::EC2::InternetGateway
- Properties:
- Tags:
- - Key: Name
- Value: !Join [ ':', [ !Ref 'AWS::StackName', 'InternetGateway' ] ]
-
- VPCGatewayAttachment:
- Type: AWS::EC2::VPCGatewayAttachment
- Properties:
- VpcId: !Ref VPC
- InternetGatewayId: !Ref InternetGateway
-
- RouteTable:
- DependsOn: VPCGatewayAttachment
- Type: AWS::EC2::RouteTable
- Properties:
- VpcId: !Ref VPC
- Tags:
- - Key: Name
- Value: !Join [ ':', [ !Ref 'AWS::StackName', 'RouteTable' ] ]
-
- Route:
- Type: AWS::EC2::Route
- Properties:
- RouteTableId: !Ref RouteTable
- DestinationCidrBlock: 0.0.0.0/0
- GatewayId: !Ref InternetGateway
-
- PublicSubnet1:
- Type: AWS::EC2::Subnet
- Properties:
- VpcId: !Ref VPC
- CidrBlock: 10.11.0.0/24
- AvailabilityZone: !Select [0, !GetAZs '']
- Tags:
- - Key: Name
- Value: !Join [ ':', [ !Ref 'AWS::StackName', 'PublicSubnet1' ] ]
-
- PublicSubnet2:
- Type: AWS::EC2::Subnet
- Properties:
- VpcId: !Ref VPC
- CidrBlock: 10.11.1.0/24
- AvailabilityZone: !Select [1, !GetAZs '']
- Tags:
- - Key: Name
- Value: !Join [ ':', [ !Ref 'AWS::StackName', 'PublicSubnet2' ] ]
-
- PublicSubnet1RouteTableAssociation:
- Type: AWS::EC2::SubnetRouteTableAssociation
- Properties:
- SubnetId: !Ref PublicSubnet1
- RouteTableId: !Ref RouteTable
-
- PublicSubnet2RouteTableAssociation:
- Type: AWS::EC2::SubnetRouteTableAssociation
- Properties:
- SubnetId: !Ref PublicSubnet2
- RouteTableId: !Ref RouteTable
-
- SecurityGroup:
- Type: AWS::EC2::SecurityGroup
- Properties:
- GroupDescription: Limits security group ingress and egress traffic for the ECS tasks running in AWS Fargate
- VpcId: !Ref VPC
- SecurityGroupIngress:
- - IpProtocol: tcp
- FromPort: 80
- ToPort: 80
- CidrIp: 0.0.0.0/0
-
- ECSTaskExecutionRole:
- Type: AWS::IAM::Role
- Properties:
- AssumeRolePolicyDocument:
- Statement:
- - Effect: Allow
- Principal:
- Service: [ecs-tasks.amazonaws.com]
- Action: ['sts:AssumeRole']
- Path: /
- ManagedPolicyArns:
- - arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
-
- ECSCluster:
- Type: AWS::ECS::Cluster
- Properties:
- ClusterName: wild-rides-cluster
-
- CustomerAccountingServiceECSTaskDefinition:
- Type: AWS::ECS::TaskDefinition
- Properties:
- Family: customer-accounting-service-task
- Cpu: 512
- Memory: 1024
- NetworkMode: awsvpc
- RequiresCompatibilities:
- - FARGATE
- ExecutionRoleArn: !Ref ECSTaskExecutionRole
- ContainerDefinitions:
- - Name: customer-accounting-service-task
- Cpu: 512
- Memory: 1024
- Image: !Sub '689573718314.dkr.ecr.eu-central-1.amazonaws.com/wild-rydes/generic-backend-microservice:latest'
- Environment:
- - Name: SERVICE_NAME
- Value: customer-accounting-service
- PortMappings:
- - ContainerPort: 80
- LogConfiguration:
- LogDriver: awslogs
- Options:
- awslogs-group: !Ref WildRidesCloudWatchLogsGroup
- awslogs-region: !Ref AWS::Region
- awslogs-stream-prefix: customer-accounting-service
-
- CustomerNotificationServiceECSTaskDefinition:
- Type: AWS::ECS::TaskDefinition
- Properties:
- Family: customer-notification-service-task
- Cpu: 512
- Memory: 1024
- NetworkMode: awsvpc
- RequiresCompatibilities:
- - FARGATE
- ExecutionRoleArn: !Ref ECSTaskExecutionRole
- ContainerDefinitions:
- - Name: customer-notification-service-task
- Cpu: 512
- Memory: 1024
- Image: !Sub '689573718314.dkr.ecr.eu-central-1.amazonaws.com/wild-rydes/generic-backend-microservice:latest'
- Environment:
- - Name: SERVICE_NAME
- Value: customer-notification-service
- PortMappings:
- - ContainerPort: 80
- LogConfiguration:
- LogDriver: awslogs
- Options:
- awslogs-group: !Ref WildRidesCloudWatchLogsGroup
- awslogs-region: !Ref AWS::Region
- awslogs-stream-prefix: customer-notification-service
-
- ExtraordinaryRidesServiceECSTaskDefinition:
- Type: AWS::ECS::TaskDefinition
- Properties:
- Family: extraordinary-rides-service-task
- Cpu: 512
- Memory: 1024
- NetworkMode: awsvpc
- RequiresCompatibilities:
- - FARGATE
- ExecutionRoleArn: !Ref ECSTaskExecutionRole
- ContainerDefinitions:
- - Name: extraordinary-rides-service-task
- Cpu: 512
- Memory: 1024
- Image: !Sub '689573718314.dkr.ecr.eu-central-1.amazonaws.com/wild-rydes/generic-backend-microservice:latest'
- Environment:
- - Name: SERVICE_NAME
- Value: extraordinary-rides-service
- PortMappings:
- - ContainerPort: 80
- LogConfiguration:
- LogDriver: awslogs
- Options:
- awslogs-group: !Ref WildRidesCloudWatchLogsGroup
- awslogs-region: !Ref AWS::Region
- awslogs-stream-prefix: extraordinary-rides-service
-
- # ALB added to facade the containers for back end services - Customer accounting
- CustomerAccountingLoadBalancer:
- Type: AWS::ElasticLoadBalancingV2::LoadBalancer
- Properties:
- Name: !Sub "caslb-${AWS::StackName}"
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- SecurityGroups:
- - !Ref SecurityGroup
- Tags:
- - Key: Name
- Value: !Ref AWS::StackName
-
- CustomerAccountingLoadBalancerListener:
- Type: AWS::ElasticLoadBalancingV2::Listener
- Properties:
- LoadBalancerArn: !Ref CustomerAccountingLoadBalancer
- Port: 80
- Protocol: HTTP
- DefaultActions:
- - Type: forward
- TargetGroupArn: !Ref CustomerAccountingTargetGroup
-
- CustomerAccountingTargetGroup:
- Type: AWS::ElasticLoadBalancingV2::TargetGroup
- Properties:
- VpcId: !Ref VPC
- Port: 80
- Protocol: HTTP
- Matcher:
- HttpCode: 200-299
- HealthCheckIntervalSeconds: 60
- HealthCheckPath: /
- HealthCheckProtocol: HTTP
- HealthCheckTimeoutSeconds: 5
- HealthyThresholdCount: 2
- TargetType: ip
-
- # ALB added to facade the containers for back end services - Customer notification
- CustomerNotifyLoadBalancer:
- Type: AWS::ElasticLoadBalancingV2::LoadBalancer
- Properties:
- Name: !Sub "cnslb-${AWS::StackName}"
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- SecurityGroups:
- - !Ref SecurityGroup
- Tags:
- - Key: Name
- Value: !Ref AWS::StackName
-
- CustomerNotifyLoadBalancerListener:
- Type: AWS::ElasticLoadBalancingV2::Listener
- Properties:
- LoadBalancerArn: !Ref CustomerNotifyLoadBalancer
- Port: 80
- Protocol: HTTP
- DefaultActions:
- - Type: forward
- TargetGroupArn: !Ref CustomerNotifyTargetGroup
-
- CustomerNotifyTargetGroup:
- Type: AWS::ElasticLoadBalancingV2::TargetGroup
- Properties:
- VpcId: !Ref VPC
- Port: 80
- Protocol: HTTP
- Matcher:
- HttpCode: 200-299
- HealthCheckIntervalSeconds: 60
- HealthCheckPath: /
- HealthCheckProtocol: HTTP
- HealthCheckTimeoutSeconds: 5
- HealthyThresholdCount: 2
- TargetType: ip
-
- # ALB added to facade the containers for back end services - extraordinary rides
- ExtraordinaryRidesLoadBalancer:
- Type: AWS::ElasticLoadBalancingV2::LoadBalancer
- Properties:
- Name: !Sub "erslb-${AWS::StackName}"
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- SecurityGroups:
- - !Ref SecurityGroup
- Tags:
- - Key: Name
- Value: !Ref AWS::StackName
-
- ExtraordinaryRidesLoadBalancerListener:
- Type: AWS::ElasticLoadBalancingV2::Listener
- Properties:
- LoadBalancerArn: !Ref ExtraordinaryRidesLoadBalancer
- Port: 80
- Protocol: HTTP
- DefaultActions:
- - Type: forward
- TargetGroupArn: !Ref ExtraordinaryRidesTargetGroup
-
- ExtraordinaryRidesTargetGroup:
- Type: AWS::ElasticLoadBalancingV2::TargetGroup
- Properties:
- VpcId: !Ref VPC
- Port: 80
- Protocol: HTTP
- Matcher:
- HttpCode: 200-299
- HealthCheckIntervalSeconds: 60
- HealthCheckPath: /
- HealthCheckProtocol: HTTP
- HealthCheckTimeoutSeconds: 5
- HealthyThresholdCount: 2
- TargetType: ip
-
- CustomerAccountingServiceECSService:
- Type: AWS::ECS::Service
- DependsOn: CustomerAccountingLoadBalancerListener
- Properties:
- ServiceName: customer-accounting-service-service
- Cluster: !Ref ECSCluster
- LaunchType: FARGATE
- DeploymentConfiguration:
- MaximumPercent: 200
- MinimumHealthyPercent: 100
- DesiredCount: 1
- NetworkConfiguration:
- AwsvpcConfiguration:
- AssignPublicIp: ENABLED # to be able to download images from ECR
- SecurityGroups:
- - !Ref SecurityGroup
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- TaskDefinition: !Ref CustomerAccountingServiceECSTaskDefinition
- LoadBalancers:
- - ContainerName: "customer-accounting-service-task"
- ContainerPort: 80
- TargetGroupArn: !Ref CustomerAccountingTargetGroup
-
- CustomerNotificationServiceECSService:
- Type: AWS::ECS::Service
- DependsOn: CustomerNotifyLoadBalancerListener
- Properties:
- ServiceName: customer-notification-service-service
- Cluster: !Ref ECSCluster
- LaunchType: FARGATE
- DeploymentConfiguration:
- MaximumPercent: 200
- MinimumHealthyPercent: 100
- DesiredCount: 1
- NetworkConfiguration:
- AwsvpcConfiguration:
- AssignPublicIp: ENABLED # to be able to download images from ECR
- SecurityGroups:
- - !Ref SecurityGroup
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- TaskDefinition: !Ref CustomerNotificationServiceECSTaskDefinition
- LoadBalancers:
- - ContainerName: "customer-notification-service-task"
- ContainerPort: 80
- TargetGroupArn: !Ref CustomerNotifyTargetGroup
-
- ExtraordinaryRidesServiceECSService:
- Type: AWS::ECS::Service
- DependsOn: ExtraordinaryRidesLoadBalancerListener
- Properties:
- ServiceName: extraordinary-rides-service-service
- Cluster: !Ref ECSCluster
- LaunchType: FARGATE
- DeploymentConfiguration:
- MaximumPercent: 200
- MinimumHealthyPercent: 100
- DesiredCount: 1
- NetworkConfiguration:
- AwsvpcConfiguration:
- AssignPublicIp: ENABLED # to be able to download images from ECR
- SecurityGroups:
- - !Ref SecurityGroup
- Subnets:
- - !Ref PublicSubnet1
- - !Ref PublicSubnet2
- TaskDefinition: !Ref ExtraordinaryRidesServiceECSTaskDefinition
- LoadBalancers:
- - ContainerName: "extraordinary-rides-service-task"
- ContainerPort: 80
- TargetGroupArn: !Ref ExtraordinaryRidesTargetGroup
-
- WildRidesCloudWatchLogsGroup:
- Type: AWS::Logs::LogGroup
- Properties:
- LogGroupName: ecs/wild-rides/async-msg
- RetentionInDays: 30
-
-Outputs:
- # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
- # Find out more about other implicit resources you can reference within SAM
- # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
- UnicornManagementServiceApiSubmitRideCompletionEndpoint:
- Description: "API Gateway endpoint URL for Prod stage for SubmitRideCompletion function"
- Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/submit-ride-completion/"
-
- SubmitRideCompletionFunction:
- Description: "SubmitRideCompletionFunction Lambda Function ARN"
- Value: !GetAtt SubmitRideCompletionFunction.Arn
- Export:
- Name: 'WILD-RIDES:RIDES-COMPLETION-FUNCTION'
-
- SubmitRideCompletionFunctionIamRole:
- Description: "Implicit IAM Role created for SubmitRideCompletion function"
- Value: !GetAtt SubmitRideCompletionFunctionRole.Arn
-
- RidesTable:
- Description: "Amazon DynamoDB table ARN for Rides table"
- Value: !Ref RidesTable
-
-# RideCompletionTopic:
-# Description: "Amazon SNS topic ARN for rides completion topic"
-# Value: !Ref RideCompletionTopic
-
- CustomerAccountingServiceLBURL:
- Description: "Load balancer URL for customer accounting service"
- Value: !Sub "http://${CustomerAccountingLoadBalancer.DNSName}"
-
- CustomerNotificationServiceLBURL:
- Description: "Load balancer URL for customer notify service"
- Value: !Sub "http://${CustomerNotifyLoadBalancer.DNSName}"
-
- ExtraordinaryRidesServiceLBURL:
- Description: "Load balancer URL for extraordinary rides service"
- Value: !Sub "http://${ExtraordinaryRidesLoadBalancer.DNSName}"
\ No newline at end of file
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.md b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.md
deleted file mode 100644
index ffb191b..0000000
--- a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/bootstrap-initial-state.md
+++ /dev/null
@@ -1,61 +0,0 @@
-+++
-title = "Bootstrap the Initial State"
-weight = 21
-pre = "1 "
-+++
-
-First, we will setup the initial state, including the integrating of the **Unicorn Management Service** (leveraging [Amazon API Gateway](https://aws.amazon.com/api-gateway/) and [AWS Lambda](https://aws.amazon.com/lambda/)), the **Rides Store** (leveraging [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)) and three Serverless backend services - **Customer notification**, **Customer accounting**, and the **Extraordinary rides** service.
-
-
-
-#### 1. Browse to your AWS Cloud9 IDE
-
-Browse to your [AWS Cloud9 Console](https://console.aws.amazon.com/cloud9/home) and find the environment called **WildRydesAsyncMessaging**. Click the **Open IDE** button to navigate to your AWS Cloud9 IDE.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Build the lab artifacts from source
-
-We provide you with an [AWS SAM](https://aws.amazon.com/serverless/sam/) template which we will use to bootstrap the initial state. In the **bash tab** (at the bottom) in you AWS Cloud9 IDE, run the following commands to build the lab code:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-{{< /highlight >}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Deploy the application
-
-Now we are ready to deploy the application, by running the following command in the **lab-1** directory:
-
-{{< highlight bash >}}
-export AWS_REGION=$(aws --profile default configure get region)
-sam deploy \
- --stack-name wild-rydes-async-msg-1 \
- --capabilities CAPABILITY_IAM \
- --region $AWS_REGION \
- --guided
-{{< /highlight >}}
-
-Confirm the first 4 proposed arguments by hitting **ENTER**.
-
-When you get asked **SubmitRideCompletionFunction may not have authorization defined, Is this okay? [y/N]:**, enter `y` and hit **ENTER** again 4 times.
-
-#### 4. Wait until the stack is successfully deployed
-
-It takes usually 4 minutes until the stack launched. You can monitor the progress of the **wild-rydes-async-msg-1** stack in the SAM CLI or in your [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation). When the stack is launched, the status will change from **CREATE_IN_PROGRESS** to **CREATE_COMPLETE**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-
-{{%attachments title="Related files" pattern="/*.*(yaml)"/%}}
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-1.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-1.png
deleted file mode 100644
index b7804df..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-2.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-2.png
deleted file mode 100644
index f090b9e..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-2.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-3.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-3.png
deleted file mode 100644
index 50c016e..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-3.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-4.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-4.png
deleted file mode 100644
index ff02511..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-4.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-5.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-5.png
deleted file mode 100644
index 168e849..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-5.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-6.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-6.png
deleted file mode 100644
index 574c8c9..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-6.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-7.png b/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-7.png
deleted file mode 100644
index b262957..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/bootstrap-initial-state/step-7.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-console.md b/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-console.md
deleted file mode 100644
index b20c0ee..0000000
--- a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-console.md
+++ /dev/null
@@ -1,25 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 3. Delete the Amazon S3 bucket
-
-In your **[Amazon S3 console](https://s3.console.aws.amazon.com/s3/home?#)**, filter for the **bucket** you have created to upload your code artifacts with AWS SAM, select the **bucket** and click the **Delete** button in the top.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 4. Delete the Amazon SNS topic
-
-In your **[Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics)**, select **Topic** in the left navigation pane, select the **RideCompletionTopic** and click the **Delete** button in the top right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-You are done!
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-sam.md b/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-sam.md
deleted file mode 100644
index c6ab588..0000000
--- a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up-sam.md
+++ /dev/null
@@ -1,8 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up.md b/workshop/content/fan-out-and-message-filtering/clean-up/clean-up.md
deleted file mode 100644
index 963f099..0000000
--- a/workshop/content/fan-out-and-message-filtering/clean-up/clean-up.md
+++ /dev/null
@@ -1,28 +0,0 @@
-+++
-title = "Clean up"
-weight = 28
-pre = "8 "
-+++
-
-In this step, we will clean up all resources, we created during this lab, so that no further cost will occur.
-
-#### 1. Delete the previously created IAM Inline Policies
-
-In your Amazon IAM console, select **[Roles](https://console.aws.amazon.com/iamv2/home#/roles)** in the left navigation. In the search field, enter "async-msg". Open all matching roles and delete the previously created inline policies by clicking the "x" right to the policy name.
-
-#### 2. Delete the AWS SAM template
-
-In your Cloud9 IDE, run the following command to delete the resources we created with our AWS SAM template:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-aws cloudformation delete-stack \
- --stack-name wild-rydes-async-msg-1
-
-{{< /highlight >}}
-
-
-#### 3. Delete the AWS Lambda created Amazon CloudWatch Log Group
-
-Follow **[this deep link](https://console.aws.amazon.com/cloudwatch/home?#logs:prefix=/aws/lambda/wild-rydes)** to list the **Amazon CloudWatch Log Groups** with the name `/aws/lambda/wild-rydes`, AWS Lambda created during this lab. Select the Amazon CloudWatch Log Group and choose **Delete log group** from the **Actions** menu.
-
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/step-1-console.png b/workshop/content/fan-out-and-message-filtering/clean-up/step-1-console.png
deleted file mode 100644
index f04b02a..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/clean-up/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/step-1.png b/workshop/content/fan-out-and-message-filtering/clean-up/step-1.png
deleted file mode 100644
index d2690fa..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/clean-up/step-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/clean-up/step-2-console.png b/workshop/content/fan-out-and-message-filtering/clean-up/step-2-console.png
deleted file mode 100644
index 49f409c..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/clean-up/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md
deleted file mode 100644
index 0498144..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md
+++ /dev/null
@@ -1,50 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new subscription
-
-After selecting the topic **RideCompletionTopic**, click the **Create subscription** button in the bottom right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Configure the subscription
-
-
-In the next page, select **AWS Lambda** as the subscription protocol. In the **Endpoint** dropdown type **CustomerAccount**, and select the ARN of the Lambda function.
-
-To look-up the subscription endpoint, navigate back to your CloudFormation console, select the stack **wild-rydes-async-msg-1** and select the **Outputs** tab. Select the value, corresponding to the key **CustomerAccountingFunction**. It should look similar like `arn:aws:lambda...CustomerAccountingFunction-v7rZLcVBqIKT`.
-
-You can also look-up the value by running the following command:
-
-```bash
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-1 \
- --query 'Stacks[].Outputs[?OutputKey==`CustomerAccountingFunction`].OutputValue' \
- --output text
-```
-
-Click **Create subscription** to create the subscription.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Confirm the subscription
-
-Amazon SNS and AWS Lambda are integrated so the subscription is immediately established and the **Status** will change to **Confirmed**. There is nothing to do for you in this step.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-To validate that the trigger was created for the Lambda function, navigate to the [AWS Lambda console](https://console.aws.amazon.com/lambda/home?/functions). Open the **Customer Accounting function**. In the function overview you should see the SNS service icon. Click on the icon and make sure you have the **RideCompletionTopic** trigger listed.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
\ No newline at end of file
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md
deleted file mode 100644
index b253f2c..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md
+++ /dev/null
@@ -1,43 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, uncomment the Amazon SNS event source for the **CustomerAccountingFunction**. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-sns.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
-Events:
- SNSEvent:
- Type: SNS
- Properties:
- Topic: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md
deleted file mode 100644
index 1588946..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "Create Customer Accounting Service Subscription"
-weight = 24
-pre = "4 "
-+++
-
-Now we are ready to configure the subscription for the customer accounting service:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-customer-accounting-service-subscription-console" />}}
-{{< tab name="SAM" include="create-customer-accounting-service-subscription-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-console.png
deleted file mode 100644
index 151bbeb..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-sam.png b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-sam.png
deleted file mode 100644
index 1caba98..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-2-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-2-console.png
deleted file mode 100644
index 0b27fdd..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-3-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-3-console.png
deleted file mode 100644
index 80c5dd6..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-4-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-4-console.png
deleted file mode 100644
index ff209d2..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-accounting-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md
deleted file mode 100644
index 1bd9d67..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md
+++ /dev/null
@@ -1,48 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new subscription
-
-After selecting the topic **RideCompletionTopic**, click the **Create subscription** button in the bottom right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Configure the subscription
-
-In the next page, select **AWS Lambda** as the subscription protocol. In the **Endpoint** dropdown type **CustomerNotification**, and select the ARN of the Lambda function.
-
-To look-up the subscription endpoint, navigate back to your CloudFormation console, select the stack **wild-rydes-async-msg-1** and select the **Outputs** tab. Select the value, corresponding to the key **CustomerNotificationFunction**. It should look similar like `arn:aws:lambda...CustomerNotificationFunctio-qGy9SKt8mya6`.
-
-You can also look-up the value by running the following command:
-
-```bash
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-1 \
- --query 'Stacks[].Outputs[?OutputKey==`CustomerNotificationFunction`].OutputValue' \
- --output text
-```
-
-Click **Create subscription** to create the subscription.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Confirm the subscription
-
-Amazon SNS and AWS Lambda are integrated so the subscription is immediately established and the **Status** will change to **Confirmed**. There is nothing to do for you in this step.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-To validate that the trigger was created for the Lambda function, navigate to the [AWS Lambda console](https://console.aws.amazon.com/lambda/home?/functions). Open the **Customer Notification function**. In the function overview you should see the SNS service icon. Click on the icon and make sure you have the **RideCompletionTopic** trigger listed.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
\ No newline at end of file
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md
deleted file mode 100644
index 50b41ce..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md
+++ /dev/null
@@ -1,42 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, uncomment the Amazon SNS event source for the **CustomerNotificationFunction**. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-sns.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
-Events:
- SNSEvent:
- Type: SNS
- Properties:
- Topic: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md
deleted file mode 100644
index e93eec3..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "Create Customer Notification Service Subscription"
-weight = 23
-pre = "3 "
-+++
-
-Now we are ready to configure the subscription for the customer notification service:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-customer-notification-service-subscription-console" />}}
-{{< tab name="SAM" include="create-customer-notification-service-subscription-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-console.png
deleted file mode 100644
index b95c83d..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-sam.png b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-sam.png
deleted file mode 100644
index db94916..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-2-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-2-console.png
deleted file mode 100644
index 5bf7a3e..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-3-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-3-console.png
deleted file mode 100644
index fb98eef..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-4-console.png b/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-4-console.png
deleted file mode 100644
index f1aef40..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-customer-notification-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md
deleted file mode 100644
index 602fb64..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md
+++ /dev/null
@@ -1,65 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new subscription
-
-After selecting the topic **RideCompletionTopic**, click the **Create subscription** button in the bottom right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Configure the subscription
-
-In the next page, select **AWS Lambda** as the subscription protocol. In the **Endpoint** dropdown type **CustomerNotification**, and select the ARN of the Lambda function.
-
-To look-up the subscription endpoint, navigate back to your CloudFormation console, select the stack **wild-rydes-async-msg-1** and select the **Outputs** tab. Select the value, corresponding to the key **ExtraordinaryRidesFunction**. It should look similar like `arn:aws:lambda...ExtraordinaryRidesFunction-3DzmsnujRS2Q`.
-
-You can also look-up the value by running the following command:
-
-```bash
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-1 \
- --query 'Stacks[].Outputs[?OutputKey==`ExtraordinaryRidesFunction`].OutputValue' \
- --output text
-```
-
-{{% notice tip %}}
-Don't overlook to create the subscription filter policy!
-{{% /notice %}}
-
-Expand the section **Subscription filter policy** to create the subscription filter policy to receive notifications only, if the `fare >= 50` and the `distance >= 20`. If you are not familiar with the syntax, you can study it [here](https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html) - or fall-back to the cheat sheet below.
-
-{{%expand "cheat sheet" %}}
-```
-{
- "fare": [{"numeric": [">=", 50]}],
- "distance": [{"numeric": [">=", 20]}]
-}
-```
-{{% /expand%}}
-
-Click **Create subscription** to create the subscription.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Confirm the subscription
-
-**Amazon SNS** require a confirmation of a subscription, before it publishes messages to that endpoint, as described **[here](https://docs.aws.amazon.com/sns/latest/dg/sns-http-https-endpoint-as-subscriber.html#SendMessageToHttp.confirm)**.
-Our provided Customer Notification Service handles this automatically for us. The **Status** will change to **Confirmed** immediately (may refresh the page a couple of times). There is nothing to do for you in this step.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-To validate that the trigger was created for the Lambda function, navigate to the [AWS Lambda console](https://console.aws.amazon.com/lambda/home?/functions). Open the **Extraordinary Rides function**. In the function overview you should see the SNS service icon. Click on the icon and make sure you have the **RideCompletionTopic** trigger listed.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
\ No newline at end of file
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md
deleted file mode 100644
index 7b1220b..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md
+++ /dev/null
@@ -1,56 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, add the definition for the Amazon SNS subscription for the **ExtraordinaryRidesService**. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html)**.
-
-{{% notice tip %}}
-Don't overlook to create the subscription filter policy!
-{{% /notice %}}
-
-{{%expand "Cheat Sheet" %}}
-```yaml
-Events:
- SNSEvent:
- Type: SNS
- Properties:
- Topic: !Ref RideCompletionTopic
- FilterPolicy:
- fare:
- - numeric:
- - '>='
- - 50
- distance:
- - numeric:
- - '>='
- - 20
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
\ No newline at end of file
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md
deleted file mode 100644
index edd5d7b..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Create Extraordinary Rides Service Subscription"
-weight = 25
-pre = "5 "
-+++
-
-Now we are ready to configure the subscription for the extraordinary rides service:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-extraordinary-rides-service-subscription-console" />}}
-{{< tab name="SAM" include="create-extraordinary-rides-service-subscription-sam" />}}
-{{< /tabs >}}
-
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-console.png b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-console.png
deleted file mode 100644
index 5ab6789..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-sam.png b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-sam.png
deleted file mode 100644
index 1e69644..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-2-console.png b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-2-console.png
deleted file mode 100644
index 87a1e58..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-3-console.png b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-3-console.png
deleted file mode 100644
index 1ff74b5..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-4-console.png b/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-4-console.png
deleted file mode 100644
index cdbb38c..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-extraordinary-rides-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-console.md b/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-console.md
deleted file mode 100644
index 3f7cb8a..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-console.md
+++ /dev/null
@@ -1,23 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Browse to the Amazon SNS console
-
-In your [Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics), select **Topic** in the left navigation pane and click the **Create topic** button in the top right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Create the Ride Completion Topic
-
-Enter the topic name **RideCompletionTopic** and leave the default values. Scroll to the bottom of the page and click **Create topic**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-sam.md b/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-sam.md
deleted file mode 100644
index 416a357..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic-sam.md
+++ /dev/null
@@ -1,44 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, add the definition for an Amazon SNS topic with the name RideCompletionTopic. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```
- RideCompletionTopic:
- Type: AWS::SNS::Topic
- Properties:
- TopicName: RideCompletionTopic
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SNS topic:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic.md b/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic.md
deleted file mode 100644
index 65fb9ff..0000000
--- a/workshop/content/fan-out-and-message-filtering/create-sns-topic/create-sns-topic.md
+++ /dev/null
@@ -1,16 +0,0 @@
-+++
-title = "Create the Amazon SNS topic"
-weight = 22
-pre = "2 "
-+++
-
-In this step, you can chose whether you want to create the Amazon SNS topic via the AWS console or AWS SAM. Just select the corresponding tab below and follow the instructions:
-
-{{% notice info %}}
-You can chose, whether you would like to use the **[AWS Console](https://console.aws.amazon.com) or [AWS SAM](https://aws.amazon.com/serverless/sam/)** for this lab. Once you have chosen, **stick to it until the end** of this lab and don't switch in between!
-{{% /notice %}}
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-sns-topic-console" />}}
-{{< tab name="SAM" include="create-sns-topic-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-console.png b/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-console.png
deleted file mode 100644
index 039b0c6..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-sam.png b/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-sam.png
deleted file mode 100644
index 1979b40..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-2-console.png b/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-2-console.png
deleted file mode 100644
index 895ce21..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/create-sns-topic/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/module-1.png b/workshop/content/fan-out-and-message-filtering/module-1.png
deleted file mode 100644
index b7804df..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/module-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-1.png b/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-1.png
deleted file mode 100644
index 6d7fea6..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-2.png b/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-2.png
deleted file mode 100644
index 750438f..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-2.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-3.png b/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-3.png
deleted file mode 100644
index 6071836..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/step-3.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/test-fan-out-and-message-filtering.md b/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/test-fan-out-and-message-filtering.md
deleted file mode 100644
index d6006f3..0000000
--- a/workshop/content/fan-out-and-message-filtering/test-fan-out-and-message-filtering/test-fan-out-and-message-filtering.md
+++ /dev/null
@@ -1,56 +0,0 @@
-+++
-title = "Test Fan-Out and Message Filtering"
-
-weight = 27
-pre = "7 "
-+++
-
-In this step, we will validate that the Amazon SNS topic is publishing all messages to all subscribers. Because a subscriber can also fail processing a message, we also want to validate that Amazon SNS is redelivering the message, so that we will not miss a single message.
-
-#### 1. Look up the API Gateway endpoint
-
-To look-up the API Gateway endpoint URL for the submit-ride-completion function, run the following command:
-
-```bash
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-1 \
- --query 'Stacks[].Outputs[?OutputKey==`UnicornManagementServiceApiSubmitRideCompletionEndpoint`].OutputValue' \
- --output text
-```
-
-
-#### 2. Send a couple requests to the Unicorn Management Service
-
-Let's store this API Gateway endpoint URL in an environment variable, so we don't have to repeat it all the time:
-
-```bash
-export ENDPOINT=$(aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-1 \
- --query 'Stacks[].Outputs[?OutputKey==`UnicornManagementServiceApiSubmitRideCompletionEndpoint`].OutputValue' \
- --output text)
-```
-
-To send a couple requests to the **submit ride completion endpoint**, execute the command below 5 or more times and change the request payload to test the filter criteria for the **Extraordinary Rides Service**:
-
-```bash
-curl -XPOST -i -H "Content-Type:application/json" -d '{ "from": "Berlin", "to": "Frankfurt", "duration": 420, "distance": 600, "customer": "cmr", "fare": 256.50 }' $ENDPOINT
-```
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Validate the message reception
-
-Go to your [Amazon CloudWatch Log console](https://console.aws.amazon.com/cloudwatch/home?#logsV2:log-groups) and your **Log Groups** beginning with `/aws/lambda/wild-rydes-async-msg-1-`. Select a Log Group to see all **Log Streams** available for that Log Group.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Browse each Log Stream to validate, that each of our 3 backend service could successfully process the message. You should also see some random log entries, indicating a failed message processing. Shortly after, you should see the message redelivery from Amazon SNS and the successful message processing log entry.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-console.png
deleted file mode 100644
index 0756e5a..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-sam.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-sam.png
deleted file mode 100644
index 107f6c4..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1.png
deleted file mode 100644
index b7804df..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-1.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-console.png
deleted file mode 100644
index 3ab02d7..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-sam.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-sam.png
deleted file mode 100644
index cc82149..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-2-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-console.png
deleted file mode 100644
index 5008e7f..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-sam.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-sam.png
deleted file mode 100644
index 8e85dbb..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-3-sam.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-4-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-4-console.png
deleted file mode 100644
index e9260d1..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-4-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-5-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-5-console.png
deleted file mode 100644
index 10bb1ca..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-5-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-6-console.png b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-6-console.png
deleted file mode 100644
index ad5b5e8..0000000
Binary files a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/step-6-console.png and /dev/null differ
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-console.md b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-console.md
deleted file mode 100644
index 422ff3a..0000000
--- a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-console.md
+++ /dev/null
@@ -1,98 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Grant additional IAM permissions to Lambda
-
-In your **[Amazon IAM console](https://console.aws.amazon.com/iam)**, select **Roles** in the left navigation. Use the filter text box to find the role with the name **wild-rydes-async-msg-1-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-1` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the role name and click **Add inline policy** to attach another one.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Select the **JSON** tab and passed the following policy statement into it, after you have substitute <<...>> with the correct values. It will add the permission to your Lambda function to publish messages to this particular Amazon SNS topic:
-
-{{%expand "policy" %}}
-```json
-{
- "Version": "2012-10-17",
- "Statement": [
- {
- "Action": [
- "sns:Publish"
- ],
- "Resource": "arn:aws:sns:<>:<>:<>",
- "Effect": "Allow"
- }
- ]
-}
-```
-{{% /expand%}}
-
-{{% notice tip %}}
-Make sure you provide the AWS ACCOUNT ID in the form of XXXXXXXXXXXX and not XXXX-XXXX-XXXX!
-{{% /notice %}}
-
-Click **Review policy** and enter the **Name** `SubmitRideCompletionFunctionRolePolicy1`. Click **Create policy**. To validate this step, select on the role again and your should see 3 policies attached to your role, including the one you just have created:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Provide the Amazon SNS topic ARN to Lambda
-
-In your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)**, select **Functions** in the left navigation. Use the filter text box to find the function with the name **wild-rydes-async-msg-1-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-1` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the function name and scroll down to the section **Environment variables**. Our Lambda function expects an environment variable with the **Name** `TOPIC_ARN`. It uses this Amazon SNS topic to publish all messages to. Lookup your Amazon SNS topic name in the [Amazon SNS console](https://console.aws.amazon.com/sns) and add this variable. Click the **Save** button in the top right corner to save the change.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Update your Lambda function to call Amazon SNS
-
-Open your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)** and select **Functions** in the left navigation. Select the function with the name **wild-rydes-async-msg-1-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-1` as your stack name). Scroll a bit down to the section **Function code**. Add the definition of the sns client directly after the dynamodb client:
-
-{{%expand "Cheat Sheet" %}}
-```Python
-sns = boto3.client('sns', config=config)
-```
-{{% /expand%}}
-
-After the put item DynamoDB statement and before we are sending the response back to the caller, add the code to publish a message to Amazon SNS:
-
-{{%expand "Cheat Sheet" %}}
-```Python
- response = sns.publish(
- TopicArn=TOPIC_ARN,
- Message=json.dumps(request),
- MessageAttributes = {
- 'fare': {
- 'DataType': 'Number',
- 'StringValue': str(request['fare'])
- },
- 'distance': {
- 'DataType': 'Number',
- 'StringValue': str(request['distance'])
- }
- }
- )
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-sam.md b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-sam.md
deleted file mode 100644
index 942b4cd..0000000
--- a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service-sam.md
+++ /dev/null
@@ -1,97 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Grant additional IAM permissions to Lambda
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, look for the **SubmitRideCompletionFunction** definition. It already contains one policies entry called **DynamoDBCrudPolicy**. Directly below, add a policy entry which grants Amazon SNS publish message permission. You can look up the supported policies **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html)**.
-
-{{%expand "Cheat Sheet" %}}
-
-```yaml
-- SNSPublishMessagePolicy:
- TopicName: !GetAtt RideCompletionTopic.TopicName
-```
-
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Provide the Amazon SNS topic ARN to Lambda
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-1/template.yaml`. In the **Resources** section, look for the **SubmitRideCompletionFunction** definition. It already contains one environment variables entry called **TABLE_NAME**. Directly below, add an additional variable with the key **TOPIC_ARN** and the corresponding value.
-
-{{%expand "Cheat Sheet" %}}
-
-```yaml
-TOPIC_ARN: !Ref RideCompletionTopic
-```
-
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Update your Lambda function to call Amazon SNS
-
-In your Cloud9 IDE, open the Python based AWS Lambda function `wild-rydes-async-messaging/lab-1/unicorn-management-service/app.py`.
-Add the definition of the sns client directly after the dynamodb client:
-
-{{%expand "Cheat Sheet" %}}
-```Python
-sns = boto3.client('sns', config=config)
-```
-{{% /expand%}}
-
-After the put item DynamoDB statement and before we are sending the response back to the caller, add the code to publish a message to Amazon SNS:
-
-{{%expand "Cheat Sheet" %}}
-```Python
- response = sns.publish(
- TopicArn=TOPIC_ARN,
- Message=json.dumps(request),
- MessageAttributes = {
- 'fare': {
- 'DataType': 'Number',
- 'StringValue': str(request['fare'])
- },
- 'distance': {
- 'DataType': 'Number',
- 'StringValue': str(request['distance'])
- }
- }
- )
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 4. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the additional policy:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-1
-sam build
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
diff --git a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service.md b/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service.md
deleted file mode 100644
index a844e03..0000000
--- a/workshop/content/fan-out-and-message-filtering/update-unicorn-management-service/update-unicorn-management-service.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-title = "Update Unicorn Management Service"
-
-weight = 26
-pre = "6 "
-+++
-
-After creating the Amazon SNS topic and all the subscriptions, the current architecture looks like the following on:
-
-
-
-The last missing part to complete the architecture is calling our **Amazon SNS topic** from our **Unicorn Management Service**.
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="update-unicorn-management-service-console" />}}
-{{< tab name="SAM" include="update-unicorn-management-service-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/orchestration-and-coordination/_index.md b/workshop/content/orchestration-and-coordination/_index.md
deleted file mode 100644
index b59c513..0000000
--- a/workshop/content/orchestration-and-coordination/_index.md
+++ /dev/null
@@ -1,61 +0,0 @@
-+++
-title = "Orchestration and Coordination"
-weight = 50
-pre = "Lab-4: "
-+++
-
-{{% notice info %}}
-Make sure you executed the **[Workshop Prerequisites](/prerequisites.html)** first, before you start with this lab!
-{{% /notice %}}
-
-AWS Step Functions is a fully managed Serverless workflow management service for managing long running processes and coordinating the components of distributed applications and microservices using visual workflows. But did you know it can also help you deal with the complexities of dealing with a long lived transaction across distributed components in your microservices architecture?
-
-In this Builder session, you will learn how AWS Step Functions can help us to implement the Saga design pattern.
-
-## What problems are we trying to solve
-
-When building cloud-based distributed architectures, one of the questions we need to ask ourselves is how do we maintain data consistency across microservices that have their own database / persistence mechanism? We do not have support for Distributed Transaction Coordinators (DTC) or two-phase commit protocols responsible for coordinating transactions across multiple cloud resources. We need a mechanism coordinate multiple local transactions.
-
-## The Saga Pattern
-
-A Saga is a design pattern for dealing with “long-lived transactions” (LLT), published by Garcia-Molina and Salem in 1987. Their original paper can be found here [https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf](https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf).
-
- > “LLT is a saga if it can be written as a sequence of transactions that can be interleaved with other transactions.” (Garcia-Molina, Salem 1987)
-
-Fundamentally the Saga Pattern is a failure management pattern that provides a mechansim for providing semantic consistency in our distributed applications by providing compensating transactions for every transaction where you have more than one collaborating services or functions. This compensating transactions ensures the system remains in a consistent state by rolling back or compensating for partially completed transactions.
-
-## Why AWS Step Functions
-
-AWS Step Functions provide us with a mechanism for dealing with long-lived transactions, by providing us with the ability to build fully managed state machines that:
-
-* coordinate the components of distributed applications and microservices
-* allowing us to build our state machines using visual workflows
-* provides us with a way to manage state and deal with failure
-
-## Lab Objectives
-
-The core objective for this lab is to **build a state machine** that implements a Saga for the Wild Rydes Fare Collection process.
-
-
-
-The process consists of three discrete transactions that need to be treated as a single, distributed transaction.
-
-1. **Register Fare**: register the fare in a DynamoDB table.
-1. **Payment Service**: calls a payment gateway for credit card pre-authorisation, and using the pre-authorisation code, completes the payment transaction
-1. **Customer Accounting Service**: once the payment has been processed, update the Wild Rydes Customer accounting system with the transaction details.
-
-In this lab, you will acquire the following skills:
-
-+ **How to create a Step Functions State Machine**
-+ **How to use the Step Functions Workflow Studio**
-+ **How to catch exceptions and manage retries in a Step Functions State Machine**
-+ **How to manage successful and non-successful execution flows in a Step Functions State machine**
-
-
-Let's get started!
-
-
-{{% notice tip %}}
-**Lab source code**
-If you are curious and would like to dive into the lab's source code, you are more than welcome to do so. You will find the source code of this lab in our Github repo **[here](https://github.com/aws-samples/asynchronous-messaging-workshop/tree/master/code/lab-4)**.
-{{% /notice %}}
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/add-exception-handling.md b/workshop/content/orchestration-and-coordination/add-exception-handling/add-exception-handling.md
deleted file mode 100644
index f282ec6..0000000
--- a/workshop/content/orchestration-and-coordination/add-exception-handling/add-exception-handling.md
+++ /dev/null
@@ -1,197 +0,0 @@
-+++
-title = "Add Exception Handling"
-weight = 53
-pre = "4 "
-+++
-
-#### 1. Error Handling
-
-In the last section, we added the transactions required to register and charge a fare and credit a customer account. But what if a problem occurs with any of these transactions?
-
-Remember that we need to leave the state of the system in a semantically correct state at each stage of the workflow. We wouldn't want to charge a fare via a payment system only for something to go wrong and then incorrectly credit a customer account. Similarly, we wouldn't want to mark a fare as completed without successfully taking payment. Our Unicorns might be magic but our profits are not!
-
-In this section, we will add logic to catch potential failures at each state in the workflow. This will enable us to rollback the transactions in order to leave the state of the system in a semantically correct state. We will also add termination states for both successful and unsuccessful State machine executions and an additional notification for unsuccessful completions.
-
-#### 1. Step Functions Error Handling
-
-Any state in a Step Functions state machine can encounter an error and errors can happen for a variety of reasons:
-
-* State machine definition issues (e.g. no matching rule in a Choice state)
-* Task failures (e.g. an exception in a Lambda function)
-* Transient issues (e.g. transient throttling or network issues)
-
-**By default, when a state reports an error, AWS Step Functions will fail the execution entirely.**
-
-However in addition to this default error behaviour, the **Task, Map and Parallel** states in a Step Functions State machine allow errors to be caught using the **Catch** field (also referred to as a **Catcher**). This enables conditional logic based on the error and in turn enables customisable error handling within a Step Functions state machine.
-
-The Catch field enables all or specific errors to be caught by specifying error names in the **errors** field. Error names can be custom errors raised by Lambda functions or errors defined by a particular AWS service. Step Functions provides a number of [default error names](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html#error-handling-error-representation)
-, a selection of which are:
-
-* States.ALL - Acts as a catch all and matches any known error name.
-* States.Timeout - Thrown when a Task state runs for longer than the **TimeoutSeconds** value or failed to send a heartbeat for a period longer than the **HeartbeatSeconds** value.
-* States.TaskFailed - Acts as a wildcard for any error other than **States.Timeout**.
-
-In the event an error is caught, a **fallback state** is defined as part of a **Catcher** which determines the next state to transition to, together with a **ResultPath** that enables the error to be appended to the original input to in turn allow down stream systems and processes to take appropriate action.
-
-{{% notice tip %}}
-We use a **Catcher** and add the error name to the **ResultPath** in this lab to send an error SNS failure notification with the details of the specific error that occurred.
-{{% /notice %}}
-
-#### 2. RegisterFare Exception Handling & Failure Notification
-
-Let's start by adding some error handling to our first state: **RegisterFare**.
-
-This is a relatively simple state that adds a new Fare item to our DynamoDB table using Step Functions direct integration with DynamoDB.
-
-Click on the **RegisterFare** state in the graph and select the **Error Handling** table from the **Form** view. Click **Add new catcher**.
-
-For this state, our behavior is not going to vary by error, we will simply send a failure notification in each case, so let's catch all possible exceptions. We can do this by specifying the **States.ALL** error name in the **Errors** text box. Add **$.registerError** to the **ResultPath** field for the catcher.
-
-For the **Fallback state** option, choose **Add new state**. This creates an empty state that our catcher will transition to in the event of a failure. In the **Actions** menu in the left-hand pane, select **Amazon SNS Publish** from either the **Most Popular** or **Application Integration** category and drag onto the empty state.
-
-Set the parameters for the **SNS Publish** state as follows (leave the others with default values):
-
-* **State Name**: NotifyFailure
-* **Topic**: Search for the bootstrapped SNS topic containing the string **FareProcessing**. Copy the Topic ARN and keep to hand.
-
-Click on **Edit as JSON** under **API Parameters** and copy the following JSON replacing **arn placeholder** with the topic ARN you copied previously:
-
-{{< highlight json >}}
-{
- "Message.$": "$",
- "TopicArn": "<>",
- "MessageAttributes": {
- "IsSuccessful": {
- "DataType": "String",
- "StringValue": "false"
- }
- }
-}{{< /highlight >}}
-
-
-In the **Output** tab, ensure the **Add original input to output using ResultPath** is ticked and has the following values:
-
-* Combine original input with result
-* $.snsResult
-
-You should now have two execution flows within your State Machine, the original successful path and an additional path that is followed in the event of a failure when Registering a Fare that leads to an SNS Failure Notification.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-{{% notice note %}}
-Before you move on to the next step, can you predict a potential issue with the State machine and the two execution flows as it stands?
-{{% /notice %}}
-
-#### 3. Managing Execution State
-
-Whilst we send SNS notifications to distinguish whether our State machine completed successfully or failed, the Step Functions **execution status** will return successful for both a successful execution and for executions where an error at the **RegisterFare** state is caught (remember we are catching *all* errors). This is undesirable as we may want to track successful vs unsuccessful executions and we may also want to use the State machine execution status to determine follow on actions.
-
-Let's add a **Succeed and Fail state** to the end of each flow to appropriately denote the execution status.
-
-In the **Flow** menu in the left-hand pane, drag the **Success** Flow state in between the **NotifySuccess** and **End** states. Set the **StateName** to **FareProcessingSucceeded**.
-
-Repeat the process for the **Fail** Flow state and drag in between **NotifyFailure** and **End**. Set the **StateName** to **FareProcessingFailed**.
-
-{{% notice tip %}}
-The Success and Fail states are also useful for terminating a flow of execution early, perhaps as part of a **Choice** state branch where no further processing is necessary.
-{{% /notice %}}
-
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 4. ChargeFare Exception Handling
-
-Next, let's add a **Catcher** to the **ChargeFare** state.
-
-It is important to understand the errors that can potentially occur in your Lambda Function when defining a catcher.
-For AWS Lambda, there are [two types of error](https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html) that can occur: **Invocation errors** and **Function errors**.
-
-* Invocation errors occur when an invocation request is rejected before your Function receives it. This might occur because of a concurrency limit being reached, lack of permissions, or a malformed request event.
-
-* Function errors are further sub divided into those that your function code throws and those that can occur at the runtime level. Runtime errors are thrown by the Lambda Service and can occur when your function exceeds the configured timeout, detects a syntax error, fails to marshall a JSON response and so on.
-
-To determine the Function errors for **ChargeFare** we will look at the underlying Lambda function code. The easiest method is to examine the **ChargeFare** Lambda Function code directly through the Lambda console. Click on the **ChargeFare** state and then **View Function** in the **Configuration** tab.
-
-Notice in the **PaymentChargeFunction** code that underpins our **ChargeFare** state that we define two exceptions at the top:
-* PaymentAuthException - thrown when payment cannot be authorised.
-* PaymentChargeException - thrown when the payment cannot be charged.
-
-We will add a catcher to catch both of these exceptions. Back in the **Step Functions Workflow Studio**, Select the **ChargeFare** state and navigate to the **Error Handling** table and click **Add new Catcher**. Add the following values (add each error as a separate value excluding the commas):
-
-* **Errors**: PaymentAuthException, PaymentChargeException
-* **ResultPath**: $.chargeError
-
-For the **Fallback State**, let's take the opportunity to leave our system in a semantically correct state and rather than just sending a failure notification, we will add a new state to set the Fare status to failed. Select **Add new state** as the target for our new catcher and drag a **DynamoDB UpdateItem** action onto the new empty state.
-
-For the new **DynamoDB UpdateItem** action, add the following values:
-
-* **StateName**: SetFareStatusFailed
-* **API Parameters**:
- {{< highlight json >}}
-{
- "TableName": "FaresTable-wild-rydes-async-msg-4",
- "Key": {
- "fareId": {
- "S.$": "$.fareId"
- }
- },
- "UpdateExpression": "SET fareStatus = :s",
- "ExpressionAttributeValues": {
- ":s": {
- "S": "failed"
- }
- }
-}{{< /highlight >}}
-* **NextState**: **NotifyFailure**
-
-In the **Output** tab for the new **DynamoDB UpdateItem** action, ensure the **Add original input to output using ResultPath** is ticked and has the following values:
-
-* Combine original input with result
-* $.dynamodbResult
-
-You should now have a catcher defined for **ChargeFare** which falls back to the newly added **SetFareStatusFailed** state. Refer to the Detailed Description to verify your state machine.
-
-{{%expand "Detailed description" %}}
-
-
-{{% /expand%}}
-
-#### 5. CreditCustomerAccount Exception Handling
-
-Next let's add exception handling to the **CreditCustomerAccount** state.
-
-Take an opportunity to again look at the Lambda function code underpinning this state and the exceptions thrown by this code. You will notice that a single exception is thrown: **AccountCreditException**.
-
-In the **Step Functions Workflow Studio**, select the **CreditCustomerAccount** state and click on the **Error Handling** tab. Click **Add new catcher** and add the following values:
-
-* **Errors**: AccountCreditException
-* **Fallback state**: SetFareStatusFailed
-* **ResultPath**: $.creditError
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 6. Refund Customer Account
-
-After the last step, we are catching the **AccountCreditException** and then setting the fare status to failed followed by a failure notification. However, we have not dealt with the fact that we have charged the customer for the fare prior to this state and therefore in this exceptional execution case, we have potentially left our system in an inconsistent state.
-
-To resolve this, we need to rollback the ChargeFare transaction and we will do this by refunding the customer in the event of a **AccountCreditException**.
-
-In the **Step Functions Workflow Studio**, drag the **AWS Lambda Invoke** Action onto the State machine graph inbetween **CreditCustomerAccount** and **SetFareStatusFailed** over the top of the **Catch #1** label. Add the following values:
-
-* **StateName**: RefundFare
-* **Function Name**: Search for **PaymentRefundFunction**
-* **Next State**: SetFareStatusFailed (should be implicitly set)
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 7. Exception Handling Complete
-
-This completes this step in the lab. We have added exception handling, ensuring transactions are rolled back, notifications are sent and the status of the State machine execution matches the notification and fare status. Good work!
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-chargefare-catcher.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-chargefare-catcher.png
deleted file mode 100644
index 6cc377d..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-chargefare-catcher.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-credit-customer-account-catcher.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-credit-customer-account-catcher.png
deleted file mode 100644
index b634672..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-credit-customer-account-catcher.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-execution-states.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-execution-states.png
deleted file mode 100644
index 99aa002..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-execution-states.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-refund-fare.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-refund-fare.png
deleted file mode 100644
index cdf880d..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-refund-fare.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-register-fare-catcher.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-register-fare-catcher.png
deleted file mode 100644
index 7b90fb0..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-register-fare-catcher.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-set-fare-to-failed.png b/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-set-fare-to-failed.png
deleted file mode 100644
index 382a290..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-exception-handling/lab-4-set-fare-to-failed.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/add-retrying/add-retrying.md b/workshop/content/orchestration-and-coordination/add-retrying/add-retrying.md
deleted file mode 100644
index 9879e2b..0000000
--- a/workshop/content/orchestration-and-coordination/add-retrying/add-retrying.md
+++ /dev/null
@@ -1,40 +0,0 @@
-+++
-title = "Add Retrying"
-weight = 54
-pre = "5 "
-+++
-
-#### 1. Step Functions Retry
-
-In addition to **Catchers**, the **Task and Parallel** states can also define a **Retry** (also referred to as **Retriers**). A Retry can be used to define one or more retriers with each retrier representing a certain number of retries, usually with increasing time intervals.
-
-A Retrier has the following fields:
-* Errors - this determines the error names to match that triggers a retrier.
-* Interval - an integer that represents the number of seconds before the first retry attempt (1 by default).
-* Max Attempts - the maximum retry attempts (default: 3).
-* Backoff Rate - the multiplier by which the retry interval increases during each attempt (default: 2.0).
-
-### 2. RegisterFare Retry
-
-Let's add a Retrier to the **RegisterFare** state.
-
-When we looked at adding Catchers for our States that are backed by Lambda Functions, we examined the code and the Lambda service for potential exceptions that can occur. **RegisterFare** is a state which integrates directly with DynamoDB to add a Fare item. We can look at the errors that [DynamoDB throws](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html#Programming.Errors.Components) to determine what we need to match and how we should proceed in terms of retries.
-
-In this step, we will add a Retrier for the transient DynamoDB exceptions that have the potential to be successful when retried.
-
-Navigate to **Workflow Studio** and click on the **RegisterFare** state. Select the **Error Handling** tab and click on **Add new retrier**.
-
-Add the following values for the retrier (add each error as a separate value excluding the commas):
-
-* Errors: ProvisionedThroughputExceededException, RequestLimitExceeded, ServiceUnavailable, ThrottlingException
-* Interval: 1
-* Max attempts: 2
-* Backoff rate: 2
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-### 3. Repeat for Set Fare Status states
-
-Repeat the steps above to add retriers for the **SetFareStatusFailed** and **SetFareStatusCompleted** states which are also DynamoDB integrations.
\ No newline at end of file
diff --git a/workshop/content/orchestration-and-coordination/add-retrying/lab-4-register-fare-retrier.png b/workshop/content/orchestration-and-coordination/add-retrying/lab-4-register-fare-retrier.png
deleted file mode 100644
index c98f4dd..0000000
Binary files a/workshop/content/orchestration-and-coordination/add-retrying/lab-4-register-fare-retrier.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/bootstrap-initial-state.md b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/bootstrap-initial-state.md
deleted file mode 100644
index a1859d7..0000000
--- a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/bootstrap-initial-state.md
+++ /dev/null
@@ -1,52 +0,0 @@
-+++
-title = "Bootstrap the Initial State"
-weight = 50
-pre = "1 "
-+++
-
-### 1. Browse to your AWS Cloud9 IDE
-
-Browse to your [AWS Cloud9 Console](https://console.aws.amazon.com/cloud9/home) and select the environment called **WildRydesAsyncMessaging**.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-
-### 2. Build the lab artifacts from source
-
-We provide you with an [AWS SAM](https://aws.amazon.com/serverless/sam/) template which we will use to bootstrap the initial state. In the **bash tab** (at the bottom) in you AWS Cloud9 IDE, run the following commands to build the lab code:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-4
-sam build
-{{< /highlight >}}
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-
-### 3. Deploy the application
-
-Now we are ready to deploy the application, by running the following command in the **lab-4** directory:
-
-{{< highlight bash >}}
-export AWS_REGION=$(aws --profile default configure get region)
-sam deploy \
- --stack-name wild-rydes-async-msg-4 \
- --capabilities CAPABILITY_IAM \
- --region $AWS_REGION \
- --guided
-{{< /highlight >}}
-
-Confirm all proposed arguments by hitting **ENTER**.
-
-
-### 4. Wait until the stack is successfully deployed
-
-It takes usually 4 minutes until the stack launched. You can monitor the progress of the **wild-rydes-async-msg-4** stack in your [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation). When the stack is launched, the status will change from **CREATE_IN_PROGRESS** to **CREATE_COMPLETE**.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-1.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-1.png
deleted file mode 100644
index 6f50a8e..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-1.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-2.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-2.png
deleted file mode 100644
index b8f9dda..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-2.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-3.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-3.png
deleted file mode 100644
index cdef6e9..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-3.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-4.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-4.png
deleted file mode 100644
index fbee433..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-4.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-5.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-5.png
deleted file mode 100644
index 034d67b..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-5.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-6.png b/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-6.png
deleted file mode 100644
index 1d207e9..0000000
Binary files a/workshop/content/orchestration-and-coordination/bootstrap-initial-state/lab-4-step-6.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/build-guide/build-guide.md b/workshop/content/orchestration-and-coordination/build-guide/build-guide.md
deleted file mode 100644
index 5cf586b..0000000
--- a/workshop/content/orchestration-and-coordination/build-guide/build-guide.md
+++ /dev/null
@@ -1,57 +0,0 @@
-+++
-title = "Build Guide"
-weight = 51
-pre = "2 "
-+++
-
-The bootstrap script provisions the AWS resources required for the workflow, including the Lambda functions to execute transactions, Amazon DynamoDB table to store Fare items, and an Amazon SNS topic for notifications with Amazon SQS subscriptions for success and failures.
-
-The bootstrapping process also provisions two Step Functions State Machines:
-
-* `wild-rydes-async-msg-4-start-here` - A starting point for your state machine.
-
-* `wild-rydes-async-msg-4-completed` - A completed state machine to use as a reference if you get stuck.
-
-{{% notice tip %}}
-See the Output for the CloudFormation stack for ARN for the bootstrapped AWS resources. Alternatively, you can run the CloudFormation command below.
-{{% /notice %}}
-
-{{< highlight bash >}}
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-4 \
- --query 'Stacks[].Outputs'
-{{< /highlight >}}
-
-The primary task in this lab is to use **`wild-rydes-async-msg-4-start-here`** as the starting point to create a Saga workflow using **Step Functions Workflow Studio**.
-
-{{%expand "Completed State Machine Diagram" %}}
-The completed state machine should look like the following:
-
-{{% /expand%}}
-
-{{% notice note %}}
-Your task is to create a state machine that integrates these services and deals with any failures by providing compensating transactions that leave the system, and the simulated customer's bank account, in a semantically consistent state.
-{{% /notice %}}
-
-## AWS Step Functions Workflow Studio
-
-Workflow Studio for AWS Step Functions is a low-code visual workflow designer that enables you to create serverless workflows by orchestrating AWS services. You can use a drag and drop interface to create and edit workflows, control how input and output is filtered or transformed for each state, and configure error handling. As you create a workflow, Workflow Studio validates your work and auto-generates code. When you are finished, you can save your workflow, run it, then examine the results in the Step Functions console.
-
-Step Functions has optimized integrations with a number of AWS services and can also directly integrate with the AWS SDK. In addition to service integrations which form the basis for **Action** states, Step Functions supports **Flow** states that enable error handling, conditional branching and parallel operations.
-
-Here are some of the available flow states:
-
-* Choice: Adds if-then-else logic.
-* Parallel: Adds parallel branches.
-* Map: Adds a for-each loop.
-* Wait: Delays for a specific time.
-
- Consult the [Worflow Studio Documentation](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio-components.html) for further information and the video below provides a short, high-level overview of the main visual components of Workflow Studio.
-
-{{< youtube HfTucfkIwhs >}}
-
-The following sections in this lab provides a step-by-step guide to implementing a complete state machine using Workflow Studio for AWS Step Functions. You can choose to build the Saga state machine using the step-by-step guide or build the state machine yourself and use the guides in this lab to help align your state machine to the completed example.
-
-{{% notice note %}}
-Step Functions supports calling the AWS SDK directly which enables integration in a State Machine to over 200 AWS services. However for the purpose of this lab, we will only use the **optimized** action types.
-{{% /notice %}}
diff --git a/workshop/content/orchestration-and-coordination/build-guide/choose-workflow-designer.png b/workshop/content/orchestration-and-coordination/build-guide/choose-workflow-designer.png
deleted file mode 100644
index 8cc2be6..0000000
Binary files a/workshop/content/orchestration-and-coordination/build-guide/choose-workflow-designer.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine-2.png b/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine-2.png
deleted file mode 100644
index 2a60e5f..0000000
Binary files a/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine-2.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine.png b/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine.png
deleted file mode 100644
index 5265539..0000000
Binary files a/workshop/content/orchestration-and-coordination/build-guide/lab-4-statemachine.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/clean-up/clean-up-console.md b/workshop/content/orchestration-and-coordination/clean-up/clean-up-console.md
deleted file mode 100644
index 12370bd..0000000
--- a/workshop/content/orchestration-and-coordination/clean-up/clean-up-console.md
+++ /dev/null
@@ -1,16 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### Delete the Amazon S3 bucket
-
-In your **[Amazon S3 console](https://s3.console.aws.amazon.com/s3/home?#)**, filter for the **bucket** you have created to upload your code artifacts with AWS SAM, select the **bucket** and click the **Delete** button in the top.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-You are done!
diff --git a/workshop/content/orchestration-and-coordination/clean-up/clean-up-sam.md b/workshop/content/orchestration-and-coordination/clean-up/clean-up-sam.md
deleted file mode 100644
index 60eda30..0000000
--- a/workshop/content/orchestration-and-coordination/clean-up/clean-up-sam.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-
-#### Delete the Amazon S3 bucket
-
-In your Cloud9 IDE, run the following command to delete the Amazon S3 bucket we created earlier:
-
-{{< highlight bash >}}
-aws s3 rb s3://${BUCKET_NAME} —-force
-{{< /highlight >}}
-
-You are done!
diff --git a/workshop/content/orchestration-and-coordination/clean-up/clean-up.md b/workshop/content/orchestration-and-coordination/clean-up/clean-up.md
deleted file mode 100644
index 0234c27..0000000
--- a/workshop/content/orchestration-and-coordination/clean-up/clean-up.md
+++ /dev/null
@@ -1,27 +0,0 @@
-+++
-title = "Clean up"
-weight = 56
-pre = "7 "
-+++
-
-In this step, we will clean up all resources we created during the lab to prevent further cost.
-
-#### 1. Delete the AWS SAM template
-
-In your Cloud9 IDE, run the following command to delete the resources we created with our AWS SAM template:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-4
-sam delete --stack-name wild-rydes-async-msg-4
-{{< /highlight >}}
-
-Enter (Y)es for each confirmation of the resources that SAM will delete. This includes the resources created explicitly by the SAM template as well as the supporting resources that SAM uses, such as the resources S3 bucket.
-
-#### 2. Delete the AWS Lambda created Amazon CloudWatch Log Group
-
-Follow **[this deep link](https://console.aws.amazon.com/cloudwatch/home?#logs:prefix=/aws/lambda/wild-rydes)** to list the **Amazon CloudWatch Log Groups** with the name `/aws/lambda/wild-rydes`, AWS Lambda created during this lab. Select the Amazon CloudWatch Log Group and choose **Delete log group** from the **Actions** menu. Repeat for remaining Log Groups.
-
-{{%expand "Detailed description" %}}
-
-
-{{% /expand%}}
diff --git a/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1-console.png b/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1-console.png
deleted file mode 100644
index f04b02a..0000000
Binary files a/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1-console.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1.png b/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1.png
deleted file mode 100644
index 6ad2f94..0000000
Binary files a/workshop/content/orchestration-and-coordination/clean-up/lab-4-step-1.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/executing/executing.md b/workshop/content/orchestration-and-coordination/executing/executing.md
deleted file mode 100644
index 3b48caf..0000000
--- a/workshop/content/orchestration-and-coordination/executing/executing.md
+++ /dev/null
@@ -1,62 +0,0 @@
-+++
-title = "Executing and Testing"
-weight = 55
-pre = "6 "
-+++
-
-#### Executing the state machine
-
-To begin testing your application, open the state machine and click **Start execution**
-
-
-
-Copy and paste the fare payload into the Input field and click **Start Execution**. An execution will be successful if you invoke it with the following payload (you are free to update the values):
-
-{{< highlight json >}}
-{
- "customerId": "3",
- "fareId": "wr_563",
- "fareAmount": "$20.00",
- "cc": "2424 2424 2424 2424",
- "expiryDate": "12/22",
- "cvv": "111"
-}
-{{< /highlight >}}
-
-
-
-#### Testing failures
-
-You can easily force custom exceptions from the Lambda functions by appending one of the following suffixes to the `customerId`. For example, if you want to test to see if your state machine is handling pre-authentication failures for the ChargeFare state, simply append `_fail_auth` to the `customerId` like so...
-
-{{< highlight json >}}
-{
- "customerId": "3_fail_auth",
- "fareId": "wr_563",
- "fareAmount": "$20.00",
- "cc": "2424 2424 2424 2424",
- "expiryDate": "12/22",
- "cvv": "111"
-}
-{{< /highlight >}}
-
-| State | customerId Suffix | Exception
-| ------ | ----------- | ---------- |
-| ChargeFare | _fail_auth | PaymentAuthException|
-| ChargeFare | _fail_charge | PaymentChargeException |
-| CustomerAccountCredit | _fail_credit | AccountCreditException |
-
-
-Here are some examples of the execution path your state machine will have when errors are invoked, and what a successful execution path looks like.
-
-
-
-#### Examining Notifications
-
-You can examine success and failed notifications that are consumed from the SNS Topic by the respective SQS queues. Navigate to the [SQS Console](https://console.aws.amazon.com/sqs/) and look at **messages available**.
-
-
-
-You can also click on one the queues and then click on the **Send and Receive messages** to then Receive messages and examine the content and attributes for the notification messages sent by the State machine. Notice that these messages contain the JSON state we propagated from each state. We can easily transform this JSON in Step Functions using JSON Path if needed.
-
-
\ No newline at end of file
diff --git a/workshop/content/orchestration-and-coordination/executing/lab-4-failures.png b/workshop/content/orchestration-and-coordination/executing/lab-4-failures.png
deleted file mode 100644
index bdd89b9..0000000
Binary files a/workshop/content/orchestration-and-coordination/executing/lab-4-failures.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/executing/lab-4-new-execution.png b/workshop/content/orchestration-and-coordination/executing/lab-4-new-execution.png
deleted file mode 100644
index d0a6240..0000000
Binary files a/workshop/content/orchestration-and-coordination/executing/lab-4-new-execution.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queue-messages.png b/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queue-messages.png
deleted file mode 100644
index 1e888de..0000000
Binary files a/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queue-messages.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queues.png b/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queues.png
deleted file mode 100644
index 734b6d2..0000000
Binary files a/workshop/content/orchestration-and-coordination/executing/lab-4-sqs-queues.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/executing/lab-4-start-execution.png b/workshop/content/orchestration-and-coordination/executing/lab-4-start-execution.png
deleted file mode 100644
index 1d341c9..0000000
Binary files a/workshop/content/orchestration-and-coordination/executing/lab-4-start-execution.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/module-4.png b/workshop/content/orchestration-and-coordination/module-4.png
deleted file mode 100644
index 5820fee..0000000
Binary files a/workshop/content/orchestration-and-coordination/module-4.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/choose-workflow-designer.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/choose-workflow-designer.png
deleted file mode 100644
index 8cc2be6..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/choose-workflow-designer.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-apply-exit.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-apply-exit.png
deleted file mode 100644
index c4c6822..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-apply-exit.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-charge-fare.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-charge-fare.png
deleted file mode 100644
index 0f2fac4..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-charge-fare.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-fare-output.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-fare-output.png
deleted file mode 100644
index 7a153a1..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-fare-output.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-workflow-complete.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-workflow-complete.png
deleted file mode 100644
index 30b1d82..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-register-workflow-complete.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-registerfare-putitem-dynamodb.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-registerfare-putitem-dynamodb.png
deleted file mode 100644
index 1089ebd..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-registerfare-putitem-dynamodb.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-save-definition.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-save-definition.png
deleted file mode 100644
index 6198f89..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-save-definition.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-send-success-notification.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-send-success-notification.png
deleted file mode 100644
index 48696d9..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-send-success-notification.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-set-fare-status-completed.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-set-fare-status-completed.png
deleted file mode 100644
index a4323fc..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-set-fare-status-completed.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-snippet-gen.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-snippet-gen.png
deleted file mode 100644
index aec7a49..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-snippet-gen.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-edit.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-edit.png
deleted file mode 100644
index 775ee7d..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-edit.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-role-and-studio-edit.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-role-and-studio-edit.png
deleted file mode 100644
index 437c4dc..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/lab-4-step-functions-role-and-studio-edit.png and /dev/null differ
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/register-and-charge-fare.md b/workshop/content/orchestration-and-coordination/register-and-charge-fare/register-and-charge-fare.md
deleted file mode 100644
index 315e87b..0000000
--- a/workshop/content/orchestration-and-coordination/register-and-charge-fare/register-and-charge-fare.md
+++ /dev/null
@@ -1,200 +0,0 @@
-+++
-title = "Register and Charge Fare Workflow"
-weight = 52
-pre = "3 "
-+++
-
-
-
-In this section of the lab, we will familiarize ourselves with the Step Functions Workflow studio and define the main transactions in our workflow. We will first assume a **'happy path'** through our system and tackle failures and possible exception paths in the next part of the lab.
-
-#### 1. Browse to the Amazon Step Functions Console
-
-In the [Amazon Step Functions console](https://console.aws.amazon.com/states/), click on **State machines** in the left navigation pane, select the **`wild-rydes-async-msg-4-start-here`** state machine from the list and then click the **Edit** button.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Edit the State machine using Workflow Studio
-
-In the Step Functions Edit page, you will see the State Machine definition in the left pane and a diagram of the workflow on the right (see detailed description).
-
-A Step Functions State Machine is defined using the [Amazon States Language specification (ASL)](https://states-language.net/spec.html). You can see the ASL in the **Definition** pane for the State machine.
-
-{{% notice tip %}}
-Try the **Generate code snippet** dropdown in the AWS Step Function Editor in the [AWS Console](https://console.aws.amazon.com/states/home) for examples of how you can implement various states using the ASL.
-
-{{% /notice %}}
-
-In this lab we will use the Workflow Studio to create our workflow, but is important to remember that Workflow Studio will ultimately generate an underlying ASL specification for our State machine. You can view the complete generated ASL at any time by clicking on **Apply and Save** in Workflow studio and returning to the State machine Edit Definition screen.
-
-Ensure the bootstrapped IAM role is being used (wild-rydes-msg-4-WildRydesStateMachineStartR) and click on **Workflow Studio** to proceed to the next step (refer to the screenshot in the detailed description).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Step Functions Workflow Studio Interface
-
-The Workflow studio is composed of three main visual components:
-* The left menu pane which enables Actions and Flow states to be dragged onto the State machine.
-* A graph representation of the state machine in the centre which shows the states inbetween Start and End, and how they are connected.
-* A Worflow menu pane on the right-hand side that enables the properties of each state to be edited.
-
-{{% notice tip %}}
-You can toggle between the **Form** and **Definition** views for the pane on the right-hand side of Workflow studio to toggle between a form view of the current selected state and the ASL definition. This is useful if you need to quickly generate an ASL snippet to copy into an existing State machine specification.
-{{% /notice %}}
-
-#### 4. Add RegisterFare state
-
-Click on the **RegisterFare** which is a Pass state and should be the only state in the starter State machine. A Pass state is a useful state to have in a State machine as a placeholder and for debugging state machines as its simply passes its input to its output. The input can be filtered or transformed or a mock output result can be added as necessary to test your state machine. Step Functions enables data to be transferred and transformed between states using JSON and JSON Path syntax. This is an important and powerful concept when developing State machines, refer to [this page in the Step Functions documentation](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-input-output-filtering.html) for more information.
-
-In the first state, we will replace the **RegisterFare** Pass State with a DynamoDB Put:Item state to add an item into the Fares Item DynamoDB table to register a new fare.
-
-{{% notice note %}}
-All the steps in this lab will assume that the **Form** menu is active in Workflow Studio when selecting states such that the Configuration, Input and Output submenus can be accessed.
-{{% /notice %}}
-
-In the **Actions** menu in the left-hand pane, select **DynamoDB** from the **Database** category and drag the **PutItem** action onto the workflow graph either before or after the existing Pass State.
-
-Click on the **RegisterFare** Pass State and click on **Delete state** from the Configuration menu. You can also right-click on the state in the graph to delete or duplicate the state.
-
-Click on the newly added **PutItem** state and enter the following for the **Configuration**:
-
-* **State Name**: RegisterFare
-* **API Parameters**:
- {{< highlight json >}}
-{
- "TableName": "FaresTable-wild-rydes-async-msg-4",
- "Item.$": "$"
-}
- {{< /highlight >}}
-
-This targets the bootstrapped Fares table and adds an item using the entire input JSON payload by referencing $ for the item field.
-
-We need to make sure that the original JSON input is combined with the output from this state and passed on to the next state. In the **Output** tab, ensure the **Add original input to output using ResultPath** is ticked and has the following values:
-
-* Combine original input with result
-* $.dynamodbResult
-
-{{%expand "Detailed description" %}}
-
-
-{{% /expand%}}
-
-#### 5. Charge Fare
-
-Now that we have registered the fare in the system by adding it to the Fares DynamoDB table, we should attempt to charge the fare via a simulated payment system.
-
-In the **Actions** menu, select **AWS Lambda Invoke** and drag it onto the state machine graph **after RegisterFare**. The **AWS Lambda Invoke** state can be found in the **Actions** menu either in the **Most Popular** section or in the **Compute** section.
-
-Enter the following **Configuration**:
-
-* **State Name**: **ChargeFare**
-* **Function Name**: search for **ChargeFare** and select the bootstrapped ChargeFare lambda function.
-
-Leave the other parameters with default values and ensure the Integration type is set to **Optimized** for this and all Lambda invokes in this State machine.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 6. Credit Customer Account
-
-Let's assume for now that payment has been successfully authorised by the payment system and we can move to the next stage, which is to credit the customer's account.
-
-In the **Actions** menu, select **AWS Lambda Invoke** and drag it onto the state machine graph **after ChargeFare**.
-
-Set the following **Configuration**:
-* **State Name**: **CreditCustomerAccount**
-* **Function name**: search for and select the bootstrapped **Account Credit** lambda function
-
-Leave the other parameters with default values.
-
-#### 7. Set Fare Status to Completed
-
-Assuming a successful path through the workflow, we have now completed the fare payment and subsequent credit to the customer account, so let's update the status to completed for the Fare in the DynamoDB table.
-
-Navigate to the DynamoDB section within the Database of the Actions menu and select **DynamoDB:UpdateItem**. Drag this action **after the CreditCustomerAccount state** and add the following for the Configuration.
-
-* **State Name**: SetFareStatusCompleted
-
- {{< highlight json >}}
-{
- "TableName": "FaresTable-wild-rydes-async-msg-4",
- "Key": {
- "fareId": {
- "S.$": "$.fareId"
- }
- },
- "UpdateExpression": "SET fareStatus = :s",
- "ExpressionAttributeValues": {
- ":s": {
- "S": "completed"
- }
- }
-}
- {{< /highlight >}}
-
-Finally, we need to make sure that the original JSON input is combined with the output and passed on to the next state. In the **Output** tab, ensure the **Add original input to output using ResultPath** is ticked and has the following values:
-
-* Combine original input with result
-* $.dynamodbResult
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 8. Send Success SNS Notification
-
-Finally, let's send a successful notification message onto our SNS Topic to mark the completion of this State machine and potentially notify any interested consumers. These consumers could use any notifications from our State to complete appropriate follow on activities.
-
-In the **Actions** menu, select **Amazon SNS Publish** from either the **Most Popular** or **Application Integration** category and drag in between **SetFareStatusCompleted** and **End**. Set the parameters to the following:
-
-* **State Name**: NotifySuccess
-* **Topic**: Search for and select the bootstrapped **FareProcessing** topic.
-
-In the **Output** tab, ensure the **Add original input to output using ResultPath** is ticked and has the following values:
-
-* Combine original input with result
-* $.snsResult
-
-The SNS notifications are sent to a single SNS topic that has two SQS Queue consumers for successful and failed notifications respectively.
-
-**Before you continue on, can you work out how these notification messages are routed to the appropriate SQS queue? Hint: Start in the [SNS Console](https://console.aws.amazon.com/sns/v3/)**.
-
-The answer is that we have to add message attributes to our notifications to enable the appropriate SQS queue to consume the message based on the filter policies we have set.
-
-In the **Configuration** tab for the **NotifySuccess** state, copy the topic ARN and keep to hand. Click on **Edit as JSON** under **API Parameters** and copy the following JSON replacing **arn placeholder** with the topic ARN you copied previously:
-
-{{< highlight json >}}
-{
- "Message.$": "$",
- "TopicArn": "<>",
- "MessageAttributes": {
- "IsSuccessful": {
- "DataType": "String",
- "StringValue": "true"
- }
- }
-}{{< /highlight >}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-#### 9. Initial Register and Charge Fare Workflow Complete
-
-This completes our initial workflow and this part of the lab. At this stage, you should have a workflow that registers and charges a fare, credits a customer account and finally sets the fare status to completed. This adds all the transactions from the overview at the start of this lab.
-
-Refer to the Detailed Description below for a graph of the workflow you should have at this stage.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-{{% notice note %}}
-Don't forget to click **Apply and exit** in Workflow Studio followed by **Save** on the Edit screen before you leave the console or your changes will be lost. It's a two stage process because we are using Workflow Studio to generate and apply an ASL definition which we then must save for the State Machine.
-
-{{% /notice %}}
\ No newline at end of file
diff --git a/workshop/content/orchestration-and-coordination/register-and-charge-fare/step-functions-console.png b/workshop/content/orchestration-and-coordination/register-and-charge-fare/step-functions-console.png
deleted file mode 100644
index ed16fa1..0000000
Binary files a/workshop/content/orchestration-and-coordination/register-and-charge-fare/step-functions-console.png and /dev/null differ
diff --git a/workshop/content/prerequisites/_index.md b/workshop/content/prerequisites/_index.md
deleted file mode 100644
index 0027797..0000000
--- a/workshop/content/prerequisites/_index.md
+++ /dev/null
@@ -1,15 +0,0 @@
-+++
-title = "Workshop Prerequisites"
-weight = 10
-pre = ""
-+++
-
-{{% notice info %}}
-**Running the workshop in your own AWS account**
-If you want to run this workshop in your own AWS account (outside of events such as re:Invent,
-Loft, Immersion Day, or any other event hosted by an AWS employee), please start at [Bootstrap AWS Cloud9](prerequisites/prerequisites-1.html).
-{{% /notice %}}
-
-You can use the **orange arrowheads** on the left and right of the main frame to navigate between the chapters, or the navigation bar in the left frame.
-
-Before we can start, we have to make sure our environment is up and running and current. Just click the **orange arrowheads** on the right to get started.
diff --git a/workshop/content/prerequisites/prerequisites-1/_index.md b/workshop/content/prerequisites/prerequisites-1/_index.md
deleted file mode 100644
index 07267a0..0000000
--- a/workshop/content/prerequisites/prerequisites-1/_index.md
+++ /dev/null
@@ -1,50 +0,0 @@
-+++
-title = "Bootstrap AWS Cloud9"
-weight = 11
-pre = ""
-hidden = false
-+++
-
-
-{{% notice warning %}}
-**Running the workshop at an AWS Event**
-If you are running this workshop at an AWS hosted event, such as re:Invent,
-Loft, Immersion Day, or any other event hosted by an AWS employee, you skip this section, as the AWS Cloud9 IDE is already created for you. You can go straight to the next step and configure AWS Cloud9 by clicking the **orange arrowheads** on the right!
-{{% /notice %}}
-
-We will leverage **[AWS CloudFormation](https://aws.amazon.com/cloudformation/)** which allows us to codify our infrastructure. In addition, we use **[AWS SAM](https://aws.amazon.com/serverless/sam/)** to build serverless applications in simple and clean syntax.
-
-### 1. Create the AWS CloudFormation stack in your closest region
-
-{{% notice note %}}
-The Cloud9 workspace should be built by an IAM user with Administrator privileges,
-not the root account user. Please ensure you are logged in as an IAM user, not the root
-account user.
-{{% /notice %}}
-
-{{< tabs name="Region" >}}
-{{< tab name="Frankfurt" include="eu-central-1" />}}
-{{< tab name="Ireland" include="eu-west-1" />}}
-{{< tab name="Oregon" include="us-west-2" />}}
-{{< tab name="Ohio" include="us-east-2" />}}
-{{< tab name="Singapore" include="ap-southeast-1" />}}
-{{< tab name="Sydney" include="ap-southeast-2" />}}
-{{< /tabs >}}
-
-
-### 2. Launch the AWS CloudFormation stack
-
-Just click the **Create Stack** button to launch the template.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-### 3. Wait until the AWS CloudFormation stack launched
-
-It takes usually less than 2 minutes until the stack launched. When the stack is launched, the status will change from **CREATE_IN_PROGRESS** to **CREATE_COMPLETE**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/prerequisites/prerequisites-1/ap-southeast-1.md b/workshop/content/prerequisites/prerequisites-1/ap-southeast-1.md
deleted file mode 100644
index bae6a89..0000000
--- a/workshop/content/prerequisites/prerequisites-1/ap-southeast-1.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Singapore"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Singapore, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Singapore |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "ap-southeast-1" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-1/ap-southeast-2.md b/workshop/content/prerequisites/prerequisites-1/ap-southeast-2.md
deleted file mode 100644
index 97bc08a..0000000
--- a/workshop/content/prerequisites/prerequisites-1/ap-southeast-2.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Sydney"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Sydney, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Sydney |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "ap-southeast-2" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-1/eu-central-1.md b/workshop/content/prerequisites/prerequisites-1/eu-central-1.md
deleted file mode 100644
index 5b9f482..0000000
--- a/workshop/content/prerequisites/prerequisites-1/eu-central-1.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Ireland"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Frankfurt, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Frankfurt |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "eu-central-1" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-1/eu-west-1.md b/workshop/content/prerequisites/prerequisites-1/eu-west-1.md
deleted file mode 100644
index d241a08..0000000
--- a/workshop/content/prerequisites/prerequisites-1/eu-west-1.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Ireland"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Ireland, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Ireland |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "eu-west-1" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-1/step-1.png b/workshop/content/prerequisites/prerequisites-1/step-1.png
deleted file mode 100644
index 01ed332..0000000
Binary files a/workshop/content/prerequisites/prerequisites-1/step-1.png and /dev/null differ
diff --git a/workshop/content/prerequisites/prerequisites-1/step-2.png b/workshop/content/prerequisites/prerequisites-1/step-2.png
deleted file mode 100644
index 28466cb..0000000
Binary files a/workshop/content/prerequisites/prerequisites-1/step-2.png and /dev/null differ
diff --git a/workshop/content/prerequisites/prerequisites-1/us-east-2.md b/workshop/content/prerequisites/prerequisites-1/us-east-2.md
deleted file mode 100644
index 283192e..0000000
--- a/workshop/content/prerequisites/prerequisites-1/us-east-2.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Ohio"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Ohio, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Ohio |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "us-east-2" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-1/us-west-2.md b/workshop/content/prerequisites/prerequisites-1/us-west-2.md
deleted file mode 100644
index 4458bfb..0000000
--- a/workshop/content/prerequisites/prerequisites-1/us-west-2.md
+++ /dev/null
@@ -1,13 +0,0 @@
-+++
-title = "Oregon"
-
-disableToc = true
-hidden = true
-+++
-
-Create your AWS Cloud9 Environment by launching this CloudFormation template in Oregon, with clicking on the below **Launch** button.
-
-
-| AWS CloudFormation launch template | Launch in Oregon |
-| ------ |:------|
-| AWS Cloud9 IDE | {{% cf-launch "wild-rydes-async-msg-0" "us-west-2" "ee-assets-prod-us-east-1/modules/32af13c099e8423b8edb09255cec1b9f/v4/template.yaml" %}} |
diff --git a/workshop/content/prerequisites/prerequisites-2/magic.gif b/workshop/content/prerequisites/prerequisites-2/magic.gif
deleted file mode 100644
index 235c4ed..0000000
Binary files a/workshop/content/prerequisites/prerequisites-2/magic.gif and /dev/null differ
diff --git a/workshop/content/prerequisites/prerequisites-2/prerequisites-2.md b/workshop/content/prerequisites/prerequisites-2/prerequisites-2.md
deleted file mode 100644
index 3edb9e9..0000000
--- a/workshop/content/prerequisites/prerequisites-2/prerequisites-2.md
+++ /dev/null
@@ -1,39 +0,0 @@
-+++
-title = "Configure AWS Cloud9"
-weight = 12
-pre = ""
-+++
-
-{{% notice note %}}
-Ad blockers, javascript disabler, and tracking blockers should be disabled for
-the cloud9 domain, or connecting to the workspace might be impacted.
-Cloud9 requires third-party-cookies. You can whitelist the [specific domains]( https://docs.aws.amazon.com/cloud9/latest/user-guide/troubleshooting.html#troubleshooting-env-loading).
-{{% /notice %}}
-
-### 1. Browse to your AWS Cloud9 development environment
-
-Open your [CloudFormation Console](https://console.aws.amazon.com/cloudformation/home?#/stacks) and select the stack with the description ”Wild Rydes Asynchronous Messaging Workshop“ (the name could vary). The `Outputs` tab exposes the `Cloud9DevEnvUrl` parameter. Click at the corresponding URL in the value column and open your AWS Cloud9 development environment in a new tab.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-### 2. Configure your AWS Cloud9 development environment
-
-In your AWS Cloud9 IDE, you can close the welcome tab. In the left environment navigation window, you can see the project **wild-rydes-async-messaging** we have already checked out for you from Github. This project also contains a shell script to setup your environment. Run the following command in the **bash** tab (at the bottom of the IDE):
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/code/lab-0
-chmod +x configureCloud9.sh
-./configureCloud9.sh
-{{< /highlight >}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-It takes usually less then 1 minute, until the AWS Cloud9 IDE is updated. In the meantime while your waiting, you may want to have a look at some handy AWS Cloud9 shortcuts, like the **[multiple cursors](https://docs.c9.io/docs/multiple-cursors)** or the AWS Cloud9 **[keybindings](https://docs.c9.io/docs/keybindings)**.
-
-
-
-**You are now ready to get started!!!**
diff --git a/workshop/content/prerequisites/prerequisites-2/step-1.png b/workshop/content/prerequisites/prerequisites-2/step-1.png
deleted file mode 100644
index fffcb38..0000000
Binary files a/workshop/content/prerequisites/prerequisites-2/step-1.png and /dev/null differ
diff --git a/workshop/content/prerequisites/prerequisites-2/step-2.png b/workshop/content/prerequisites/prerequisites-2/step-2.png
deleted file mode 100644
index e6103cb..0000000
Binary files a/workshop/content/prerequisites/prerequisites-2/step-2.png and /dev/null differ
diff --git a/workshop/content/resources/ARC314.decoupled-microservices-building-scalable-applications.srr-final-presentation.pdf b/workshop/content/resources/ARC314.decoupled-microservices-building-scalable-applications.srr-final-presentation.pdf
deleted file mode 100644
index 62a3250..0000000
Binary files a/workshop/content/resources/ARC314.decoupled-microservices-building-scalable-applications.srr-final-presentation.pdf and /dev/null differ
diff --git a/workshop/content/resources/_index.md b/workshop/content/resources/_index.md
deleted file mode 100644
index f6c2101..0000000
--- a/workshop/content/resources/_index.md
+++ /dev/null
@@ -1,26 +0,0 @@
-+++
-title = "Resources"
-weight = 70
-pre = ""
-+++
-
-## Congratulations!
-
-You've successfully completed the Decoupled Microservices Workshop!
-
-### Presentation
-
-[](resources/ARC314.decoupled-microservices-building-scalable-applications.srr-final-presentation.pdf)
-
-### General Messaging Resources
-
-* [AWS Messaging Site](https://aws.amazon.com/messaging/)
-* [AWS Messaging Related Blog Posts](https://aws.amazon.com/blogs/compute/tag/messaging/)
-
-#### Orchestration and Coordination
-
-* [AWS Step Functions](https://aws.amazon.com/step-functions/)
-* [AWS Step Functions Developer Guide](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)
-* [AWS Step Function Tutorials](https://docs.aws.amazon.com/step-functions/latest/dg/tutorials.html)
-* [statelint](https://github.com/awslabs/statelint)
-* [Amazon States Language](https://states-language.net/spec.html)
diff --git a/workshop/content/resources/presentation.png b/workshop/content/resources/presentation.png
deleted file mode 100644
index 2b2119f..0000000
Binary files a/workshop/content/resources/presentation.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/_index.md b/workshop/content/scatter-gather/_index.md
deleted file mode 100644
index 9adfc6a..0000000
--- a/workshop/content/scatter-gather/_index.md
+++ /dev/null
@@ -1,34 +0,0 @@
-+++
-title = "Scatter-Gather"
-weight = 40
-pre = "Lab-3: "
-+++
-
-{{% notice info %}}
-Make sure you executed the **[Workshop Prerequisites](/prerequisites.html)** first, before you start with this lab!
-{{% /notice %}}
-
-As Wild Rydes business has grown in its popularity, it has opened its platform for various unicorn providers to partner with Wild Rydes. Customers of Wild Rydes app will be able to submit a request for a ride from their mobile app. Behind the scenes, Wild Rydes service will talk to multiple service providers who will submit quotes for the customer. The platform will receive all the responses and stage it in a database. The app will then periodically poll for the response quotes using a REST API and present them to the customer. The end user app will keep updating the dashboard of the quotes as new providers keep sending the response. In this architecture queues provide a loose coupling between the producer and consumer systems. In the absence of queues, the client systems would need to know the API endpoints for each of the server systems. It will need to be stored in a central database for any type of changes. It gets further complicated as additional instances are added or removed. In addition to it, client systems will need to implement failure and retry logic in their code. Queues help alleviate lot of such issues by decoupling the systems and providing a store and forward mechanism.
-
-
-The service can be enhanced further to notify customers once all the service providers have responded or have exceeded the time for them to respond.
-
-
-
-## Lab Objectives
-
-In this lab, you will acquire the following skills:
-
-+ **How to implement a scatter pattern by sending messages through multiple channels?**
-+ **How to implement a request response flow in asynchronous manner?**
-+ **How to stage responses from multiple sources?**
-+ **How to create a gather pattern by querying responses based on a request id?**
-
-
-{{% notice tip %}}
-**Lab source code**
-If you are curious and would like to dive into the lab's source code, you are more than welcome to do so. You will find the source code of this lab in our Github repo **[here](https://github.com/aws-samples/asynchronous-messaging-workshop/tree/master/code/lab-3)**.
-{{% /notice %}}
-
-
-
diff --git a/workshop/content/scatter-gather/bootstrap-initial-state.files/template.yaml b/workshop/content/scatter-gather/bootstrap-initial-state.files/template.yaml
deleted file mode 100644
index 34b26b3..0000000
--- a/workshop/content/scatter-gather/bootstrap-initial-state.files/template.yaml
+++ /dev/null
@@ -1,321 +0,0 @@
-AWSTemplateFormatVersion: '2010-09-09'
-Transform: AWS::Serverless-2016-10-31
-Description: >
- re:invent2019 ARC314-R Lab-3
-
- Sample SAM Template for re:invent2019 ARC314-R Lab-3
-
-# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
-Globals:
- Function:
- Timeout: 70
-
-Resources:
- RequestForQuotesService:
- Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
- Properties:
- CodeUri: request-for-quotes-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- TABLE_NAME: !Ref RidesBookingTable
- TOPIC_ARN: !Ref RequestForQuotesTopic
- Policies:
- - DynamoDBCrudPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TableName:
- !Ref RidesBookingTable
- - SNSPublishMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TopicName:
- !GetAtt RequestForQuotesTopic.TopicName
- Events:
- RideBooking:
- Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
- Properties:
- Path: /submit-instant-ride-rfq
- Method: post
-
- QueryForQuotesService:
- Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
- Properties:
- CodeUri: query-for-quotes-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- TABLE_NAME: !Ref RidesBookingTable
- TOPIC_ARN: !Ref RequestForQuotesTopic
- Policies:
- - DynamoDBCrudPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TableName:
- !Ref RidesBookingTable
- - SNSPublishMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TopicName:
- !GetAtt RequestForQuotesTopic.TopicName
- Events:
- RideBooking:
- Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
- Properties:
- Path: /query-instant-ride-rfq/{id}
- Method: get
-
- RidesBookingTable:
- Type: AWS::DynamoDB::Table
- Properties:
- TableName: RidesBookingTable
- AttributeDefinitions:
- - AttributeName: id
- AttributeType: S
- - AttributeName: responder
- AttributeType: S
- KeySchema:
- - AttributeName: id
- KeyType: HASH
- - AttributeName: responder
- KeyType: RANGE
- BillingMode: PAY_PER_REQUEST
-
- RequestForQuotesTopic:
- Type: AWS::SNS::Topic
- Properties:
- TopicName: request-for-quotes-topic
-
- RequestForQuotesResponseQueue:
- Type: AWS::SQS::Queue
- Properties:
- QueueName: RequestForQuotesResponseQueue
- VisibilityTimeout: 120
-
- UnicornManagementResource1:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource1
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource2:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource2
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource3:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource3
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource4:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource4
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource5:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource5
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource6:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource6
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource7:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource7
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource8:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource8
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource9:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource9
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- UnicornManagementResource10:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- SERVICE_NAME: UnicornManagementResource10
- QUEUE_URL: !Ref RequestForQuotesResponseQueue
- Policies:
- - SQSSendMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- QueueName:
- !GetAtt RequestForQuotesResponseQueue.QueueName
- Events:
- SqsJobQueue:
- Type: SNS
- Properties:
- Topic: !Ref RequestForQuotesTopic
-
- QuotesResponseService:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: quotes-response-service/
- Handler: app.lambda_handler
- Runtime: python3.7
- Environment:
- Variables:
- TABLE_NAME: !Ref RidesBookingTable
- Policies:
- - DynamoDBCrudPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TableName:
- !Ref RidesBookingTable
- Events:
- SQSQueue:
- Type: SQS
- Properties:
- Queue: !GetAtt RequestForQuotesResponseQueue.Arn
- BatchSize: 1
-
-Outputs:
- RideBookingApiSubmitInstantRideRfqEndpoint:
- Description: "API Gateway endpoint URL for Prod stage for RideBookingService submit-instant-ride-rfq resource"
- Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/submit-instant-ride-rfq/"
- RideBookingApiQueryInstantRideRfqEndpoint:
- Description: "API Gateway endpoint URL for Prod stage for RideBookingService query-instant-ride-rfq resource"
- Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/query-instant-ride-rfq/{id}"
-# RideBookingService:
-# Description: "RideBookingService Lambda Function ARN"
-# Value: !GetAtt RideBookingService.Arn
- RequestForQuotesTopic:
- Description: "Amazon SNS topic ARN for RequestForQuotes topic"
- Value: !Ref RequestForQuotesTopic
\ No newline at end of file
diff --git a/workshop/content/scatter-gather/bootstrap-initial-state.md b/workshop/content/scatter-gather/bootstrap-initial-state.md
deleted file mode 100644
index b69f93c..0000000
--- a/workshop/content/scatter-gather/bootstrap-initial-state.md
+++ /dev/null
@@ -1,61 +0,0 @@
-+++
-title = "Bootstrap the Initial State"
-weight = 41
-pre = "1 "
-+++
-
-First, we will build the AWS Serverless Application Model (AWS SAM) deployment template to create the deployment package for the Python functions. AWS SAM is an open-source framework that you can use to build serverless applications on AWS. It will also generate deployment artifacts that target AWS Lambda's execution environment. It also helps with creating artifacts needed for running the tests using sam local.
-
-The inputs and outputs from the service are shown in the picture below. The overall deployment comprises of deploying API endpoints using Amazon API Gateway to send the RFQ (request for quote) and get the response for the RFQ, AWS Lambda functions to process the request for quotes from end user and response for the quotes from service providers, Amazon DynamoDB to stage the response quotes and SQS queues to act as the message destination for request and responses.
-
-
-
-### 1. Browse to your AWS Cloud9 IDE
-
-Browse to your [AWS Cloud9 Console](https://console.aws.amazon.com/cloud9/home) and select the environment called **WildRydesAsyncMessaging**. Open the IDE and go to the terminal window in lower right pane.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-### 2. Build the lab artifacts from source
-
-We provide you with an [AWS SAM](https://aws.amazon.com/serverless/sam/) template which we will use to bootstrap the initial state. In the **bash tab** (at the bottom) in you AWS Cloud9 IDE, run the following commands to build the lab code:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-3
-sam build
-{{< /highlight >}}
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-### 3. Deploy the application
-
-Now we are ready to deploy the application, by running the following command in the **lab-3** directory:
-
-{{< highlight bash >}}
-sam deploy --guided --stack-name wild-rydes-async-msg-3 --capabilities CAPABILITY_IAM
-{{< /highlight >}}
-
-Confirm all proposed arguments by hitting **ENTER**. You will be asked to confirm whether or not you want to proceed without authorisation for two services. Enter **y** for these and continue with the default arguments.
-
-{{< highlight bash >}}
-RequestForQuotesService may not have authorization defined, Is this okay? [y/N]: y
-QueryForQuotesService may not have authorization defined, Is this okay? [y/N]: y
-{{< /highlight >}}
-
-The application comprises of API Gateway endpoints and lambda functions which provide the ability to send request for quotes and query the responses. Service providers are subscribed to a SNS topic which is used to publish the request for quote. On receiving the RFQ message, service providers send their response for quotes in a queue. The queue triggers a lambda functions which loads the responses in a DynamoDB table. The response for quotes service queries all the responses based on request id. In a real world scenario, the service providers may respond at different times as a result client applications may need to consolidate their responses by polling responses multiple times.
-
-### 4. Wait until the stack is successfully deployed
-
-It usually takes less than 5 minutes until the stack launched. You can monitor the progress of the **wild-rydes-async-msg-3** stack in your [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation). When the stack is launched, the status will change from **CREATE_IN_PROGRESS** to **CREATE_COMPLETE**.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content. Once complete, you can also look at the lambda functions that will request the quotes and process responses. The created queues can also be explored from the console.
-
-{{%attachments title="Related files" pattern=".*(yaml)"/%}}
diff --git a/workshop/content/scatter-gather/cleanup/clean-up-console.md b/workshop/content/scatter-gather/cleanup/clean-up-console.md
deleted file mode 100644
index 5b3d7b3..0000000
--- a/workshop/content/scatter-gather/cleanup/clean-up-console.md
+++ /dev/null
@@ -1,19 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 3. Delete the Amazon S3 bucket
-
-In your **[Amazon S3 console](https://s3.console.aws.amazon.com/s3/home?#)**, filter for the **bucket** you have created to upload your code artifacts with AWS SAM, select the **bucket** and click the **Delete** button in the top.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-
-You are done!
-
diff --git a/workshop/content/scatter-gather/cleanup/clean-up-sam.md b/workshop/content/scatter-gather/cleanup/clean-up-sam.md
deleted file mode 100644
index 8cd7015..0000000
--- a/workshop/content/scatter-gather/cleanup/clean-up-sam.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-
-#### 3. Delete the Amazon S3 bucket
-
-In your Cloud9 IDE, run the following command to delete the Amazon S3 bucket we created earlier:
-
-{{< highlight bash >}}
-aws s3 rb s3://${BUCKET_NAME} —-force
-{{< /highlight >}}
-
-You are done!
diff --git a/workshop/content/scatter-gather/cleanup/clean-up.md b/workshop/content/scatter-gather/cleanup/clean-up.md
deleted file mode 100644
index a16e52d..0000000
--- a/workshop/content/scatter-gather/cleanup/clean-up.md
+++ /dev/null
@@ -1,41 +0,0 @@
-+++
-title = "Cleanup"
-weight = 43
-pre = "3 "
-+++
-
-
-In this step, we will clean up all resources, we created during this lab, so that no further cost will occur.
-
-#### 1. Delete the AWS SAM template
-
-In your Cloud9 IDE, run the following command to delete the resources we created with our AWS SAM template:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-3
-aws cloudformation delete-stack \
- --stack-name wild-rydes-async-msg-3
-
-{{< /highlight >}}
-
-
-#### 2. Delete the AWS Lambda created Amazon CloudWatch Log Group
-
-Run the following command to delete all the log groups associated with the labs.
-
-```
-aws logs describe-log-groups --query 'logGroups[*].logGroupName' --output table | awk '{print $2}' | \
- grep ^/aws/lambda/wild-ryde | while read x; \
- do echo "deleting $x" ; aws logs delete-log-group --log-group-name $x; \
-done
-```
-
-#### 3. Delete S3 bucket used to upload code package
-You can delete the S3 bucket by going to the console or using the CLI. Please follow one of the options below to delete the bucket.
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="clean-up-console" />}}
-{{< tab name="SAM" include="clean-up-sam" />}}
-{{< /tabs >}}
-
-
diff --git a/workshop/content/scatter-gather/cleanup/step-1-console.png b/workshop/content/scatter-gather/cleanup/step-1-console.png
deleted file mode 100644
index f04b02a..0000000
Binary files a/workshop/content/scatter-gather/cleanup/step-1-console.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/cleanup/step-1.png b/workshop/content/scatter-gather/cleanup/step-1.png
deleted file mode 100644
index d2690fa..0000000
Binary files a/workshop/content/scatter-gather/cleanup/step-1.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-1.png b/workshop/content/scatter-gather/lab-3-step-1.png
deleted file mode 100644
index 3e662f8..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-1.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-2.png b/workshop/content/scatter-gather/lab-3-step-2.png
deleted file mode 100644
index 6f50a8e..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-2.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-2a.png b/workshop/content/scatter-gather/lab-3-step-2a.png
deleted file mode 100644
index f45535c..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-2a.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-4.png b/workshop/content/scatter-gather/lab-3-step-4.png
deleted file mode 100644
index 8b05a25..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-4.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-5.png b/workshop/content/scatter-gather/lab-3-step-5.png
deleted file mode 100644
index 0b793e6..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-5.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-6.png b/workshop/content/scatter-gather/lab-3-step-6.png
deleted file mode 100644
index f1dffac..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-6.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-7.png b/workshop/content/scatter-gather/lab-3-step-7.png
deleted file mode 100644
index a277694..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-7.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-8.png b/workshop/content/scatter-gather/lab-3-step-8.png
deleted file mode 100644
index c0746ae..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-8.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/lab-3-step-9.png b/workshop/content/scatter-gather/lab-3-step-9.png
deleted file mode 100644
index 0e42636..0000000
Binary files a/workshop/content/scatter-gather/lab-3-step-9.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/module-3.png b/workshop/content/scatter-gather/module-3.png
deleted file mode 100644
index 3e662f8..0000000
Binary files a/workshop/content/scatter-gather/module-3.png and /dev/null differ
diff --git a/workshop/content/scatter-gather/test-scatter-and-gather.md b/workshop/content/scatter-gather/test-scatter-and-gather.md
deleted file mode 100644
index 7114d59..0000000
--- a/workshop/content/scatter-gather/test-scatter-and-gather.md
+++ /dev/null
@@ -1,108 +0,0 @@
-+++
-title = "Test Scatter-Gather"
-weight = 42
-pre = "2 "
-+++
-
-### 1. Get API Gateway endpoint to send request for quotes
-The lab 3 SAM template created two separate API gateway endpoints. They will be shown under the outputs tab of the cloudformation stack once deployment is completed. **RideBookingApiSubmitInstantRideRfqEndpoint** is the API endpoint to submit request for quotes and **RideBookingApiQueryInstantRideRfqEndpoint** is used to query the response from various ride operators. You can run the following command to retrieve the **RideBookingApiSubmitInstantRideRfqEndpoint** API Gateway Endpoint URL.
-
-{{< highlight bash >}}
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-3 \
- --query 'Stacks[].Outputs[?OutputKey==`RideBookingApiSubmitInstantRideRfqEndpoint`][OutputValue]' \
- --output text
-{{< /highlight >}}
-
-Let's store this request API Gateway endpoint URL in an environment variable, so we don't have to repeat it all the time:
-
-```bash
-export REQ_ENDPOINT=$(aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-3 \
- --query 'Stacks[].Outputs[?OutputKey==`RideBookingApiSubmitInstantRideRfqEndpoint`].OutputValue' \
- --output text)
-```
-### 2. Send the request for quotes
-
-The trigger point of the flow is a request message that is sent to get the quote. The following is the structure of the request event message.
-{{< highlight bash >}}
-{
- "from": "Frankfurt",
- "to": "Las Vegas",
- "customer": "cmr"
-}
-{{< /highlight >}}
-
-
-The from tag represents the starting point and to indicates the destination. The customer is an id for the end ussr.
-Execute the below commands to send a request for quote.
-
-{{< highlight bash >}}
-
-curl -XPOST -i -H "Content-Type:application/json" -d @event.json $REQ_ENDPOINT
-{{< /highlight >}}
-
-The output will have a **rfq-id** parameter. Save the value in a notepad as it will be used later to query the responses.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-### 3. Get API Gateway endpoint to query responses
-Before we can query the quotes, we have to lookup the response query endpoint. Execute the following command to query the **RideBookingApiQueryInstantRideRfqEndpoint** output in Amazon CloudFormation stack via the CLI:
-
-{{< highlight bash >}}
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-3 \
- --query 'Stacks[].Outputs[?OutputKey==`RideBookingApiQueryInstantRideRfqEndpoint`][OutputValue]' \
- --output text
-{{< /highlight >}}
-
-Let's store this request API Gateway endpoint URL in an environment variable, so we don't have to repeat it all the time:
-
-```bash
-export RES_ENDPOINT=$(aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-3 \
- --query 'Stacks[].Outputs[?OutputKey==`RideBookingApiQueryInstantRideRfqEndpoint`].OutputValue' \
- --output text | cut -d'{' -f 1)
-```
-
-
-### 4. Query the RFQ response endpoint
-Replace the **<>** in the below command with the value that was received in step 2. This is the correlation id to get the response quotes for the request that was sent. Execute the following command to query the responses:
-
-{{< highlight bash >}}
-
-curl -i -H "Accept:application/json" ${RES_ENDPOINT}<>
-{{< /highlight >}}
-
-The above call invokes a lambda function via API gateway end point. It queries the DynamoDB table to get the responses corresponding to the request id. The response will be a json payload showing the response quotes from different providers. A sample response is shown below:
-{{< highlight bash >}}
-{
- "quotes": [
- {
- "responder": "UnicornManagementResource10",
- "quote": "45"
- },
- {
- "responder": "UnicornManagementResource2",
- "quote": "100"
- }
- ],
- "rfq-id": "8b095f9e-cffc-4790-91a6-28353fa30e42",
- "from": "Frankfurt",
- "to": "Las Vegas",
- "customer": "cmr"
-}
-{{< /highlight >}}
-It shows the response quotes from two service providers. The function will need to be called in regular intervals if the service providers send responses at different times. You can also check the responses in the DynamoDB directly by querying based on the request id.
-{{% notice tip %}}
-**How to verify the data is actually coming from DynamoDB?**
-All responses for the quotes are received in a SQS queue. A lambda function receives the messages and stages them in a DynamoDB table. You can verify the response data by accessing the DynamoDB table in your specific region.
-**Oregon** | [Click here](https://us-west-2.console.aws.amazon.com/dynamodb/home?region=us-west-2#tables:) |
-**Ohio** | [Click here](https://us-east-2.console.aws.amazon.com/dynamodb/home?region=us-east-2#tables:) |
-**Singapore** | [Click here](https://ap-southeast-1.console.aws.amazon.com/dynamodb/home?region=ap-southeast-1#tables:) |
-**Sydney** | [Click here](https://ap-southeast-2.console.aws.amazon.com/dynamodb/home?region=ap-southeast-2#tables:) |
-**Frankfurt** | [Click here](https://eu-central-1.console.aws.amazon.com/dynamodb/home?region=eu-central-1#tables:) |
-**Ireland** | [Click here](https://eu-west-1.console.aws.amazon.com/dynamodb/home?region=eu-west-1#tables:) |
-{{% /notice %}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/_index.md b/workshop/content/topic-queue-chaining-and-load-balancer/_index.md
deleted file mode 100644
index e399bc0..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/_index.md
+++ /dev/null
@@ -1,36 +0,0 @@
-+++
-title = "Topic-Queue Chaining & Load Balancing"
-weight = 30
-pre = "Lab-2: "
-+++
-
-{{% notice info %}}
-Make sure you executed the **[Workshop Prerequisites](/prerequisites.html)** first, before you start with this lab!
-{{% /notice %}}
-
-Let’s look once more at the publish/subscribe channel between the unicorn management service and all 3 backend services on the right hand side that are interested in getting notified about ride completions.
-
-One of these services could happen to be taken offline for maintenance. Or the code that processes messages coming in from the ride completion topic could run into an exception. These are two examples where a subscriber service could potentially miss topic messages. A good pattern to apply here is **topic-queue-chaining**. That means that you add a queue, in our case an Amazon SQS queue, between the ride completion Amazon SNS topic and each of the subscriber services.
-As messages are buffered in a persistent manner in an SQS queue, no message will get lost should a subscriber process run into problems for many hours or days, or has exceptions or crashes.
-
-But there is even more to it. By having an Amazon SQS queue in front of each subscriber service, we can leverage the fact that a queue can act as a **buffering load-balancer**. Due to nature that every queue message is delivered to one of potentially many consumer processes, you can easily scale your subscriber services out & in and the message load will be distributed over the available consumer processes. Furthermore, since messages are buffered in the queue, also a scaling event, for instance when you need to wait until an additional consumer process becomes operational, will not make you lose messages.
-
-In this lab, we will develop the architecture below:
-
-
-
-## Lab Objectives
-
-In this lab, you will acquire the following skills:
-
-+ **How to create an Amazon SQS queue?**
-+ **How to leverage Amazon SQS as event source for AWS Lambda?**
-+ **How to add an Amazon SQS subscription to an Amazon SNS topic?**
-+ **How to define a subscription filter in an Amazon SNS subscriptions?**
-+ **How to call Amazon SNS from AWS Lambda?**
-
-
-{{% notice tip %}}
-**Lab source code**
-If you are curious and would like to dive into the lab's source code, you are more than welcome to do so. You will find the source code of this lab in our Github repo **[here](https://github.com/aws-samples/asynchronous-messaging-workshop/tree/master/code/lab-2)**.
-{{% /notice %}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml
deleted file mode 100644
index d6131ae..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.files/template.yaml
+++ /dev/null
@@ -1,236 +0,0 @@
-
-AWSTemplateFormatVersion: '2010-09-09'
-Transform: AWS::Serverless-2016-10-31
-Description: >
- re:invent2019 ARC314-R Lab-2
-
- Sample SAM Template for re:invent2019 ARC314-R Lab-2
-
-# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
-Globals:
- Function:
- Timeout: 10
-
-Resources:
- PythonLayerWithBoto3:
- Type: AWS::Serverless::LayerVersion
- Properties:
- LayerName: PythonLayerWithBoto3
- Description: Lambda Python 3.6 Layer with Boto3
- ContentUri: lambda-layers/
- CompatibleRuntimes:
- - python3.6
- LicenseInfo: Apache 2.0
- RetentionPolicy: Retain
-
- SubmitRideCompletionFunction:
- Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
- Properties:
- CodeUri: unicorn-management-service/
- Handler: app.lambda_handler
- Runtime: python3.6
- Layers:
- - !Ref PythonLayerWithBoto3
- Environment:
- Variables:
- TABLE_NAME: !Ref RidesTable
-# TOPIC_ARN: !Ref RideCompletionTopic
- Policies:
- - DynamoDBCrudPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
- TableName: !Ref RidesTable
-# - SNSPublishMessagePolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
-# TopicName: !GetAtt RideCompletionTopic.TopicName
- Events:
- WildRydes:
- Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
- Properties:
- Path: /submit-ride-completion
- Method: post
-
- RidesTable:
- Type: AWS::Serverless::SimpleTable
- Properties:
- TableName: Rides
- PrimaryKey:
- Name: id
- Type: String
-
-# RideCompletionTopic:
-# Type: AWS::SNS::Topic
-# Properties:
-# TopicName: RideCompletionTopic
-
- CustomerAccountingService:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-backend-microservice/
- Handler: app.lambda_handler
- Runtime: python3.6
- ReservedConcurrentExecutions: 5
- Environment:
- Variables:
- SERVICE_NAME: CustomerAccountingService
-# Policies:
-# - SQSPollerPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
-# QueueName: !Ref CustomerAccountingServiceQueue
-# Events:
-# CustomerAccountingServiceJobQueue:
-# Type: SQS
-# Properties:
-# Queue: !GetAtt CustomerAccountingServiceQueue.Arn
-# BatchSize: 1
-
- CustomerNotificationService:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-backend-microservice/
- Handler: app.lambda_handler
- Runtime: python3.6
- ReservedConcurrentExecutions: 5
- Environment:
- Variables:
- SERVICE_NAME: CustomerNotificationService
-# Policies:
-# - SQSPollerPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
-# QueueName: !Ref CustomerNotificationServiceQueue
-# Events:
-# CustomerNotificationServiceJobQueue:
-# Type: SQS
-# Properties:
-# Queue: !GetAtt CustomerNotificationServiceQueue.Arn
-# BatchSize: 1
-
- ExtraordinaryRidesService:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: generic-backend-microservice/
- Handler: app.lambda_handler
- Runtime: python3.6
- ReservedConcurrentExecutions: 5
- Environment:
- Variables:
- SERVICE_NAME: ExtraordinaryRidesService
-# Policies:
-# - SQSPollerPolicy: # https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json
-# QueueName: !Ref ExtraordinaryRidesServiceQueue
-# Events:
-# ExtraordinaryRidesServiceJobQueue:
-# Type: SQS
-# Properties:
-# Queue: !GetAtt ExtraordinaryRidesServiceQueue.Arn
-# BatchSize: 1
-
-# CustomerAccountingServiceQueue:
-# Type: AWS::SQS::Queue
-
-# CustomerAccountingServiceQueuePolicy:
-# Type: AWS::SQS::QueuePolicy
-# Properties:
-# Queues:
-# - !Ref CustomerAccountingServiceQueue
-# PolicyDocument:
-# Statement:
-# Effect: Allow
-# Principal: '*'
-# Action: sqs:SendMessage
-# Resource: '*'
-# Condition:
-# ArnEquals:
-# aws:SourceArn: !Ref RideCompletionTopic
-
-# CustomerAccountingServiceQueueToRidesTopicSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# Endpoint: !GetAtt CustomerAccountingServiceQueue.Arn
-# Protocol: sqs
-# RawMessageDelivery: true
-# TopicArn: !Ref RideCompletionTopic
-
-# CustomerNotificationServiceQueue:
-# Type: AWS::SQS::Queue
-
-# CustomerNotificationServiceQueuePolicy:
-# Type: AWS::SQS::QueuePolicy
-# Properties:
-# Queues:
-# - !Ref CustomerNotificationServiceQueue
-# PolicyDocument:
-# Statement:
-# Effect: Allow
-# Principal: '*'
-# Action: sqs:SendMessage
-# Resource: '*'
-# Condition:
-# ArnEquals:
-# aws:SourceArn: !Ref RideCompletionTopic
-
-# CustomerNotificationServiceQueueToRidesTopicSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# Endpoint: !GetAtt CustomerNotificationServiceQueue.Arn
-# Protocol: sqs
-# RawMessageDelivery: true
-# TopicArn: !Ref RideCompletionTopic
-
-# ExtraordinaryRidesServiceQueue:
-# Type: AWS::SQS::Queue
-
-# ExtraordinaryRidesServiceQueuePolicy:
-# Type: AWS::SQS::QueuePolicy
-# Properties:
-# Queues:
-# - !Ref ExtraordinaryRidesServiceQueue
-# PolicyDocument:
-# Statement:
-# Effect: Allow
-# Principal: '*'
-# Action: sqs:SendMessage
-# Resource: '*'
-# Condition:
-# ArnEquals:
-# aws:SourceArn: !Ref RideCompletionTopic
-
-# ExtraordinaryRidesServiceQueueToRidesTopicSubscription:
-# Type: AWS::SNS::Subscription
-# Properties:
-# Endpoint: !GetAtt ExtraordinaryRidesServiceQueue.Arn
-# Protocol: sqs
-# RawMessageDelivery: true
-# TopicArn: !Ref RideCompletionTopic
-# FilterPolicy: { "fare": [{"numeric": [">=", 50]}], "distance": [{"numeric": [">=", 20]}] }
-
-Outputs:
- # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
- # Find out more about other implicit resources you can reference within SAM
- # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
- UnicornManagementServiceApiSubmitRideCompletionEndpoint:
- Description: "API Gateway endpoint URL for Prod stage for SubmitRideCompletion function"
- Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/submit-ride-completion/"
-
- SubmitRideCompletionFunction:
- Description: "SubmitRideCompletionFunction Lambda Function ARN"
- Value: !GetAtt SubmitRideCompletionFunction.Arn
-
- CustomerAccountingService:
- Description: "CustomerAccountingService Lambda Function ARN"
- Value: !GetAtt CustomerAccountingService.Arn
-
- CustomerNotificationService:
- Description: "CustomerNotificationService Lambda Function ARN"
- Value: !GetAtt CustomerNotificationService.Arn
-
- ExtraordinaryRidesService:
- Description: "ExtraordinaryRidesService Lambda Function ARN"
- Value: !GetAtt ExtraordinaryRidesService.Arn
-
-# CustomerAccountingServiceQueue:
-# Description: "Amazon SQS queue ARN for the CustomerAccounting service queue"
-# Value: !Ref CustomerAccountingServiceQueue
-
-# CustomerNotificationServiceQueue:
-# Description: "Amazon SQS queue ARN for the CustomerNotification service queue"
-# Value: !Ref CustomerNotificationServiceQueue
-
-# ExtraordinaryRidesServiceQueue:
-# Description: "Amazon SQS queue ARN for the ExtraordinaryRides service queue"
-# Value: !Ref ExtraordinaryRidesServiceQueue
\ No newline at end of file
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.md b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.md
deleted file mode 100644
index 343f716..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/bootstrap-initial-state.md
+++ /dev/null
@@ -1,59 +0,0 @@
-+++
-title = "Bootstrap the Initial State"
-weight = 31
-pre = "1 "
-+++
-
-
-First, we will setup the initial state, including the integrating of the **Unicorn Management Service** (leveraging [Amazon API Gateway](https://aws.amazon.com/api-gateway/) and [AWS Lambda](https://aws.amazon.com/lambda/)), the **Rides Store** (leveraging [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)) and all **3 backend services** (leveraging [AWS Lambda](https://aws.amazon.com/lambda/)).
-
-
-
-#### 1. Browse to your AWS Cloud9 IDE
-
-Browse to your [AWS Cloud9 Console](https://console.aws.amazon.com/cloud9/home) and select the environment called **WildRydesAsyncMessaging**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Build the lab artifacts from source
-
-We provide you with an [AWS SAM](https://aws.amazon.com/serverless/sam/) template which we will use to bootstrap the initial state. In the **bash tab** (at the bottom) in you **AWS Cloud9 IDE**, run the following commands to build the lab code:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Deploy the application
-
-Now we are ready to deploy the application, by running the following command in the **lab-2** directory:
-
-{{< highlight bash >}}
-export AWS_REGION=$(aws --profile default configure get region)
-sam deploy \
- --stack-name wild-rydes-async-msg-2 \
- --capabilities CAPABILITY_IAM \
- --region $AWS_REGION \
- --guided
-{{< /highlight >}}
-
-Confirm the first 4 proposed arguments by hitting **ENTER**. When you get asked **SubmitRideCompletionFunction may not have authorization defined, Is this okay? [y/N]:**, enter `y` and hit **ENTER** again 3 times.
-
-#### 4. Wait until the stack is successfully deployed
-
-It takes usually 4 minutes until the stack launched. You can monitor the progress of the **wild-rydes-async-msg-2** stack in your SAM CLI or your [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation). When the stack is launched, the status will change from **CREATE_IN_PROGRESS** to **CREATE_COMPLETE**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-{{%attachments title="Related files" pattern="/*.*(yaml)"/%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-1.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-1.png
deleted file mode 100644
index c419a8a..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-1.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-2.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-2.png
deleted file mode 100644
index 558e235..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-2.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-3.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-3.png
deleted file mode 100644
index 50c016e..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-3.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-4.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-4.png
deleted file mode 100644
index 78ad62b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-4.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-5.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-5.png
deleted file mode 100644
index 930656b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-5.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-6.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-6.png
deleted file mode 100644
index 8b2db5c..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-6.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-7.png b/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-7.png
deleted file mode 100644
index 4a8f86e..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/bootstrap-initial-state/step-7.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-console.md
deleted file mode 100644
index 39f098e..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-console.md
+++ /dev/null
@@ -1,20 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-
-
-
-#### 4. Delete the Amazon SNS topic
-
-In your **[Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics)**, select **Topic** in the left navigation pane, select the **RideCompletionTopic** and click the **Delete** button in the top right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-You are done!
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-sam.md
deleted file mode 100644
index 8cd7015..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up-sam.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-
-#### 3. Delete the Amazon S3 bucket
-
-In your Cloud9 IDE, run the following command to delete the Amazon S3 bucket we created earlier:
-
-{{< highlight bash >}}
-aws s3 rb s3://${BUCKET_NAME} —-force
-{{< /highlight >}}
-
-You are done!
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up.md b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up.md
deleted file mode 100644
index 2834a47..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/clean-up.md
+++ /dev/null
@@ -1,28 +0,0 @@
-+++
-title = "Clean up"
-weight = 38
-pre = "8 "
-+++
-
-In this step, we will clean up all resources, we created during this lab, so that no further cost will occur.
-
-#### 1. Delete the previously created IAM Inline Policies
-
-In your Amazon IAM console, select **[Roles](https://console.aws.amazon.com/iamv2/home#/roles)** in the left navigation. In the search field, enter "async-msg". Open all matching roles and delete the previously created inline policies by clicking the "x" right to the policy name.
-
-#### 2. Delete the AWS SAM template
-
-In your Cloud9 IDE, run the following command to delete the resources we created with our AWS SAM template:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-aws cloudformation delete-stack \
- --stack-name wild-rydes-async-msg-2
-
-{{< /highlight >}}
-
-
-#### 3. Delete the AWS Lambda created Amazon CloudWatch Log Group
-
-Follow **[this deep link](https://console.aws.amazon.com/cloudwatch/home?#logs:prefix=/aws/lambda/wild-rydes-async-msg-2)** to list all **Amazon CloudWatch Log Groups** with the prefix `/aws/lambda/wild-rydes-async-msg-2`, AWS Lambda created during this lab. Select all the Amazon CloudWatch Log Group one after each other and choose **Delete log group** from the **Actions** menu.
-
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1-console.png
deleted file mode 100644
index f04b02a..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1.png b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1.png
deleted file mode 100644
index d2690fa..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-1.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-2-console.png
deleted file mode 100644
index 49f409c..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/clean-up/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md
deleted file mode 100644
index f2cdb12..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-console.md
+++ /dev/null
@@ -1,124 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new Amazon SQS queue
-
-In your **[Amazon SQS console](https://console.aws.amazon.com/sqs/home?)**, select **Create New Queue** in top left corner or click **Get Started Now** in the center of the page, if it's your first queue in this region.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Enter `CustomerAccountingServiceQueue` as **Queue Name**, make sure **Standard Queue** is highlighted and click **Create Queue**.
-
-{{%expand "Screenshot" %}}
-
-{{% /expand%}}
-
-#### 2. Create a new subscription
-
-After creating the queue **CustomerAccountingServiceQueue**, click the **Subscribe to Amazon SNS Topic** button in the SNS Subscriptions tab.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-In the Subscribe to Amazon SNS topic window, select the **RideCompletionTopic** and click **Save**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Validate the subscription and add the filter to the subscription
-
-Select the newly created subscription from the SNS subscriptions list and click the **View in SNS** button (this should open a new tab to the subscription in the **[Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics)**).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Confirm that the Status of the subscription is **Confirmed**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click **Edit** to modify the subscription.
-
-In the Edit subscription screen, click **Enable raw message delivery**. Click **Save Changes**
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Now that we have updated the subscription, let's set the IAM policy for our Lambda function to access the queue.
-
-#### 4. Grant permissions to our function to access the Amazon SQS queue
-
-In your **[Amazon IAM console](https://console.aws.amazon.com/iam)**, select **Roles** in the left navigation. Use the filter text box to find the role with the name **wild-rydes-async-msg-2-CustomerAccountingService-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the role name and click **Add inline policy** to attach another one.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Select the **JSON** tab and passed the following policy statement into it, after you have substitute <<...>> with the correct values. It will add the permission to your Lambda function to access the Amazon SQS queue:
-
-{{%expand "policy" %}}
-```bash
-{
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "sqs:ChangeMessageVisibility",
- "sqs:ChangeMessageVisibilityBatch",
- "sqs:DeleteMessage",
- "sqs:DeleteMessageBatch",
- "sqs:GetQueueAttributes",
- "sqs:ReceiveMessage"
- ],
- "Resource": "arn:aws:sqs:<>:<>:CustomerAccountingServiceQueue"
- }
- ]
-}
-```
-{{% /expand%}}
-
-{{% notice tip %}}
-Make sure you provide the AWS ACCOUNT ID in the form of XXXXXXXXXXXX and not XXXX-XXXX-XXXX!
-{{% /notice %}}
-
-Click **Review policy** and enter the **Name** `CustomerAccountingServiceRolePolicy0`. Click **Create policy**. To validate this step, select on the role again and your should see 2 policies attached to your role, including the one you just have created:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 5. Add the Amazon SQS queue as event source for your Customer Accounting Service AWS Lambda function
-
-Open your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)** and select **Functions** in the left navigation. Click on the function with the name **wild-rydes-async-msg-2-CustomerAccounting...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name). Click on the **+ Add Trigger** button on the left side of the page:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-On the following page, select `SQS` as the event source for this AWS Lambda function. For the **SQS queue**, select the `CustomerAccountingServiceQueue` and set the **batch size** to `1`. Don't forget to **enable the trigger**, before you click the **Add** button in the lower right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-After some seconds, the trigger will be enabled and and you are ready to go (you may have to refresh the site a few times).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md
deleted file mode 100644
index 42a9fd8..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription-sam.md
+++ /dev/null
@@ -1,98 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, add the definition for an Amazon SQS queue with the name **CustomerAccountingServiceQueue**, the **CustomerAccountingService** will use to consume messages from. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerAccountingServiceQueue:
- Type: AWS::SQS::Queue
-```
-{{% /expand%}}
-
-The next step, before we can define the subscription, is granting our Amazon SNS topic the permissions to publish messages into this Amazon SQS queue. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerAccountingServiceQueuePolicy:
- Type: AWS::SQS::QueuePolicy
- Properties:
- Queues:
- - !Ref CustomerAccountingServiceQueue
- PolicyDocument:
- Statement:
- Effect: Allow
- Principal: '*'
- Action: sqs:SendMessage
- Resource: '*'
- Condition:
- ArnEquals:
- aws:SourceArn: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-Now we are ready to create the Amazon SNS subscription for the **CustomerAccountingService**. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerAccountingServiceQueueToRidesTopicSubscription:
- Type: AWS::SNS::Subscription
- Properties:
- Endpoint: !GetAtt CustomerAccountingServiceQueue.Arn
- Protocol: sqs
- RawMessageDelivery: true
- TopicArn: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-The next step is to attach an AWS IAM policy tou our **CustomerAccountingService** AWS Lambda function, which grants permission to access our previously created Amazon SQS queue, to consume the messages. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)** and **[here](https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Policies:
- - SQSPollerPolicy:
- QueueName: !Ref CustomerAccountingServiceQueue
-```
-{{% /expand%}}
-
-Last but not least, we have to declare the **CustomerAccountingServiceQueue** as event source for our **CustomerAccountingService**. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Events:
- CustomerAccountingServiceJobQueue:
- Type: SQS
- Properties:
- Queue: !GetAtt CustomerAccountingServiceQueue.Arn
- BatchSize: 1
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-
-
-{{% /expand%}}
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SQS queue and the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SQS queue and the Amazon SNS subscription.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md
deleted file mode 100644
index 38ae91a..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/create-customer-accounting-service-subscription.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "Create Customer Accounting Service Subscription"
-weight = 34
-pre = "4 "
-+++
-
-In this step, we will create an Amazon SQS queue for the **Customer Accounting Service** and add a subscription to the Amazon SNS topic we created before:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-customer-accounting-service-subscription-console" />}}
-{{< tab name="SAM" include="create-customer-accounting-service-subscription-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-console.png
deleted file mode 100644
index 4bdc249..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-sam.png
deleted file mode 100644
index aa8244d..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-10-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-10-console.png
deleted file mode 100644
index 7be5d7b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-10-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-11-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-11-console.png
deleted file mode 100644
index ad031c8..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-11-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-console.png
deleted file mode 100644
index 52bc1be..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-sam.png
deleted file mode 100644
index 4425d24..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-2-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-3-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-3-console.png
deleted file mode 100644
index 2147217..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-4-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-4-console.png
deleted file mode 100644
index 5e4204c..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-1-console.png
deleted file mode 100644
index c09527d..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-2-console.png
deleted file mode 100644
index 14d7400..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-console.png
deleted file mode 100644
index 35daac4..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-5-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-6-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-6-console.png
deleted file mode 100644
index aa4e7e3..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-6-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-7-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-7-console.png
deleted file mode 100644
index 3ab02d7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-7-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-8-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-8-console.png
deleted file mode 100644
index 9fe926b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-8-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-9-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-9-console.png
deleted file mode 100644
index 99fb540..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-accounting-service-subscription/step-9-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md
deleted file mode 100644
index 58f44e1..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-console.md
+++ /dev/null
@@ -1,129 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new Amazon SQS queue
-
-In your **[Amazon SQS console](https://console.aws.amazon.com/sqs/home?)**, select **Create New Queue** in top left corner or click **Get Started Now** in the center of the page, if it's your first queue in this region.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Enter `CustomerNotificationServiceQueue` as **Queue Name**, make sure **Standard Queue** is highlighted and click **Create Queue**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Create a new subscription
-
-After creating the queue **CustomerNotificationServiceQueue**, click the **Subscribe to Amazon SNS Topic** button in the SNS Subscriptions tab.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-In the Subscribe to Amazon SNS topic window, select the **RideCompletionTopic** and click **Save**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-{{% notice tip %}}
-You may wondering why we don't create the subscription from the Amazon SNS console as shown below. If we create a subscription from Amazon SNS to Amazon SQS, Amazon SNS will send a confirmation message first to Amazon SQS. As long as this subscription is not confirmed, Amazon SNS will not start sending messages to Amazon SQS.
-By initiating the subscription from the subscriber side, this is not necessary.
-{{% /notice %}}
-
-#### 3. Validate the subscription and add the filter to the subscription
-
-Select the newly created subscription from the SNS subscriptions list and click the **View in SNS** button (this should open a new tab to the subscription in the **[Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics)**).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Confirm that the Status of the subscription is **Confirmed**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click **Edit** to modify the subscription.
-
-In the Edit subscription screen, click **Enable raw message delivery**. Click **Save Changes**
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Now that we have updated the subscription, let's set the IAM policy for our Lambda function to access the queue.
-
-#### 4. Grant permissions to our function to access the Amazon SQS queue
-
-In your **[Amazon IAM console](https://console.aws.amazon.com/iam)**, select **Roles** in the left navigation. Use the filter text box to find the role with the name **wild-rydes-async-msg-2-CustomerNotificationService-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the role name and click **Add inline policy** to attach another one.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Select the **JSON** tab and passed the following policy statement into it, after you have substitute <<...>> with the correct values. It will add the permission to your Lambda function to access the Amazon SQS queue:
-
-{{%expand "policy" %}}
-```bash
-{
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "sqs:ChangeMessageVisibility",
- "sqs:ChangeMessageVisibilityBatch",
- "sqs:DeleteMessage",
- "sqs:DeleteMessageBatch",
- "sqs:GetQueueAttributes",
- "sqs:ReceiveMessage"
- ],
- "Resource": "arn:aws:sqs:<>:<>:CustomerNotificationServiceQueue"
- }
- ]
-}
-```
-{{% /expand%}}
-
-{{% notice tip %}}
-Make sure you provide the AWS ACCOUNT ID in the form of XXXXXXXXXXXX and not XXXX-XXXX-XXXX!
-{{% /notice %}}
-
-Click **Review policy** and enter the **Name** `CustomerNotificationServiceRolePolicy0`. Click **Create policy**. To validate this step, select on the role again and your should see 2 policies attached to your role, including the one you just have created:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 5. Add the Amazon SQS queue as event source for your Customer Notification Service AWS Lambda function
-
-Open your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)** and select **Functions** in the left navigation. Click on the function with the name **wild-rydes-async-msg-2-CustomerNotification...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name). Click on the **+ Add Trigger** button on the left side of the page:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-On the following page, select `SQS` as the event source for this AWS Lambda function. For the **SQS queue**, select the `CustomerNotificationServiceQueue` and set the **batch size** to `1`. Don't forget to **enable the trigger**, before you click the **Add** button in the lower right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-After some seconds, the trigger will be enabled and and you are ready to go (you may have to refresh the site a few times).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md
deleted file mode 100644
index 9404ef6..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription-sam.md
+++ /dev/null
@@ -1,100 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, add the definition for an Amazon SQS queue with the name **CustomerNotificationServiceQueue**, the **CustomerNotificationService** will use to consume messages from. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerNotificationServiceQueue:
- Type: AWS::SQS::Queue
-```
-{{% /expand%}}
-
-The next step, before we can define the subscription, is granting our Amazon SNS topic the permissions to publish messages into this Amazon SQS queue. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerNotificationServiceQueuePolicy:
- Type: AWS::SQS::QueuePolicy
- Properties:
- Queues:
- - !Ref CustomerNotificationServiceQueue
- PolicyDocument:
- Statement:
- Effect: Allow
- Principal: '*'
- Action: sqs:SendMessage
- Resource: '*'
- Condition:
- ArnEquals:
- aws:SourceArn: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-Now we are ready to create the Amazon SNS subscription for the **CustomerNotificationService**. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- CustomerNotificationServiceQueueToRidesTopicSubscription:
- Type: AWS::SNS::Subscription
- Properties:
- Endpoint: !GetAtt CustomerNotificationServiceQueue.Arn
- Protocol: sqs
- RawMessageDelivery: true
- TopicArn: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-The next step is to attach an AWS IAM policy tou our **CustomerNotificationService** AWS Lambda function, which grants permission to access our previously created Amazon SQS queue, to consume the messages. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)** and **[here](https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Policies:
- - SQSPollerPolicy:
- QueueName: !Ref CustomerNotificationServiceQueue
-```
-{{% /expand%}}
-
-Last but not least, we have to declare the **CustomerNotificationServiceQueue** as event source for our **CustomerNotificationService**. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Events:
- CustomerNotificationServiceJobQueue:
- Type: SQS
- Properties:
- Queue: !GetAtt CustomerNotificationServiceQueue.Arn
- BatchSize: 1
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-
-
-{{% /expand%}}
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SQS queue and the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SQS queue and the Amazon SNS subscription.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md
deleted file mode 100644
index 00e70ce..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/create-customer-notification-service-subscription.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "Create Customer Notification Service Subscription"
-weight = 33
-pre = "3 "
-+++
-
-In this step, we will create an **Amazon SQS** queue for the **Customer Notification Service** and add a subscription to the Amazon SNS topic we created before:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-customer-notification-service-subscription-console" />}}
-{{< tab name="SAM" include="create-customer-notification-service-subscription-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-console.png
deleted file mode 100644
index 4bdc249..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-sam.png
deleted file mode 100644
index f988d69..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-10-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-10-console.png
deleted file mode 100644
index dc8f048..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-10-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-11-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-11-console.png
deleted file mode 100644
index 5f7a208..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-11-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-console.png
deleted file mode 100644
index 491351b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-sam.png
deleted file mode 100644
index 62a6eca..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-2-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-3-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-3-console.png
deleted file mode 100644
index ef9feac..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-4-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-4-console.png
deleted file mode 100644
index 3e902bd..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-1-console.png
deleted file mode 100644
index 8e0dd8d..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-2-console.png
deleted file mode 100644
index 4e450ac..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-console.png
deleted file mode 100644
index 35daac4..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-5-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-6-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-6-console.png
deleted file mode 100644
index 37d1fd5..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-6-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-7-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-7-console.png
deleted file mode 100644
index 3ab02d7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-7-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-8-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-8-console.png
deleted file mode 100644
index c0edeea..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-8-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-9-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-9-console.png
deleted file mode 100644
index 8a5464a..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/step-9-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/tip.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/tip.png
deleted file mode 100644
index 980fabc..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-customer-notification-service-subscription/tip.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md
deleted file mode 100644
index d6c1dd0..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-console.md
+++ /dev/null
@@ -1,133 +0,0 @@
-+++
-title = "Console"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Create a new Amazon SQS queue
-
-In your **[Amazon SQS console](https://console.aws.amazon.com/sqs/home?)**, select **Create New Queue** in top left corner or click **Get Started Now** in the center of the page, if it's your first queue in this region.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Enter `ExtraordinaryRidesServiceQueue` as **Queue Name**, make sure **Standard Queue** is highlighted and click **Create Queue**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Create a new subscription
-
-After creating the queue **ExtraordinaryRidesServiceQueue**, click the **Subscribe to Amazon SNS Topic** button in the SNS Subscriptions tab.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-In the Subscribe to Amazon SNS topic window, select the **RideCompletionTopic** and click **Save**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Validate the subscription and add the filter to the subscription
-
-Select the newly created subscription from the SNS subscriptions list and click the **View in SNS** button (this should open a new tab to the subscription in the **[Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics)**).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Confirm that the Status of the subscription is **Confirmed**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click **Edit** to modify the subscription.
-
-In the Edit subscription screen, click **Enable raw message delivery**.
-
-In the subscription filter policy section, add the filter policy. Click **Save changes**.
-
-{{< highlight json >}}
-{
- "fare": [{"numeric": [">=", 50]}],
- "distance": [{"numeric": [">=", 20]}]
-}
-{{< /highlight >}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Now that we have updated the subscription, let's set the IAM policy for our Lambda function to access the queue.
-
-#### 5. Grant permissions to our function to access the Amazon SQS queue
-
-In your **[Amazon IAM console](https://console.aws.amazon.com/iam)**, select **Roles** in the left navigation. Use the filter text box to find the role with the name **wild-rydes-async-msg-2-ExtraordinaryRidesService-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the role name and click **Add inline policy** to attach another one.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Select the **JSON** tab and passed the following policy statement into it, after you have substitute <<...>> with the correct values. It will add the permission to your Lambda function to access the Amazon SQS queue:
-
-{{%expand "policy" %}}
-```bash
-{
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "sqs:ChangeMessageVisibility",
- "sqs:ChangeMessageVisibilityBatch",
- "sqs:DeleteMessage",
- "sqs:DeleteMessageBatch",
- "sqs:GetQueueAttributes",
- "sqs:ReceiveMessage"
- ],
- "Resource": "arn:aws:sqs:<>:<>:ExtraordinaryRidesServiceQueue"
- }
- ]
-}
-```
-{{% /expand%}}
-
-{{% notice tip %}}
-Make sure you provide the AWS ACCOUNT ID in the form of XXXXXXXXXXXX and not XXXX-XXXX-XXXX!
-{{% /notice %}}
-
-Click **Review policy** and enter the **Name** `ExtraordinaryRidesServiceRolePolicy0`. Click **Create policy**. To validate this step, select on the role again and your should see 2 policies attached to your role, including the one you just have created:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 6. Add the Amazon SQS queue as event source for your Extraordinary Rides Service AWS Lambda function
-
-Open your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)** and select **Functions** in the left navigation. Click on the function with the name **wild-rydes-async-msg-2-ExtraordinaryRides...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name). Click on the **+ Add Trigger** button on the left side of the page:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-On the following page, select `SQS` as the event source for this AWS Lambda function. For the **SQS queue**, select the `ExtraordinaryRidesServiceQueue` and set the **batch size** to `1`. Don't forget to **enable the trigger**, before you click the **Add** button in the lower right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-After some seconds, the trigger will be enabled and and you are ready to go (you may have to refresh the site a few times).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md
deleted file mode 100644
index 6c46693..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription-sam.md
+++ /dev/null
@@ -1,101 +0,0 @@
-+++
-title = "SAM"
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, add the definition for an Amazon SQS queue with the name **ExtraordinaryRidesServiceQueue**, the **ExtraordinaryRidesService** will use to consume messages from. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- ExtraordinaryRidesServiceQueue:
- Type: AWS::SQS::Queue
-```
-{{% /expand%}}
-
-The next step, before we can define the subscription, is granting our Amazon SNS topic the permissions to publish messages into this Amazon SQS queue. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- ExtraordinaryRidesServiceQueuePolicy:
- Type: AWS::SQS::QueuePolicy
- Properties:
- Queues:
- - !Ref ExtraordinaryRidesServiceQueue
- PolicyDocument:
- Statement:
- Effect: Allow
- Principal: '*'
- Action: sqs:SendMessage
- Resource: '*'
- Condition:
- ArnEquals:
- aws:SourceArn: !Ref RideCompletionTopic
-```
-{{% /expand%}}
-
-Now we are ready to create the Amazon SNS subscription for the **ExtraordinaryRidesService**. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- ExtraordinaryRidesServiceQueueToRidesTopicSubscription:
- Type: AWS::SNS::Subscription
- Properties:
- Endpoint: !GetAtt ExtraordinaryRidesServiceQueue.Arn
- Protocol: sqs
- RawMessageDelivery: true
- TopicArn: !Ref RideCompletionTopic
- FilterPolicy: { "fare": [{"numeric": [">=", 50]}], "distance": [{"numeric": [">=", 20]}] }
-```
-{{% /expand%}}
-
-The next step is to attach an AWS IAM policy tou our **ExtraordinaryRidesService** AWS Lambda function, which grants permission to access our previously created Amazon SQS queue, to consume the messages. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)** and **[here](https://github.com/awslabs/serverless-application-model/blob/develop/samtranslator/policy_templates_data/policy_templates.json)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Policies:
- - SQSPollerPolicy:
- QueueName: !Ref ExtraordinaryRidesServiceQueue
-```
-{{% /expand%}}
-
-Last but not least, we have to declare the **ExtraordinaryRidesServiceQueue** as event source for our **ExtraordinaryRidesService**. You can find the AWS SAM documentation to do so **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-function)**.
-
-{{%expand "Cheat Sheet" %}}
-```yaml
- Events:
- ExtraordinaryRidesServiceJobQueue:
- Type: SQS
- Properties:
- Queue: !GetAtt ExtraordinaryRidesServiceQueue.Arn
- BatchSize: 1
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-
-
-{{% /expand%}}
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SQS queue and the Amazon SNS subscription:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SQS queue and the Amazon SNS subscription.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md
deleted file mode 100644
index 524603a..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/create-extraordinary-rides-service-subscription.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-title = "Create Extraordinary Rides Service Subscription"
-weight = 35
-pre = "5 "
-+++
-
-In this step, we will create an Amazon SQS queue for the **Extraordinary Rides Service** and add a subscription to the Amazon SNS topic we created before:
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-extraordinary-rides-service-subscription-console" />}}
-{{< tab name="SAM" include="create-extraordinary-rides-service-subscription-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-console.png
deleted file mode 100644
index 4bdc249..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-sam.png
deleted file mode 100644
index cea8d5a..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-10-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-10-console.png
deleted file mode 100644
index 4dda4eb..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-10-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-11-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-11-console.png
deleted file mode 100644
index ed249b5..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-11-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-12-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-12-console.png
deleted file mode 100644
index 5638276..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-12-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-console.png
deleted file mode 100644
index 66870e9..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-sam.png
deleted file mode 100644
index b17e533..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-2-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-3-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-3-console.png
deleted file mode 100644
index cd74e5d..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-3-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-4-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-4-console.png
deleted file mode 100644
index 684b3d7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-4-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-1-console.png
deleted file mode 100644
index 65d0bc2..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-console.png
deleted file mode 100644
index 35daac4..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-5-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-6-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-6-console.png
deleted file mode 100644
index 0988597..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-6-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-7-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-7-console.png
deleted file mode 100644
index 6d54d4e..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-7-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-8-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-8-console.png
deleted file mode 100644
index 3ab02d7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-8-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-9-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-9-console.png
deleted file mode 100644
index 10599e6..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-extraordinary-rides-service-subscription/step-9-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-console.md
deleted file mode 100644
index 3f7cb8a..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-console.md
+++ /dev/null
@@ -1,23 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Browse to the Amazon SNS console
-
-In your [Amazon SNS console](https://console.aws.amazon.com/sns/v3/home?#/topics), select **Topic** in the left navigation pane and click the **Create topic** button in the top right corner.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Create the Ride Completion Topic
-
-Enter the topic name **RideCompletionTopic** and leave the default values. Scroll to the bottom of the page and click **Create topic**.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-sam.md
deleted file mode 100644
index 089e27a..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic-sam.md
+++ /dev/null
@@ -1,47 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Update the AWS SAM template
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, add the definition for an Amazon SNS topic with the name RideCompletionTopic. You can find the AWS CloudFormation documentation to do so **[here](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)**.
-
-{{%expand "Cheat Sheet" %}}
-```
- RideCompletionTopic:
- Type: AWS::SNS::Topic
- Properties:
- TopicName: RideCompletionTopic
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the Amazon SNS topic:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-**Note:** you do not need to provide the arguments for the deployment, because AWS SAM saved the parameter values in a configuration file called **samconfig.toml**. See the **[documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html)** more information on the AWS SAM CLI configuration file.
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new Amazon SNS topic.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic.md b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic.md
deleted file mode 100644
index 060eb6c..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/create-sns-topic.md
+++ /dev/null
@@ -1,16 +0,0 @@
-+++
-title = "Create the Amazon SNS topic"
-weight = 32
-pre = "2 "
-+++
-
-In this step, you can chose whether you want to create the Amazon SNS topic via the AWS console or AWS SAM. Just select the corresponding tab below and follow the instructions:
-
-{{% notice info %}}
-You can chose, whether you would like to use the **[AWS Console](https://console.aws.amazon.com) or [AWS SAM](https://aws.amazon.com/serverless/sam/)** for this lab. Once you have chosen, **stick to it until the end** of this lab and don't switch in between!
-{{% /notice %}}
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="create-sns-topic-console" />}}
-{{< tab name="SAM" include="create-sns-topic-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-console.png
deleted file mode 100644
index 65cfe34..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-sam.png
deleted file mode 100644
index 01079ea..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-2-console.png
deleted file mode 100644
index 895ce21..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/create-sns-topic/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/module-2.png b/workshop/content/topic-queue-chaining-and-load-balancer/module-2.png
deleted file mode 100644
index 15a9e76..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/module-2.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-1.png b/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-1.png
deleted file mode 100644
index 9a1f480..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-1.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-2.png b/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-2.png
deleted file mode 100644
index dcd31c7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-2.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-3.png b/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-3.png
deleted file mode 100644
index 4e226a4..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-3.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-4.png b/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-4.png
deleted file mode 100644
index 4529c11..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/step-4.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancing.md b/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancing.md
deleted file mode 100644
index 4efe958..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancer/test-topic-queue-chaining-and-load-balancing.md
+++ /dev/null
@@ -1,64 +0,0 @@
-+++
-title = "Test Topic-Queue Chaining & Load Balancing"
-
-weight = 37
-pre = "7 "
-+++
-
-In this step, we will validate that the Amazon SNS topic is publishing all messages to all subscribers. Because a subscriber can also fail processing a message, we also want to validate that Amazon SNS is redelivering the message, so that we will not miss a single message.
-
-#### 1. Look up the API Gateway endpoint
-
-To look-up the API Gateway endpoint URL for the submit-ride-completion function, run the following command:
-
-```bash
-aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-2 \
- --query 'Stacks[].Outputs[?OutputKey==`UnicornManagementServiceApiSubmitRideCompletionEndpoint`].OutputValue' \
- --output text
-```
-
-
-#### 2. Send a couple requests to the Unicorn Management Service
-
-Let's store this API Gateway endpoint URL in an environment variable, so we don't have to repeat it all the time:
-
-```bash
-export ENDPOINT=$(aws cloudformation describe-stacks \
- --stack-name wild-rydes-async-msg-2 \
- --query 'Stacks[].Outputs[?OutputKey==`UnicornManagementServiceApiSubmitRideCompletionEndpoint`].OutputValue' \
- --output text)
-```
-
-To send a couple requests to the **submit ride completion endpoint**, execute the command below 5 or more times and change the request payload to test the filter criteria for the **Extraordinary Rides Service**:
-
-```bash
-curl -XPOST -i -H "Content-Type:application/json" -d '{ "from": "Berlin", "to": "Frankfurt", "duration": 420, "distance": 600, "customer": "cmr", "fare": 256.50 }' $ENDPOINT
-```
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Validate the message reception
-
-Go to your [Amazon CloudWatch Log console](https://console.aws.amazon.com/cloudwatch/home?#logs:prefix=/aws/lambda/wild-rydes-async-msg-2) and lookup all **Log Groups** with the prefix `/aws/lambda/wild-rydes-async-msg-2`.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click one the name of the Log Groups to see all **Log Streams** available for this Log Group.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Browse the most recent Log Streams to validate, that it could successfully process the message. You should also see some log entries, indicating a failed message processing. Shortly after, you should see the message redelivery from Amazon SNS and the successful message processing log entry.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Browse all Log Groups to validate, that each of our 5 backend service could successfully process the message.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-console.png
deleted file mode 100644
index fee4648..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-sam.png
deleted file mode 100644
index 99e9018..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1.png
deleted file mode 100644
index 15a9e76..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-1.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-console.png
deleted file mode 100644
index 3ab02d7..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-sam.png
deleted file mode 100644
index 4c9360b..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-2-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-console.png
deleted file mode 100644
index 1bfdb19..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-sam.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-sam.png
deleted file mode 100644
index 1c4c798..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-3-sam.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-4-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-4-console.png
deleted file mode 100644
index 095aaf8..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-4-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-5-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-5-console.png
deleted file mode 100644
index d51932c..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-5-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-6-console.png b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-6-console.png
deleted file mode 100644
index 188c790..0000000
Binary files a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/step-6-console.png and /dev/null differ
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-console.md b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-console.md
deleted file mode 100644
index 9b2d37d..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-console.md
+++ /dev/null
@@ -1,98 +0,0 @@
-+++
-title = "Console"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Grant additional IAM permissions to Lambda
-
-In your **[Amazon IAM console](https://console.aws.amazon.com/iam)**, select **Roles** in the left navigation. Use the filter text box to find the role with the name **wild-rydes-async-msg-2-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the role name and click **Add inline policy** to attach another one.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Select the **JSON** tab and passed the following policy statement into it, after you have substitute <<...>> with the correct values. It will add the permission to your Lambda function to publish messages to this particular Amazon SNS topic:
-
-{{%expand "policy" %}}
-```json
-{
- "Version": "2012-10-17",
- "Statement": [
- {
- "Action": [
- "sns:Publish"
- ],
- "Resource": "arn:aws:sns:<>:<>:<>",
- "Effect": "Allow"
- }
- ]
-}
-```
-{{% /expand%}}
-
-{{% notice tip %}}
-Make sure you provide the AWS ACCOUNT ID in the form of XXXXXXXXXXXX and not XXXX-XXXX-XXXX!
-{{% /notice %}}
-
-Click **Review policy** and enter the **Name** `SubmitRideCompletionFunctionRolePolicy1`. Click **Create policy**. To validate this step, select on the role again and your should see 3 policies attached to your role, including the one you just have created:
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 2. Provide the Amazon SNS topic ARN to Lambda
-
-In your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)**, select **Functions** in the left navigation. Use the filter text box to find the function with the name **wild-rydes-async-msg-2-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name).
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-Click on the function name and scroll down to the section **Environment variables**. Our Lambda function expects an environment variable with the **Name** `TOPIC_ARN`. It uses this Amazon SNS topic to publish all messages to. Lookup your Amazon SNS topic name in the [Amazon SNS console](https://console.aws.amazon.com/sns) and add this variable. Click the **Save** button in the top right corner to save the change.
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-#### 3. Update your Lambda function to call Amazon SNS
-
-Open your **[AWS Lambda console](https://console.aws.amazon.com/lambda/home?#/functions)** and select **Functions** in the left navigation. Select the function with the name **wild-rydes-async-msg-2-SubmitRideCompletionFunctio-...** (assuming your have chosen `wild-rydes-async-msg-2` as your stack name). Scroll a bit down to the section **Function code**. Add the definition of the sns client directly after the dynamodb client:
-
-{{%expand "Cheat Sheet" %}}
-```Python
-sns = boto3.client('sns', config=config)
-```
-{{% /expand%}}
-
-After the put item DynamoDB statement and before we are sending the response back to the caller, add the code to publish a message to Amazon SNS:
-
-{{%expand "Cheat Sheet" %}}
-```Python
- response = sns.publish(
- TopicArn=TOPIC_ARN,
- Message=json.dumps(request),
- MessageAttributes = {
- 'fare': {
- 'DataType': 'Number',
- 'StringValue': str(request['fare'])
- },
- 'distance': {
- 'DataType': 'Number',
- 'StringValue': str(request['distance'])
- }
- }
- )
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-sam.md b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-sam.md
deleted file mode 100644
index bce889d..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service-sam.md
+++ /dev/null
@@ -1,98 +0,0 @@
-+++
-title = "SAM"
-
-disableToc = true
-hidden = true
-+++
-
-#### 1. Grant additional IAM permissions to Lambda
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, look for the **SubmitRideCompletionFunction** definition. It already contains one policies entry called **DynamoDBCrudPolicy**. Directly below, add a policy entry which grants Amazon SNS publish message permission. You can look up the supported policies **[here](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html)**.
-
-{{%expand "Cheat Sheet" %}}
-
-```yaml
- - SNSPublishMessagePolicy:
- TopicName: !GetAtt RideCompletionTopic.TopicName
-```
-
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 2. Provide the Amazon SNS topic ARN to Lambda
-
-In your Cloud9 IDE for this workshop, open the SAM template file `wild-rydes-async-messaging/lab-2/template.yaml`. In the **Resources** section, look for the **SubmitRideCompletionFunction** definition. It already contains one environment variables entry called **TABLE_NAME**. Directly below, add an additional variable with the key **TOPIC_ARN** and the corresponding value.
-
-{{%expand "Cheat Sheet" %}}
-
-```yaml
- TOPIC_ARN: !Ref RideCompletionTopic
-```
-
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 3. Update your Lambda function to call Amazon SNS
-
-In your Cloud9 IDE, open the Python based AWS Lambda function `wild-rydes-async-messaging/lab-2/unicorn-management-service/app.py`.
-Add the definition of the sns client directly after the dynamodb client:
-
-{{%expand "Cheat Sheet" %}}
-```Python
-sns = boto3.client('sns', config=config)
-```
-{{% /expand%}}
-
-After the put item DynamoDB statement and before we are sending the response back to the caller, add the code to publish a message to Amazon SNS:
-
-{{%expand "Cheat Sheet" %}}
-```Python
- response = sns.publish(
- TopicArn=TOPIC_ARN,
- Message=json.dumps(request),
- MessageAttributes = {
- 'fare': {
- 'DataType': 'Number',
- 'StringValue': str(request['fare'])
- },
- 'distance': {
- 'DataType': 'Number',
- 'StringValue': str(request['distance'])
- }
- }
- )
-```
-{{% /expand%}}
-
-{{%expand "Detailed description" %}}
-
-{{% /expand%}}
-
-
-#### 4. Deploy the updated AWS SAM template
-
-Run the following command to build the lab again, after we have added the additional policy:
-
-{{< highlight bash >}}
-cd ~/environment/wild-rydes-async-messaging/lab-2
-sam build
-
-{{< /highlight >}}
-
-Now we are ready to update the application, by running the following command to deploy the change:
-
-{{< highlight bash >}}
-sam deploy
-{{< /highlight >}}
-
-In the meantime while your waiting, you may want to have a look at the AWS SAM template to make yourself familiar with the stack we launched. Just click on the **template.yaml** attachment below to see the content.
-
-Because AWS SAM will only deploy/update/delete resources which are changed, it only takes a couple of seconds to deploy the new version.
diff --git a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service.md b/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service.md
deleted file mode 100644
index dec8177..0000000
--- a/workshop/content/topic-queue-chaining-and-load-balancer/update-unicorn-management-service/update-unicorn-management-service.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-title = "Update Unicorn Management Service"
-
-weight = 36
-pre = "6 "
-+++
-
-After creating the Amazon SNS topic, all the Amazon SQS queues and the subscriptions, the current architecture looks like the following on:
-
-
-
-The last missing part to complete the architecture is calling our **Amazon SNS topic** from our **Unicorn Management Service**.
-
-{{< tabs name="Style" >}}
-{{< tab name="Console" include="update-unicorn-management-service-console" />}}
-{{< tab name="SAM" include="update-unicorn-management-service-sam" />}}
-{{< /tabs >}}
diff --git a/workshop/layouts/partials/header.html b/workshop/layouts/partials/header.html
deleted file mode 100644
index c1efdfe..0000000
--- a/workshop/layouts/partials/header.html
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ .Hugo.Generator }}
- {{ partial "meta.html" . }}
- {{ partial "favicon.html" . }}
- {{ .Title }} :: {{ .Site.Title }}
-
- {{ $assetBusting := not .Site.Params.disableAssetsBusting }}
-
-
-
-
-
-
-
-
-
- {{with .Site.Params.themeVariant}}
-
- {{end}}
-
-
-
-
-
-
- {{ partial "custom-header.html" . }}
-
-
-
- {{ partial "menu.html" . }}
-
-
-
-```
-
-### Right aligned text
-
-Adding a colon on the right side of the dashes below any heading will right align text for that column.
-
-```markdown
-| Option | Description |
-| ------:| -----------:|
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-```
-
-| Option | Description |
-| ------:| -----------:|
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-
-## Links
-
-### Basic link
-
-```markdown
-[Assemble](http://assemble.io)
-```
-
-Renders to (hover over the link, there is no tooltip):
-
-[Assemble](http://assemble.io)
-
-HTML:
-
-```html
-Assemble
-```
-
-
-### Add a title
-
-```markdown
-[Upstage](https://github.com/upstage/ "Visit Upstage!")
-```
-
-Renders to (hover over the link, there should be a tooltip):
-
-[Upstage](https://github.com/upstage/ "Visit Upstage!")
-
-HTML:
-
-```html
-Upstage
-```
-
-### Named Anchors
-
-Named anchors enable you to jump to the specified anchor point on the same page. For example, each of these chapters:
-
-```markdown
-# Table of Contents
- * [Chapter 1](#chapter-1)
- * [Chapter 2](#chapter-2)
- * [Chapter 3](#chapter-3)
-```
-will jump to these sections:
-
-```markdown
-## Chapter 1
-Content for chapter one.
-
-## Chapter 2
-Content for chapter one.
-
-## Chapter 3
-Content for chapter one.
-```
-**NOTE** that specific placement of the anchor tag seems to be arbitrary. They are placed inline here since it seems to be unobtrusive, and it works.
-
-## Images {#images}
-Images have a similar syntax to links but include a preceding exclamation point.
-
-```markdown
-
-```
-
-
-or
-```markdown
-
-```
-
-
-Like links, Images also have a footnote style syntax
-
-### Alternative usage : note images
-
-```markdown
-![Alt text][id]
-```
-![Alt text][id]
-
-With a reference later in the document defining the URL location:
-
-[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
-
- [id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
-
-### Resizing image
-
-Add HTTP parameters `width` and/or `height` to the link image to resize the image. Values are CSS values (default is `auto`).
-
-```markdown
-
-```
-
-
-
-```markdown
-
-```
-
-
-
-```markdown
-
-```
-
-
-
-### Add CSS classes
-
-Add a HTTP `classes` parameter to the link image to add CSS classes. `shadow`and `border` are available but you could define other ones.
-
-```markdown
-
-```
-
-
-```markdown
-
-```
-
-
-```markdown
-
-```
-
diff --git a/workshop/themes/learn/exampleSite/content/cont/markdown.fr.md b/workshop/themes/learn/exampleSite/content/cont/markdown.fr.md
deleted file mode 100644
index e734b31..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/markdown.fr.md
+++ /dev/null
@@ -1,666 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Syntaxe Markdown
-weight: 15
----
-
-{{% notice note %}}
-Cette page est une copie de la [doc de Grav](http://learn.getgrav.org/content/markdown).
-La seule différence porte sur la personalisation des images ([taille]({{< relref "#resizing-image" >}}), [ajout de classes CSS]({{< relref "#add-css-classes" >}})...)
-Pour des raisons évidentes, cette page n'a pas été traduites en français 😁
-{{% /notice%}}
-
-Let's face it: Writing content for the Web is tiresome. WYSIWYG editors help alleviate this task, but they generally result in horrible code, or worse yet, ugly web pages.
-
-**Markdown** is a better way to write **HTML**, without all the complexities and ugliness that usually accompanies it.
-
-Some of the key benefits are:
-
-1. Markdown is simple to learn, with minimal extra characters so it's also quicker to write content.
-2. Less chance of errors when writing in markdown.
-3. Produces valid XHTML output.
-4. Keeps the content and the visual display separate, so you cannot mess up the look of your site.
-5. Write in any text editor or Markdown application you like.
-6. Markdown is a joy to use!
-
-John Gruber, the author of Markdown, puts it like this:
-
-> The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions. While Markdown’s syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdown’s syntax is the format of plain text email.
-> -- John Gruber
-
-
-Grav ships with built-in support for [Markdown](http://daringfireball.net/projects/markdown/) and [Markdown Extra](https://michelf.ca/projects/php-markdown/extra/). You must enable **Markdown Extra** in your `system.yaml` configuration file
-
-Without further delay, let us go over the main elements of Markdown and what the resulting HTML looks like:
-
-{{% notice info %}}
- Bookmark this page for easy future reference!
-{{% /notice %}}
-
-## Headings
-
-Headings from `h1` through `h6` are constructed with a `#` for each level:
-
-```markdown
-# h1 Heading
-## h2 Heading
-### h3 Heading
-#### h4 Heading
-##### h5 Heading
-###### h6 Heading
-```
-
-Renders to:
-
-# h1 Heading
-## h2 Heading
-### h3 Heading
-#### h4 Heading
-##### h5 Heading
-###### h6 Heading
-
-HTML:
-
-```html
-
h1 Heading
-
h2 Heading
-
h3 Heading
-
h4 Heading
-
h5 Heading
-
h6 Heading
-```
-
-## Comments
-
-Comments should be HTML compatible
-
-```html
-
-```
-Comment below should **NOT** be seen:
-
-
-
-
-## Horizontal Rules
-
-The HTML `` element is for creating a "thematic break" between paragraph-level elements. In markdown, you can create a `` with any of the following:
-
-* `___`: three consecutive underscores
-* `---`: three consecutive dashes
-* `***`: three consecutive asterisks
-
-renders to:
-
-___
-
----
-
-***
-
-
-## Body Copy
-
-Body copy written as normal, plain text will be wrapped with `` tags in the rendered HTML.
-
-So this body copy:
-
-```markdown
-Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
-```
-renders to this HTML:
-
-```html
-
Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
-```
-
-## Emphasis
-
-### Bold
-For emphasizing a snippet of text with a heavier font-weight.
-
-The following snippet of text is **rendered as bold text**.
-
-```markdown
-**rendered as bold text**
-```
-renders to:
-
-**rendered as bold text**
-
-and this HTML
-
-```html
-rendered as bold text
-```
-
-### Italics
-For emphasizing a snippet of text with italics.
-
-The following snippet of text is _rendered as italicized text_.
-
-```markdown
-_rendered as italicized text_
-```
-
-renders to:
-
-_rendered as italicized text_
-
-and this HTML:
-
-```html
-rendered as italicized text
-```
-
-
-### strikethrough
-In GFM (GitHub flavored Markdown) you can do strikethroughs.
-
-```markdown
-~~Strike through this text.~~
-```
-Which renders to:
-
-~~Strike through this text.~~
-
-HTML:
-
-```html
-Strike through this text.
-```
-
-## Blockquotes
-
-For quoting blocks of content from another source within your document.
-
-Add `>` before any text you want to quote.
-
-```markdown
-> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.
-```
-
-Renders to:
-
-> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.
-
-and this HTML:
-
-```html
-
-
Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.
-
-```
-
-Blockquotes can also be nested:
-
-```markdown
-> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.
->
-> > Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.
->
-> Mauris sit amet ligula egestas, feugiat metus tincidunt, luctus libero. Donec congue finibus tempor. Vestibulum aliquet sollicitudin erat, ut aliquet purus posuere luctus.
-```
-
-Renders to:
-
-> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.
->
-> > Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.
->
-> Mauris sit amet ligula egestas, feugiat metus tincidunt, luctus libero. Donec congue finibus tempor. Vestibulum aliquet sollicitudin erat, ut aliquet purus posuere luctus.
-
-## Notices
-
-{{% notice note %}}
-The old mechanism for notices overriding the block quote syntax (`>>>`) has been deprecated. Notices are now handled via a dedicated plugin called [Markdown Notices](https://github.com/getgrav/grav-plugin-markdown-notices)
-{{% /notice %}}
-
-## Lists
-
-### Unordered
-A list of items in which the order of the items does not explicitly matter.
-
-You may use any of the following symbols to denote bullets for each list item:
-
-```markdown
-* valid bullet
-- valid bullet
-+ valid bullet
-```
-
-For example
-
-```markdown
-+ Lorem ipsum dolor sit amet
-+ Consectetur adipiscing elit
-+ Integer molestie lorem at massa
-+ Facilisis in pretium nisl aliquet
-+ Nulla volutpat aliquam velit
- - Phasellus iaculis neque
- - Purus sodales ultricies
- - Vestibulum laoreet porttitor sem
- - Ac tristique libero volutpat at
-+ Faucibus porta lacus fringilla vel
-+ Aenean sit amet erat nunc
-+ Eget porttitor lorem
-```
-Renders to:
-
-+ Lorem ipsum dolor sit amet
-+ Consectetur adipiscing elit
-+ Integer molestie lorem at massa
-+ Facilisis in pretium nisl aliquet
-+ Nulla volutpat aliquam velit
- - Phasellus iaculis neque
- - Purus sodales ultricies
- - Vestibulum laoreet porttitor sem
- - Ac tristique libero volutpat at
-+ Faucibus porta lacus fringilla vel
-+ Aenean sit amet erat nunc
-+ Eget porttitor lorem
-
-And this HTML
-
-```html
-
-
Lorem ipsum dolor sit amet
-
Consectetur adipiscing elit
-
Integer molestie lorem at massa
-
Facilisis in pretium nisl aliquet
-
Nulla volutpat aliquam velit
-
-
Phasellus iaculis neque
-
Purus sodales ultricies
-
Vestibulum laoreet porttitor sem
-
Ac tristique libero volutpat at
-
-
-
Faucibus porta lacus fringilla vel
-
Aenean sit amet erat nunc
-
Eget porttitor lorem
-
-```
-
-### Ordered
-
-A list of items in which the order of items does explicitly matter.
-
-```markdown
-1. Lorem ipsum dolor sit amet
-2. Consectetur adipiscing elit
-3. Integer molestie lorem at massa
-4. Facilisis in pretium nisl aliquet
-5. Nulla volutpat aliquam velit
-6. Faucibus porta lacus fringilla vel
-7. Aenean sit amet erat nunc
-8. Eget porttitor lorem
-```
-Renders to:
-
-1. Lorem ipsum dolor sit amet
-2. Consectetur adipiscing elit
-3. Integer molestie lorem at massa
-4. Facilisis in pretium nisl aliquet
-5. Nulla volutpat aliquam velit
-6. Faucibus porta lacus fringilla vel
-7. Aenean sit amet erat nunc
-8. Eget porttitor lorem
-
-And this HTML:
-
-```html
-
-
Lorem ipsum dolor sit amet
-
Consectetur adipiscing elit
-
Integer molestie lorem at massa
-
Facilisis in pretium nisl aliquet
-
Nulla volutpat aliquam velit
-
Faucibus porta lacus fringilla vel
-
Aenean sit amet erat nunc
-
Eget porttitor lorem
-
-```
-
-**TIP**: If you just use `1.` for each number, Markdown will automatically number each item. For example:
-
-```markdown
-1. Lorem ipsum dolor sit amet
-1. Consectetur adipiscing elit
-1. Integer molestie lorem at massa
-1. Facilisis in pretium nisl aliquet
-1. Nulla volutpat aliquam velit
-1. Faucibus porta lacus fringilla vel
-1. Aenean sit amet erat nunc
-1. Eget porttitor lorem
-```
-
-Renders to:
-
-1. Lorem ipsum dolor sit amet
-2. Consectetur adipiscing elit
-3. Integer molestie lorem at massa
-4. Facilisis in pretium nisl aliquet
-5. Nulla volutpat aliquam velit
-6. Faucibus porta lacus fringilla vel
-7. Aenean sit amet erat nunc
-8. Eget porttitor lorem
-
-## Code
-
-### Inline code
-Wrap inline snippets of code with `` ` ``.
-
-```markdown
-In this example, `` should be wrapped as **code**.
-```
-
-Renders to:
-
-In this example, `` should be wrapped with **code**.
-
-HTML:
-
-```html
-
In this example, <section></section> should be wrapped with code.
-```
-
-### Indented code
-
-Or indent several lines of code by at least four spaces, as in:
-
-
- // Some comments
- line 1 of code
- line 2 of code
- line 3 of code
-
-
-Renders to:
-
- // Some comments
- line 1 of code
- line 2 of code
- line 3 of code
-
-HTML:
-
-```html
-
-
- // Some comments
- line 1 of code
- line 2 of code
- line 3 of code
-
-
-```
-
-
-### Block code "fences"
-
-Use "fences" ```` ``` ```` to block in multiple lines of code.
-
-
-```
-
-### Syntax highlighting
-
-GFM, or "GitHub Flavored Markdown" also supports syntax highlighting. To activate it, simply add the file extension of the language you want to use directly after the first code "fence", ` ```js `, and syntax highlighting will automatically be applied in the rendered HTML. For example, to apply syntax highlighting to JavaScript code:
-
-
-
-Renders to:
-
-```js
-grunt.initConfig({
- assemble: {
- options: {
- assets: 'docs/assets',
- data: 'src/data/*.{json,yml}',
- helpers: 'src/custom-helpers.js',
- partials: ['src/partials/**/*.{hbs,md}']
- },
- pages: {
- options: {
- layout: 'default.hbs'
- },
- files: {
- './': ['src/templates/pages/index.hbs']
- }
- }
- }
-};
-```
-
-## Tables
-Tables are created by adding pipes as dividers between each cell, and by adding a line of dashes (also separated by bars) beneath the header. Note that the pipes do not need to be vertically aligned.
-
-
-```markdown
-| Option | Description |
-| ------ | ----------- |
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-```
-
-Renders to:
-
-| Option | Description |
-| ------ | ----------- |
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-
-And this HTML:
-
-```html
-
-
-
Option
-
Description
-
-
-
data
-
path to data files to supply the data that will be passed into templates.
-
-
-
engine
-
engine to be used for processing templates. Handlebars is the default.
-
-
-
ext
-
extension to be used for dest files.
-
-
-```
-
-### Right aligned text
-
-Adding a colon on the right side of the dashes below any heading will right align text for that column.
-
-```markdown
-| Option | Description |
-| ------:| -----------:|
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-```
-
-| Option | Description |
-| ------:| -----------:|
-| data | path to data files to supply the data that will be passed into templates. |
-| engine | engine to be used for processing templates. Handlebars is the default. |
-| ext | extension to be used for dest files. |
-
-## Links
-
-### Basic link
-
-```markdown
-[Assemble](http://assemble.io)
-```
-
-Renders to (hover over the link, there is no tooltip):
-
-[Assemble](http://assemble.io)
-
-HTML:
-
-```html
-Assemble
-```
-
-
-### Add a title
-
-```markdown
-[Upstage](https://github.com/upstage/ "Visit Upstage!")
-```
-
-Renders to (hover over the link, there should be a tooltip):
-
-[Upstage](https://github.com/upstage/ "Visit Upstage!")
-
-HTML:
-
-```html
-Upstage
-```
-
-### Named Anchors
-
-Named anchors enable you to jump to the specified anchor point on the same page. For example, each of these chapters:
-
-```markdown
-# Table of Contents
- * [Chapter 1](#chapter-1)
- * [Chapter 2](#chapter-2)
- * [Chapter 3](#chapter-3)
-```
-will jump to these sections:
-
-```markdown
-## Chapter 1
-Content for chapter one.
-
-## Chapter 2
-Content for chapter one.
-
-## Chapter 3
-Content for chapter one.
-```
-**NOTE** that specific placement of the anchor tag seems to be arbitrary. They are placed inline here since it seems to be unobtrusive, and it works.
-
-
-## Images {#images}
-Images have a similar syntax to links but include a preceding exclamation point.
-
-```markdown
-
-```
-
-
-or
-```markdown
-
-```
-
-
-Like links, Images also have a footnote style syntax
-
-### Alternative usage : note images
-
-```markdown
-![Alt text][id]
-```
-![Alt text][id]
-
-With a reference later in the document defining the URL location:
-
-[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
-
- [id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
-
-### Resizing image
-
-Add HTTP parameters `width` and/or `height` to the link image to resize the image. Values are CSS values (default is `auto`).
-
-```markdown
-
-```
-
-
-
-```markdown
-
-```
-
-
-
-```markdown
-
-```
-
-
-
-### Add CSS classes
-
-Add a HTTP `classes` parameter to the link image to add CSS classes. `shadow`and `border` are available but you could define other ones.
-
-```markdown
-
-```
-
-
-```markdown
-
-```
-
-
-```markdown
-
-```
-
diff --git a/workshop/themes/learn/exampleSite/content/cont/menushortcuts.en.md b/workshop/themes/learn/exampleSite/content/cont/menushortcuts.en.md
deleted file mode 100644
index e59d6fd..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/menushortcuts.en.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Menu extra shortcuts
-weight: 25
----
-
-You can define additional menu entries or shortcuts in the navigation menu without any link to content.
-
-## Basic configuration
-
-Edit the website configuration `config.toml` and add a `[[menu.shortcuts]]` entry for each link your want to add.
-
-Example from the current website:
-
- [[menu.shortcuts]]
- name = " Github repo"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[menu.shortcuts]]
- name = " Showcases"
- url = "/showcase"
- weight = 11
-
- [[menu.shortcuts]]
- name = " Hugo Documentation"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[menu.shortcuts]]
- name = " Credits"
- url = "/credits"
- weight = 30
-
-By default, shortcuts are preceded by a title. This title can be disabled by setting `disableShortcutsTitle=true`.
-However, if you want to keep the title but change its value, it can be overriden by changing your local i18n translation string configuration.
-
-For example, in your local `i18n/en.toml` file, add the following content
-
- [Shortcuts-Title]
- other = ""
-
-Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo i18n translation strings](https://gohugo.io/content-management/multilingual/#translation-of-strings)
-
-## Configuration for Multilingual mode {#i18n}
-
-When using a multilingual website, you can set different menus for each language. In the `config.toml` file, prefix your menu configuration by `Languages.`.
-
-
-Example from the current website:
-
- [Languages]
- [Languages.en]
- title = "Documentation for Hugo Learn Theme"
- weight = 1
- languageName = "English"
-
- [[Languages.en.menu.shortcuts]]
- name = " Github repo"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[Languages.en.menu.shortcuts]]
- name = " Showcases"
- url = "/showcase"
- weight = 11
-
- [[Languages.en.menu.shortcuts]]
- name = " Hugo Documentation"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[Languages.en.menu.shortcuts]]
- name = " Credits"
- url = "/credits"
- weight = 30
-
- [Languages.fr]
- title = "Documentation du thème Hugo Learn"
- weight = 2
- languageName = "Français"
-
- [[Languages.fr.menu.shortcuts]]
- name = " Repo Github"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[Languages.fr.menu.shortcuts]]
- name = " Vitrine"
- url = "/showcase"
- weight = 11
-
- [[Languages.fr.menu.shortcuts]]
- name = " Documentation Hugo"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[Languages.fr.menu.shortcuts]]
- name = " Crédits"
- url = "/credits"
- weight = 30
-
-Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo multilingual menus](https://gohugo.io/content-management/multilingual/#menus)
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/cont/menushortcuts.fr.md b/workshop/themes/learn/exampleSite/content/cont/menushortcuts.fr.md
deleted file mode 100644
index 8860679..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/menushortcuts.fr.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Raccourcis du menu
-weight: 25
----
-
-Vous pouvez définir des entrées ou raccourcis supplémentaires dans le menu sans avoir besoin d'être lié à un contenu du site.
-
-## Configuration simple
-
-Editez le fichier de configuration `config.toml` et ajoutez une entrée `[[menu.shortcuts]]` pour chaque lien que vous voulez ajouter.
-
-Exemple pour ce site:
-
- [[menu.shortcuts]]
- name = " Github repo"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[menu.shortcuts]]
- name = " Showcases"
- url = "/showcase"
- weight = 11
-
- [[menu.shortcuts]]
- name = " Hugo Documentation"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[menu.shortcuts]]
- name = " Credits"
- url = "/credits"
- weight = 30
-
-Par défaut, les raccourcis sont précédés par un titre. Ce titre peut être désactivé en ajouter le paramètre `disableShortcutsTitle=true` dans la section `params` de votre `config.toml`.
-Cependant, si vous voulez garder le titre mais changer sa valeur, vous pouvez modifier votre configuration multilangue locale en changeant les *translation string*.
-
-Par exemple, dans votre fichier local `i18n/en.toml`, ajouter le contenu
-
- [Shortcuts-Title]
- other = ""
-
-Plus d'infos sur [les menus Hugo](https://gohugo.io/extras/menus/) et sur [les translations strings](https://gohugo.io/content-management/multilingual/#translation-of-strings)
-
-## Configuration pour le mode multi-langue {#i18n}
-
-Quand vous utilisez un site multi-langue, vous pouvez avoir des menus différents pour chaque langage. Dans le fichier de configuration `config.toml`, préfixez votre configuration par `Languages.`.
-
-
-Par exemple, avec ce site :
-
- [Languages]
- [Languages.en]
- title = "Documentation for Hugo Learn Theme"
- weight = 1
- languageName = "English"
-
- [[Languages.en.menu.shortcuts]]
- name = " Github repo"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[Languages.en.menu.shortcuts]]
- name = " Showcases"
- url = "/showcase"
- weight = 11
-
- [[Languages.en.menu.shortcuts]]
- name = " Hugo Documentation"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[Languages.en.menu.shortcuts]]
- name = " Credits"
- url = "/credits"
- weight = 30
-
- [Languages.fr]
- title = "Documentation du thème Hugo Learn"
- weight = 2
- languageName = "Français"
-
- [[Languages.fr.menu.shortcuts]]
- name = " Repo Github"
- identifier = "ds"
- url = "https://github.com/matcornic/hugo-theme-learn"
- weight = 10
-
- [[Languages.fr.menu.shortcuts]]
- name = " Vitrine"
- url = "/showcase"
- weight = 11
-
- [[Languages.fr.menu.shortcuts]]
- name = " Documentation Hugo"
- identifier = "hugodoc"
- url = "https://gohugo.io/"
- weight = 20
-
- [[Languages.fr.menu.shortcuts]]
- name = " Crédits"
- url = "/credits"
- weight = 30
-
-Plus d'infos sur [les menus Hugo](https://gohugo.io/extras/menus/) et les [menus multi-langue Hugo](https://gohugo.io/content-management/multilingual/#menus)
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/cont/pages/_index.en.md b/workshop/themes/learn/exampleSite/content/cont/pages/_index.en.md
deleted file mode 100644
index ad6a1b5..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/pages/_index.en.md
+++ /dev/null
@@ -1,166 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Pages organization
-weight: 5
----
-
-In **Hugo**, pages are the core of your site. Once it is configured, pages are definitely the added value to your documentation site.
-
-## Folders
-
-Organize your site like [any other Hugo project](https://gohugo.io/content/organization/). Typically, you will have a *content* folder with all your pages.
-
- content
- ├── level-one
- │ ├── level-two
- │ │ ├── level-three
- │ │ │ ├── level-four
- │ │ │ │ ├── _index.md <-- /level-one/level-two/level-three/level-four
- │ │ │ │ ├── page-4-a.md <-- /level-one/level-two/level-three/level-four/page-4-a
- │ │ │ │ ├── page-4-b.md <-- /level-one/level-two/level-three/level-four/page-4-b
- │ │ │ │ └── page-4-c.md <-- /level-one/level-two/level-three/level-four/page-4-c
- │ │ │ ├── _index.md <-- /level-one/level-two/level-three
- │ │ │ ├── page-3-a.md <-- /level-one/level-two/level-three/page-3-a
- │ │ │ ├── page-3-b.md <-- /level-one/level-two/level-three/page-3-b
- │ │ │ └── page-3-c.md <-- /level-one/level-two/level-three/page-3-c
- │ │ ├── _index.md <-- /level-one/level-two
- │ │ ├── page-2-a.md <-- /level-one/level-two/page-2-a
- │ │ ├── page-2-b.md <-- /level-one/level-two/page-2-b
- │ │ └── page-2-c.md <-- /level-one/level-two/page-2-c
- │ ├── _index.md <-- /level-one
- │ ├── page-1-a.md <-- /level-one/page-1-a
- │ ├── page-1-b.md <-- /level-one/page-1-b
- │ └── page-1-c.md <-- /level-one/page-1-c
- ├── _index.md <-- /
- └── page-top.md <-- /page-top
-
-{{% notice note %}}
-`_index.md` is required in each folder, it’s your “folder home page”
-{{% /notice %}}
-
-## Types
-
-**Hugo-theme-learn** defines two types of pages. *Default* and *Chapter*. Both can be used at any level of the documentation, the only difference being layout display.
-
-A **Chapter** displays a page meant to be used as introduction for a set of child pages. Commonly, it contains a simple title and a catch line to define content that can be found under it.
-You can define any HTML as prefix for the menu. In the example below, it's just a number but that could be an [icon](https://fortawesome.github.io/Font-Awesome/).
-
-
-
-```markdown
-+++
-title = "Basics"
-chapter = true
-weight = 5
-pre = "1. "
-+++
-
-### Chapter 1
-
-# Basics
-
-Discover what this Hugo theme is all about and the core-concepts behind it.
-```
-
-To tell **Hugo-theme-learn** to consider a page as a chapter, set `chapter=true` in the Front Matter of the page.
-
-A **Default** page is any other content page.
-
-
-
-```toml
-+++
-title = "Installation"
-weight = 15
-+++
-```
-
-The following steps are here to help you initialize your new website. If you don't know Hugo at all, we strongly suggest you to train by following this [great documentation for beginners](https://gohugo.io/overview/quickstart/).
-
-## Create your project
-
-Hugo provides a `new` command to create a new website.
-
-```
-hugo new site
-```
-
-**Hugo-theme-learn** provides [archetypes]({{< relref "cont/archetypes.en.md" >}}) to help you create this kind of pages.
-
-## Front Matter configuration
-
-Each Hugo page has to define a [Front Matter](https://gohugo.io/content/front-matter/) in *yaml*, *toml* or *json*.
-
-**Hugo-theme-learn** uses the following parameters on top of Hugo ones :
-
-```toml
-+++
-# Table of content (toc) is enabled by default. Set this parameter to true to disable it.
-# Note: Toc is always disabled for chapter pages
-disableToc = "false"
-# If set, this will be used for the page's menu entry (instead of the `title` attribute)
-menuTitle = ""
-# The title of the page in menu will be prefixed by this HTML content
-pre = ""
-# The title of the page in menu will be postfixed by this HTML content
-post = ""
-# Set the page as a chapter, changing the way it's displayed
-chapter = false
-# Hide a menu entry by setting this to true
-hidden = false
-# Display name of this page modifier. If set, it will be displayed in the footer.
-LastModifierDisplayName = ""
-# Email of this page modifier. If set with LastModifierDisplayName, it will be displayed in the footer
-LastModifierEmail = ""
-+++
-```
-
-### Add icon to a menu entry
-
-In the page frontmatter, add a `pre` param to insert any HTML code before the menu label. The example below uses the Github icon.
-
-```toml
-+++
-title = "Github repo"
-pre = " "
-+++
-```
-
-
-
-### Ordering sibling menu/page entries
-
-Hugo provides a [flexible way](https://gohugo.io/content/ordering/) to handle order for your pages.
-
-The simplest way is to set `weight` parameter to a number.
-
-```toml
-+++
-title = "My page"
-weight = 5
-+++
-```
-
-### Using a custom title for menu entries
-
-By default, **Hugo-theme-learn** will use a page's `title` attribute for the menu item (or `linkTitle` if defined).
-
-But a page's title has to be descriptive on its own while the menu is a hierarchy.
-We've added the `menuTitle` parameter for that purpose:
-
-For example (for a page named `content/install/linux.md`):
-
-```toml
-+++
-title = "Install on Linux"
-menuTitle = "Linux"
-+++
-```
-
-## Homepage
-
-To configure your home page, you basically have three choices:
-
-1. Create an `_index.md` document in `content` folder and fill the file with *Markdown content*
-2. Create an `index.html` file in the `static` folder and fill the file with *HTML content*
-3. Configure your server to automatically redirect home page to one your documentation page
diff --git a/workshop/themes/learn/exampleSite/content/cont/pages/_index.fr.md b/workshop/themes/learn/exampleSite/content/cont/pages/_index.fr.md
deleted file mode 100644
index 9065908..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/pages/_index.fr.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Organisation des pages
-weight: 5
----
-
-Dans **Hugo**, les pages sont le coeur de votre site. Une fois configurées, les pages sont la valeur ajoutée de votre site de documentation.
-
-## Dossiers
-
-Organisez votre site comment n'importe quel autre [projet Hugo](https://gohugo.io/content/organization/). Typiquement, vous allez avoir un dossier *content* avec vos pages.
-
- content
- ├── niveau-un
- │ ├── niveau-deux
- │ │ ├── niveau-trois
- │ │ │ ├── niveau-quatre
- │ │ │ │ ├── _index.md <-- /niveau-un/niveau-deux/niveau-trois/niveau-quatre
- │ │ │ │ ├── page-4-a.md <-- /niveau-un/niveau-deux/niveau-trois/niveau-quatre/page-4-a
- │ │ │ │ ├── page-4-b.md <-- /niveau-un/niveau-deux/niveau-trois/niveau-quatre/page-4-b
- │ │ │ │ └── page-4-c.md <-- /niveau-un/niveau-deux/niveau-trois/niveau-quatre/page-4-c
- │ │ │ ├── _index.md <-- /niveau-un/niveau-deux/niveau-trois
- │ │ │ ├── page-3-a.md <-- /niveau-un/niveau-deux/niveau-trois/page-3-a
- │ │ │ ├── page-3-b.md <-- /niveau-un/niveau-deux/niveau-trois/page-3-b
- │ │ │ └── page-3-c.md <-- /niveau-un/niveau-deux/niveau-trois/page-3-c
- │ │ ├── _index.md <-- /niveau-un/niveau-deux
- │ │ ├── page-2-a.md <-- /niveau-un/niveau-deux/page-2-a
- │ │ ├── page-2-b.md <-- /niveau-un/niveau-deux/page-2-b
- │ │ └── page-2-c.md <-- /niveau-un/niveau-deux/page-2-c
- │ ├── _index.md <-- /niveau-un
- │ ├── page-1-a.md <-- /niveau-un/page-1-a
- │ ├── page-1-b.md <-- /niveau-un/page-1-b
- │ └── page-1-c.md <-- /niveau-un/page-1-c
- ├── _index.md <-- /
- └── premiere-page.md <-- /premiere-page
-
-{{% notice note %}}
-Le fichier `_index.md` est obligatoire dans chaque dossier, c'est en quelques rotes votre page d'accueil pour le dossier.
-{{% /notice %}}
-
-## Types
-
-**Hugo-theme-learn** définit deux types de pages. *Défaut* et *Chapitre*. Les deux sont utilisables à n'importe quel niveau du site, la seule différence est dans l'affichage.
-
-Un **Chapitre** affiche une page vouée à être une introduction pour un ensemble de pages filles. Habituellement, il va seulement contenir un titre et un résumé de la section.
-Vous pouvez définir n'importe quel contenu HTML comme préfixe de l'entrée du menu. Dans l'exemple ci-dessous, c'est juste un nombre mais vous pourriez utiliser une [icône](https://fortawesome.github.io/Font-Awesome/).
-
-
-
-```markdown
-+++
-title = "Démarrage"
-weight = 5
-pre = "1. "
-chapter = true
-+++
-
-### Chapitre 1
-
-# Démarrage
-
-Découvrez comment utiliser ce thème Hugo et apprenez en les concepts
-```
-
-Pour dire à **Hugo-theme-learn** de considérer la page comme un chapitre, configure `chapter=true` dans le Front Matter de la page.
-
-Une page **Défaut** est n'importe quelle autre page.
-
-
-
- +++
- title = "Installation"
- weight = 15
- +++
-
- The following steps are here to help you initialize your new website. If you don't know Hugo at all, we strongly suggest you to train by following this [great documentation for beginners](https://gohugo.io/overview/quickstart/).
-
- ## Create your project
-
- Hugo provides a `new` command to create a new website.
-
- ```
- hugo new site
- ```
-
-**Hugo-theme-learn** fournit des [archétypes]({{< relref "cont/archetypes.fr.md" >}}) pour vous aider à créer ce type de pages.
-
-## Configuration des Front Matter
-
-Chaque page Hugo doit définir un [Front Matter](https://gohugo.io/content/front-matter/) dans le format *yaml*, *toml* ou *json*.
-
-**Hugo-theme-learn** utilise les paramètres suivant en plus de ceux définis par Hugo:
-
-```toml
-+++
-# Le Sommaire (table of content = toc) est activé par défaut. Modifier ce paramètre à true pour le désactiver.
-# Note: Le sommaire est toujours désactivé pour les chapitres
-disableToc = "false"
-# Le titre de la page dans le menu sera préfixé par ce contentu HTML
-pre = ""
-# Le titre de la page dans le menu sera suffixé par ce contentu HTML
-post = ""
-# Modifier le type de la page pour changer l'affichage
-chapter = false
-# Cache la page du menu
-hidden = false
-# Nom de la personne qui a modifié la page. Quand configuré, sera affiché dans le pied de page.
-LastModifierDisplayName = ""
-# Email de la personne qui a modifié la page. Quand configuré, sera affiché dans le pied de page.
-LastModifierEmail = ""
-+++
-```
-
-### Ajouter une icône à une entrée du menu
-
-Dans le Front Matter, ajouter un paramètre `pre` pour insérer du code HTML qui s'affichera avant le label du menu. L'exemple ci-dessous utilise l'icône de Github.
-
-```toml
-+++
-title = "Repo Github"
-pre = " "
-+++
-```
-
-
-
-### Ordonner les entrées dans le menu
-
-Hugo permet de modifier facilement [l'ordre des menu](https://gohugo.io/content/ordering/).
-
-La manière la plus simple est de configurer le paramètre `weight` avec un nombre.
-
-```toml
-+++
-title = "Ma page"
-weight = 5
-+++
-```
-
-## Page d'accueil
-
-Pour configurer votre page d'accueil, vous avez trois choix:
-
-1. Créer une page `_index.md` dans le dossier `content` et remplissez le fichier avec du *contenu Markdown*
-2. Créer une page `index.html` dans le dossier `static` et remplissez le fichier avec du *contenu HTML*
-3. Configurez votre serveur pour automatiquement rediriger la page d'accueil vers l'une de vos pages.
diff --git a/workshop/themes/learn/exampleSite/content/cont/pages/images/frontmatter-icon.png b/workshop/themes/learn/exampleSite/content/cont/pages/images/frontmatter-icon.png
deleted file mode 100644
index a8dd653..0000000
Binary files a/workshop/themes/learn/exampleSite/content/cont/pages/images/frontmatter-icon.png and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-chapter.png b/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-chapter.png
deleted file mode 100644
index 593d7e2..0000000
Binary files a/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-chapter.png and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-default.png b/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-default.png
deleted file mode 100644
index 396e788..0000000
Binary files a/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-default.png and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/cont/tags.en.md b/workshop/themes/learn/exampleSite/content/cont/tags.en.md
deleted file mode 100644
index 02972bb..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/tags.en.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-date: 2018-11-29T08:41:44+01:00
-title: Tags
-weight: 40
-tags: ["documentation", "tutorial"]
----
-
-*Learn theme* support one default taxonomy of gohugo: the *tag* feature.
-
-## Configuration
-
-Just add tags to any page:
-
-```markdown
----
-date: 2018-11-29T08:41:44+01:00
-title: Theme tutorial
-weight: 15
-tags: ["tutorial", "theme"]
----
-```
-
-## Behavior
-
-
-The tags are displayed at the top of the page, in their insertion order.
-
-Each tag is a link to a *Taxonomy* page displaying all the articles with the given tag.
-
-## List all the tags
-
-In the `config.toml` file you can add a shortcut to display all the tags
-
-```toml
-[[menu.shortcuts]]
-name = " Tags"
-url = "/tags"
-weight = 30
-```
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/cont/tags.fr.md b/workshop/themes/learn/exampleSite/content/cont/tags.fr.md
deleted file mode 100644
index d19b396..0000000
--- a/workshop/themes/learn/exampleSite/content/cont/tags.fr.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-date: 2018-11-29T08:41:44+01:00
-title: Tags
-weight: 40
-tags: ["documentation", "tutorial"]
----
-
-
-Le *thème Learn* supporte une des taxonomy par défaut de GoHugo : les tags.
-
-## Configuration
-
-Il suffit d'ajouter un tableau de tags sur la page :
-
-```markdown
----
-date: 2018-11-29T08:41:44+01:00
-title: Tutoriel pour le thème
-weight: 15
-tags: ["tutoriel", "theme"]
----
-```
-
-## Comportement
-
-Les tags sont affichés en haut de la page, dans l'ordre dans lequel ils ont été saisis.
-
-Chaque tag est un lien vers une page *Taxonomy*, qui affiche tous les article avec ce tag.
-
-
-## Liste des tags
-
-Il est possible de rajouter un raccourci dans le fichier `config.toml` afin d'afficher une page listant tous les tags
-
-```toml
-[[menu.shortcuts]]
-name = " Tags"
-url = "/tags"
-weight = 30
-```
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/credits.en.md b/workshop/themes/learn/exampleSite/content/credits.en.md
deleted file mode 100644
index 1a489fc..0000000
--- a/workshop/themes/learn/exampleSite/content/credits.en.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Credits
-disableToc: true
----
-
-## Contributors
-
-Thanks to them for making Open Source Software a better place !
-
-{{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}}
-
-And a special thanks to [@vjeantet](https://github.com/vjeantet) for his work on [docdock](https://github.com/vjeantet/hugo-theme-docdock), a fork of hugo-theme-learn. v2.0.0 of this theme is inspired by his work.
-
-## Packages and libraries
-* [mermaid](https://knsv.github.io/mermaid) - generation of diagram and flowchart from text in a similar manner as markdown
-* [font awesome](http://fontawesome.io/) - the iconic font and CSS framework
-* [jQuery](https://jquery.com) - The Write Less, Do More, JavaScript Library
-* [lunr](https://lunrjs.com) - Lunr enables you to provide a great search experience without the need for external, server-side, search services...
-* [horsey](https://bevacqua.github.io/horsey/) - Progressive and customizable autocomplete component
-* [clipboard.js](https://zenorocha.github.io/clipboard.js) - copy text to clipboard
-* [highlight.js](https://highlightjs.org) - Javascript syntax highlighter
-* [modernizr](https://modernizr.com) - A JavaScript toolkit that allows web developers to use new CSS3 and HTML5 features while maintaining a fine level of control over browsers that don't support
-
-## Tooling
-
-* [Netlify](https://www.netlify.com) - Continuous deployement and hosting of this documentation
-* [Hugo](https://gohugo.io/)
-
diff --git a/workshop/themes/learn/exampleSite/content/credits.fr.md b/workshop/themes/learn/exampleSite/content/credits.fr.md
deleted file mode 100644
index 536f093..0000000
--- a/workshop/themes/learn/exampleSite/content/credits.fr.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Crédits
-disableToc: true
----
-
-## Contributeurs
-
-Merci à eux de rendre le monde Open Source meilleur !
-
-{{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}}
-
-Et un grand merci à [@vjeantet](https://github.com/vjeantet) pour son travail sur [docdock](https://github.com/vjeantet/hugo-theme-docdock), un fork de _hugo-theme-learn_. La v2.0.0 du thème est en grande partie inspirée de son travail.
-
-## Packages et librairies
-* [mermaid](https://knsv.github.io/mermaid) - géneration de diagrames et graphiques à partir de texte similaire à Markdown
-* [font awesome](http://fontawesome.io/) - Le framework de polices iconiques
-* [jQuery](https://jquery.com) - La plus connue des librairies Javascript
-* [lunr](https://lunrjs.com) - Lunr fournit des fonctions de recherche sans service externe
-* [horsey](https://bevacqua.github.io/horsey/) - Autocomplétion de composants (utiliser pour les suggestions de recherche)
-* [clipboard.js](https://zenorocha.github.io/clipboard.js) - Copier le texte dans le presse-papier
-* [highlight.js](https://highlightjs.org) - Mise en valeur de syntaxes
-* [modernizr](https://modernizr.com) - Une boite à outil Javascript qui permet aux développeurs d'utiliser les dernières fonctionnalités de CSS et HTML5, même sur de vieux navigateurs.
-
-## Outils
-
-* [Netlify](https://www.netlify.com) - Déploiement continue et hébergement de cette documentation
-* [Hugo](https://gohugo.io/)
-
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/_index.en.md
deleted file mode 100644
index 754bb0f..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/_index.en.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Shortcodes
-pre: "3. "
-weight: 15
----
-
-Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities.
-
-But this happens to be a bad idea. Everyone uses Markdown because it's pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible.
-
-To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). A shortcode is a simple snippet inside a page.
-
-**Hugo-theme-learn** provides multiple shortcodes on top of existing ones.
-
-{{%children style="h2" description="true" %}}
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/_index.fr.md
deleted file mode 100644
index b084d9b..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/_index.fr.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-date: 2016-04-09T16:50:16+02:00
-title: Shortcodes
-pre: "3. "
-weight: 15
----
-
-Hugo utilise Markdown pour son format simple. Cependant, il y a beaucoup de chose que Markdown ne supporte pas bien. On pourrait utiliser du HTML pur pour améliorer les capacité du Markdown.
-
-Mais c'est probablement une mauvaise idée. Tout le monde utilise le Markdown parce que c'est pur et simple à lire même lorsqu'il est affiché en texte brut. Vous devez éviter le HTML autant que possible pour garder le contenu simple.
-
-Cependant, pour éviter les limitations, Hugo a créé les [shortcodes](https://gohugo.io/extras/shortcodes/). Un shortcode est un bout de code (*snippet*) dans une page.
-
-**Hugo-theme-learn** fournit de multiple shortcodes en plus de ceux existant.
-
-{{%children style="h2" description="true" %}}
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3
deleted file mode 100644
index 94e3d0e..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf
deleted file mode 100644
index 97377e9..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf
deleted file mode 100644
index e589c73..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png
deleted file mode 100644
index 48acf34..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4
deleted file mode 100644
index 9f1fe56..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.md
deleted file mode 100644
index 81886b0..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Attachments
-description : "The Attachments shortcode displays a list of files attached to a page."
----
-
-The Attachments shortcode displays a list of files attached to a page.
-
-{{% attachments /%}}
-
-## Usage
-
-The shortcurt lists files found in a **specific folder**.
-Currently, it support two implementations for pages
-
-1. If your page is a markdown file, attachements must be place in a **folder** named like your page and ending with **.files**.
-
- > * content
- > * _index.md
- > * page.files
- > * attachment.pdf
- > * page.md
-
-2. If your page is a **folder**, attachements must be place in a nested **'files'** folder.
-
- > * content
- > * _index.md
- > * page
- > * index.md
- > * files
- > * attachment.pdf
-
-Be aware that if you use a multilingual website, you will need to have as many folders as languages.
-
-That's all !
-
-### Parameters
-
-| Parameter | Default | Description |
-|:--|:--|:--|
-| title | "Attachments" | List's title |
-| style | "" | Choose between "orange", "grey", "blue" and "green" for nice style |
-| pattern | ".*" | A regular expressions, used to filter the attachments by file name.
The **pattern** parameter value must be [regular expressions](https://en.wikipedia.org/wiki/Regular_expression).
-
-For example:
-
-* To match a file suffix of 'jpg', use **.*jpg** (not *.jpg).
-* To match file names ending in 'jpg' or 'png', use **.*(jpg|png)**
-
-### Examples
-
-#### List of attachments ending in pdf or mp4
-
-
- {{%/*attachments title="Related files" pattern=".*(pdf|mp4)"/*/%}}
-
-renders as
-
-{{%attachments title="Related files" pattern=".*(pdf|mp4)"/%}}
-
-#### Colored styled box
-
- {{%/*attachments style="orange" /*/%}}
-
-renders as
-
-{{% attachments style="orange" /%}}
-
-
- {{%/*attachments style="grey" /*/%}}
-
-renders as
-
-{{% attachments style="grey" /%}}
-
- {{%/*attachments style="blue" /*/%}}
-
-renders as
-
-{{% attachments style="blue" /%}}
-
- {{%/*attachments style="green" /*/%}}
-
-renders as
-
-{{% attachments style="green" /%}}
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3
deleted file mode 100644
index 94e3d0e..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf
deleted file mode 100644
index 97377e9..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf
deleted file mode 100644
index e589c73..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png
deleted file mode 100644
index 48acf34..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4
deleted file mode 100644
index 9f1fe56..0000000
Binary files a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 and /dev/null differ
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.md
deleted file mode 100644
index c240939..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Attachments (Pièces jointes)
-description : "The Attachments shortcode displays a list of files attached to a page."
----
-
-Le shortcode *Attachments* affiche une liste de pièces jointes d'une page.
-
-{{% attachments /%}}
-
-## Utilisation
-
-Le shortcode affiche la liste de fichiers trouvés dans un **dossier spécifique**
-A l'heure actuelle, il supporte deux implémentations
-
-1. Si votre page est un fichier Markdown, les pièces jointes doivent être placée dans un **dossier** nommé comme le nom de la page et suffixé par **.files**.
-
- > * content
- > * _index.md
- > * page.files
- > * attachment.pdf
- > * page.md
-
-2. Si votre page est un **dossier**, les pièces jointes doivent être placées dans un dossier fils **'files'**.
-
- > * content
- > * _index.md
- > * page
- > * index.md
- > * files
- > * attachment.pdf
-
-Attention, si votre site est multi-langue, vous devrez avec autant de dossier qu'il y a de langues.
-
-C'est tout !
-
-### Paramètres
-
-| Paramètre | Défaut | Description |
-|:--|:--|:--|
-| title | "Pièces jointes" | Titre de la liste |
-| style | "" | Choisir entre "orange", "grey", "blue" et "green" pour un style plus sympa |
-| pattern | ".*" | Une expression régulière, utilisée pour filtrer les pièces jointes par leur nom de fichier.
Le paramètre **pattern** doit être une [expression régulière](https://en.wikipedia.org/wiki/Regular_expression).
-
-Par exemple:
-
-* Pour trouver les fichiers avec le suffixe 'jpg', utilisez **.*jpg** (pas *.jpg).
-* Pour trouver les fichiers avec les suffixe 'jpg' ou 'png', utilisez **.*(jpg|png)**
-
-### Exemples
-
-#### Lister les pièces jointes de type pdf ou mp4
-
-
- {{%/*attachments title="Fichiers associés" pattern=".*(pdf|mp4)"/*/%}}
-
-s'affiche comme
-
-{{%attachments title="Fichiers associés" pattern=".*(pdf|mp4)"/%}}
-
-#### Modifier le style
-
- {{%/*attachments style="orange" /*/%}}
-
-s'affiche comme
-
-{{% attachments style="orange" /%}}
-
-
- {{%/*attachments style="grey" /*/%}}
-
-s'affiche comme
-
-{{% attachments style="grey" /%}}
-
- {{%/*attachments style="blue" /*/%}}
-
-s'affiche comme
-
-{{% attachments style="blue" /%}}
-
- {{%/*attachments style="green" /*/%}}
-
-s'affiche comme
-
-{{% attachments style="green" /%}}
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/button.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/button.en.md
deleted file mode 100644
index 9fb92bd..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/button.en.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Button
-description : "Nice buttons on your page."
----
-
-A button is a just a clickable button with optional icon.
-
-```
-{{%/* button href="https://getgrav.org/" */%}}Get Grav{{%/* /button */%}}
-{{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Get Grav with icon{{%/* /button */%}}
-{{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Get Grav with icon right{{%/* /button */%}}
-```
-
-{{% button href="https://getgrav.org/" %}}Get Grav{{% /button %}}
-{{% button href="https://getgrav.org/" icon="fas fa-download" %}}Get Grav with icon{{% /button %}}
-{{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Get Grav with icon right{{% /button %}}
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/button.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/button.fr.md
deleted file mode 100644
index 66e55af..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/button.fr.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Button (Bouton)
-description : "De beaux boutons sur votre page."
----
-
-Le shortcode *button* est simplement un bouton cliquable avec une icône optionnelle.
-
-```
-{{%/* button href="https://getgrav.org/" */%}}Téléchargez Grav{{%/* /button */%}}
-{{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Téléchargez Grav avec icône{{%/* /button */%}}
-{{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Téléchargez Grav avec icône à droite{{%/* /button */%}}
-```
-
-{{% button href="https://getgrav.org/" %}}Téléchargez Grav{{% /button %}}
-{{% button href="https://getgrav.org/" icon="fas fa-download" %}}Téléchargez Grav avec icône{{% /button %}}
-{{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Téléchargez Grav avec icône à droite{{% /button %}}
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.en.md
deleted file mode 100644
index 5d6139b..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.en.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title : Children
-description : List the child pages of a page
----
-
-Use the children shortcode to list the child pages of a page and the further descendants (children's children). By default, the shortcode displays links to the child pages.
-
-## Usage
-
-| Parameter | Default | Description |
-|:--|:--|:--|
-| page | _current_ | Specify the page name (section name) to display children for |
-| style | "li" | Choose the style used to display descendants. It could be any HTML tag name |
-| showhidden | "false" | When true, child pages hidden from the menu will be displayed |
-| description | "false" | Allows you to include a short text under each page in the list. when no description exists for the page, children shortcode takes the first 70 words of your content. [read more info about summaries on gohugo.io](https://gohugo.io/content/summaries/) |
-| depth | 1 | Enter a number to specify the depth of descendants to display. For example, if the value is 2, the shortcode will display 2 levels of child pages. **Tips:** set 999 to get all descendants|
-| sort | none | Sort Children By
Weight - to sort on menu order
Name - to sort alphabetically on menu label
Identifier - to sort alphabetically on identifier set in frontmatter
URL - URL
|
-
-## Demo
-
- {{%/* children */%}}
-
-{{% children %}}
-
- {{%/* children description="true" */%}}
-
-{{%children description="true" %}}
-
- {{%/* children depth="3" showhidden="true" */%}}
-
-{{% children depth="3" showhidden="true" %}}
-
- {{%/* children style="h2" depth="3" description="true" */%}}
-
-{{% children style="h2" depth="3" description="true" %}}
-
- {{%/* children style="div" depth="999" */%}}
-
-{{% children style="div" depth="999" %}}
-
-
-
-
-
-
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.fr.md
deleted file mode 100644
index 672c5ad..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/_index.fr.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title : Children (Pages filles)
-description : Liste les pages filles de la page
----
-
-Utilisez le shortcode *children* pour lister les pages filles de la page et tous ses déscendants (pages filles de pages filles). Par défaut, le shortcode affiche des liens vers les pages filles.
-
-## Utilisation
-
-| Paramètre | Défaut | Description |
-|:--|:--|:--|
-| page | _current_ | Spécifie le nom de la page (nom de la section) à afficher |
-| style | "li" | Choisi le style à utiliser pour afficher les descendants. Cela peut être n'importe quel balise HTML |
-| showhidden | "false" | Quand *true*, pages filles cachées dans le menu seront affichées quand même |
-| description | "false" | Permet d'inclure le texte de la description de la page sous chaque entré de la liste. quand aucune description existe pour la page, le shortcode prend les 70 premiers mots du contenu. [plus d'infos sur gohugo.io](https://gohugo.io/content/summaries/) |
-| depth | 1 | Nombre de descendants à afficher. Par exemple, si la valeur est 2, le shortcode va afficher 2 niveaux de pages filels. **Astuce:** Utilisez 999 pour avoir tous les descendants|
-| sort | | Tri les pages filles par
Weight - Poids
Name - Nom
Identifier - Trier alphabétiquement par identifiant configuré dans le front matter
URL - URL
|
-
-## Démo
-
- {{%/* children */%}}
-
-{{% children %}}
-
- {{%/* children description="true" */%}}
-
-{{%children description="true" %}}
-
- {{%/* children depth="3" showhidden="true" */%}}
-
-{{% children depth="3" showhidden="true" %}}
-
- {{%/* children style="h2" depth="3" description="true" */%}}
-
-{{% children style="h2" depth="3" description="true" %}}
-
- {{%/* children style="div" depth="999" */%}}
-
-{{% children style="div" depth="999" %}}
-
-
-
-
-
-
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.en.md
deleted file mode 100644
index d0c5179..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1"
-description = "This is a demo child page"
-+++
-
-This is a demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md
deleted file mode 100644
index 7737f50..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md
deleted file mode 100644
index a4982f9..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1"
-description = "This is a demo child page"
-+++
-
-This is a demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md
deleted file mode 100644
index e39cb58..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md
deleted file mode 100644
index 5ce56f4..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1"
-description = "This is a demo child page"
-+++
-
-This is a demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md
deleted file mode 100644
index 31d2cd1..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md
deleted file mode 100644
index d5d9ab2..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1-1"
-description = "This is a demo child page"
-+++
-
-This is a demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md
deleted file mode 100644
index 3b0f7f0..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1-1"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md
deleted file mode 100644
index 883b5b2..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1-1-1"
-description = "This is a demo child page"
-+++
-
-This is a demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md
deleted file mode 100644
index 5a19617..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 1-1-1-1-1"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.en.md
deleted file mode 100644
index a96140c..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.en.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = "page 2"
-description = ""
-+++
-
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
- proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md
deleted file mode 100644
index a96140c..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = "page 2"
-description = ""
-+++
-
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
- proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.en.md
deleted file mode 100644
index f603d4c..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page test 3"
-description = "This is a page test"
-+++
-
-This is a test 3 demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md
deleted file mode 100644
index 6d649e8..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page test 3"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo test 3
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.en.md
deleted file mode 100644
index f36f861..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 3"
-description = "This is a demo child page"
-+++
-
-This is a demo child page, not displayed in the menu
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md
deleted file mode 100644
index 1501cc8..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page 3"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.en.md
deleted file mode 100644
index b9f042d..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.en.md
+++ /dev/null
@@ -1,7 +0,0 @@
-+++
-title = "page 4"
-description = "This is a demo child page"
-hidden = true
-+++
-
-This is a demo child page, not displayed in the menu
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md
deleted file mode 100644
index 6735e50..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md
+++ /dev/null
@@ -1,7 +0,0 @@
-+++
-title = "page 4"
-description = "Ceci est une page test"
-hidden = true
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/test.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/test.en.md
deleted file mode 100644
index 045f0a1..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/test.en.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page test"
-description = "This is a page test"
-+++
-
-This is a test demo child page
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/children/test.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/children/test.fr.md
deleted file mode 100644
index dd6cc3c..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/children/test.fr.md
+++ /dev/null
@@ -1,6 +0,0 @@
-+++
-title = "page test"
-description = "Ceci est une page test"
-+++
-
-Ceci est une page de demo
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/expand.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/expand.en.md
deleted file mode 100644
index dff1906..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/expand.en.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title : Expand
-description : "Displays an expandable/collapsible section of text on your page"
----
-
-The Expand shortcode displays an expandable/collapsible section of text on your page.
-Here is an example
-
-{{%expand%}}
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
-tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
-quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
-consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
-cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
-proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-{{%/expand%}}
-
-
-## Usage
-
-
-this shortcode takes exactly one optional parameter to define the text that appears next to the expand/collapse icon. (default is "Expand me...")
-
- {{%/*expand "Is this learn theme rocks ?" */%}}Yes !.{{%/* /expand*/%}}
-
-{{%expand "Is this learn theme rocks ?" %}}Yes !{{% /expand%}}
-
-# Demo
-
- {{%/*expand*/%}}
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
- proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- {{%/* /expand*/%}}
-
-
-{{%expand%}}Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
-tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
-quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
-consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
-cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
-proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{{% /expand%}}
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/expand.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/expand.fr.md
deleted file mode 100644
index efb86a3..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/expand.fr.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title : Expand
-description : "Affiche une section de texte qui se plie et se déplie"
----
-
-Le shortcode *Expand* affiche une section de texte qui se plie et se déplie.
-Ci-dessous un exemple.
-
-{{%expand%}}
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
-tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
-quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
-consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
-cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
-proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-{{%/expand%}}
-
-
-## Utilisation
-
-
-Ce shortcode prends exactement un paramètre optionel pour définir le texte à côté de l'icone. (valeur par défaut est "Déroulez-moi...")
-
- {{%/*expand "Est-ce que ce thème envoie du pâté ?" */%}}Oui !.{{%/* /expand*/%}}
-
-{{%expand "Est-ce que ce thème envoie du pâté ?" %}}Oui !{{% /expand%}}
-
-# Demo
-
- {{%/*expand*/%}}
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
- proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- {{%/* /expand*/%}}
-
-
-{{%expand%}}Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
-tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
-quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
-consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
-cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
-proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{{% /expand%}}
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.en.md b/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.en.md
deleted file mode 100644
index e5b7400..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.en.md
+++ /dev/null
@@ -1,283 +0,0 @@
----
-title : "Mermaid"
-description : "Generation of diagram and flowchart from text in a similar manner as markdown"
----
-
-[Mermaid](https://mermaidjs.github.io/) is a library helping you to generate diagram and flowcharts from text, in a similar manner as Markdown.
-
-Just insert your mermaid code in the `mermaid` shortcode and that's it.
-
-## Flowchart example
-
- {{*mermaid align="left"*/>}}
- graph LR;
- A[Hard edge] -->|Link text| B(Round edge)
- B --> C{Decision}
- C -->|One| D[Result one]
- C -->|Two| E[Result two]
- {{* /mermaid */>}}
-
-renders as
-
-{{}}
-graph LR;
- A[Hard edge] -->|Link text| B(Round edge)
- B --> C{Decision}
- C -->|One| D[Result one]
- C -->|Two| E[Result two]
-{{< /mermaid >}}
-
-or you can use this alternative syntax:
-
-
-```mermaid
-graph LR;
- A[Hard edge] -->|Link text| B(Round edge)
- B --> C{Decision}
- C -->|One| D[Result one]
- C -->|Two| E[Result two]
-```
-
-
-renders as
-
-```mermaid
-graph LR;
- A[Hard edge] -->|Link text| B(Round edge)
- B --> C{Decision}
- C -->|One| D[Result one]
- C -->|Two| E[Result two]
-```
-
-## Sequence example
-
- {{*mermaid*/>}}
- sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Hello John, how are you?
- loop Healthcheck
- John->John: Fight against hypochondria
- end
- Note right of John: Rational thoughts prevail...
- John-->Alice: Great!
- John->Bob: How about you?
- Bob-->John: Jolly good!
- {{* /mermaid */>}}
-
-renders as
-
-{{}}
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Hello John, how are you?
- loop Healthcheck
- John->John: Fight against hypochondria
- end
- Note right of John: Rational thoughts prevail...
- John-->Alice: Great!
- John->Bob: How about you?
- Bob-->John: Jolly good!
-{{< /mermaid >}}
-
-or you can use this alternative syntax:
-
-
-```mermaid
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Hello John, how are you?
- loop Healthcheck
- John->John: Fight against hypochondria
- end
- Note right of John: Rational thoughts prevail...
- John-->Alice: Great!
- John->Bob: How about you?
- Bob-->John: Jolly good!
-```
-
-
-renders as
-
-```mermaid
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Hello John, how are you?
- loop Healthcheck
- John->John: Fight against hypochondria
- end
- Note right of John: Rational thoughts prevail...
- John-->Alice: Great!
- John->Bob: How about you?
- Bob-->John: Jolly good!
-```
-
-## GANTT Example
-
- {{*mermaid*/>}}
- gantt
- dateFormat YYYY-MM-DD
- title Adding GANTT diagram functionality to mermaid
- section A section
- Completed task :done, des1, 2014-01-06,2014-01-08
- Active task :active, des2, 2014-01-09, 3d
- Future task : des3, after des2, 5d
- Future task2 : des4, after des3, 5d
- section Critical tasks
- Completed task in the critical line :crit, done, 2014-01-06,24h
- Implement parser and jison :crit, done, after des1, 2d
- Create tests for parser :crit, active, 3d
- Future task in critical line :crit, 5d
- Create tests for renderer :2d
- Add to mermaid :1d
- {{* /mermaid */>}}
-
-
-renders as
-
-{{}}
-gantt
- dateFormat YYYY-MM-DD
- title Adding GANTT diagram functionality to mermaid
- section A section
- Completed task :done, des1, 2014-01-06,2014-01-08
- Active task :active, des2, 2014-01-09, 3d
- Future task : des3, after des2, 5d
- Future task2 : des4, after des3, 5d
- section Critical tasks
- Completed task in the critical line :crit, done, 2014-01-06,24h
- Implement parser and jison :crit, done, after des1, 2d
- Create tests for parser :crit, active, 3d
- Future task in critical line :crit, 5d
- Create tests for renderer :2d
- Add to mermaid :1d
-{{}}
-
-or you can use this alternative syntax:
-
-
-```mermaid
-gantt
- dateFormat YYYY-MM-DD
- title Adding GANTT diagram functionality to mermaid
- section A section
- Completed task :done, des1, 2014-01-06,2014-01-08
- Active task :active, des2, 2014-01-09, 3d
- Future task : des3, after des2, 5d
- Future task2 : des4, after des3, 5d
- section Critical tasks
- Completed task in the critical line :crit, done, 2014-01-06,24h
- Implement parser and jison :crit, done, after des1, 2d
- Create tests for parser :crit, active, 3d
- Future task in critical line :crit, 5d
- Create tests for renderer :2d
- Add to mermaid :1d
-```
-
-
-renders as
-
-```mermaid
-gantt
- dateFormat YYYY-MM-DD
- title Adding GANTT diagram functionality to mermaid
- section A section
- Completed task :done, des1, 2014-01-06,2014-01-08
- Active task :active, des2, 2014-01-09, 3d
- Future task : des3, after des2, 5d
- Future task2 : des4, after des3, 5d
- section Critical tasks
- Completed task in the critical line :crit, done, 2014-01-06,24h
- Implement parser and jison :crit, done, after des1, 2d
- Create tests for parser :crit, active, 3d
- Future task in critical line :crit, 5d
- Create tests for renderer :2d
- Add to mermaid :1d
-```
-
-### Class example
-
-
-
-renders as
-
-```mermaid
-gitGraph:
-options
-{
- "nodeSpacing": 150,
- "nodeRadius": 10
-}
-end
- commit
- branch newbranch
- checkout newbranch
- commit
- commit
- checkout master
- commit
- commit
- merge newbranch
-```
\ No newline at end of file
diff --git a/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.fr.md b/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.fr.md
deleted file mode 100644
index e59e178..0000000
--- a/workshop/themes/learn/exampleSite/content/shortcodes/mermaid.fr.md
+++ /dev/null
@@ -1,283 +0,0 @@
----
-title : "Mermaid"
-description : "Génération de diagrammes à partir de texte, dans le même style que Markdown"
----
-
-[Mermaid](https://mermaidjs.github.io/) est une bibliothèque Javascript qui permet de générer des diagrammes (séquence, état, gantt, etc.) à partir de texte, dans le même style que Markdown.
-
-Insérer votre code Mermaid dans un shortcode `mermaid` et c'est tout.
-
-## Flowchart example
- {{*mermaid align="left"*/>}}
- graph LR;
- A[Bords droits] -->|Lien texte| B(Bords arondis)
- B --> C{Décision}
- C -->|Un| D[Résultat un]
- C -->|Deux| E[Résultat deux]
- {{* /mermaid */>}}
-
-renders as
-
-{{}}
-graph LR;
- A[Bords droits] -->|Lien texte| B(Bords arondis)
- B --> C{Décision}
- C -->|Un| D[Résultat un]
- C -->|Deux| E[Résultat deux]
-{{< /mermaid >}}
-
-or you can use this alternative syntax:
-
-
-```mermaid
-graph LR;
- A[Bords droits] -->|Lien texte| B(Bords arondis)
- B --> C{Décision}
- C -->|Un| D[Résultat un]
- C -->|Deux| E[Résultat deux]
-```
-
-
-renders as
-
-```mermaid
-graph LR;
- A[Bords droits] -->|Lien texte| B(Bords arondis)
- B --> C{Décision}
- C -->|Un| D[Résultat un]
- C -->|Deux| E[Résultat deux]
-```
-
-## Sequence example
-
- {{*mermaid*/>}}
- sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Salut John, comment vas-tu?
- loop Vérification
- John->John: Se bat contre l'hyponcodrie.
- end
- Note right of John: Les pensées rationnelles prédominent...
- John-->Alice: Super!
- John->Bob: Et toi?
- Bob-->John: Au top!
- {{* /mermaid */>}}
-
-renders as
-
-{{}}
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Salut John, comment vas-tu?
- loop Vérification
- John->John: Se bat contre l'hyponcodrie.
- end
- Note right of John: Les pensées rationnelles prédominent...
- John-->Alice: Super!
- John->Bob: Et toi?
- Bob-->John: Au top!
-{{< /mermaid >}}
-
-or you can use this alternative syntax:
-
-
-```mermaid
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Salut John, comment vas-tu?
- loop Vérification
- John->John: Se bat contre l'hyponcodrie.
- end
- Note right of John: Les pensées rationnelles prédominent...
- John-->Alice: Super!
- John->Bob: Et toi?
- Bob-->John: Au top!
-```
-
-
-renders as
-
-```mermaid
-sequenceDiagram
- participant Alice
- participant Bob
- Alice->>John: Salut John, comment vas-tu?
- loop Vérification
- John->John: Se bat contre l'hyponcodrie.
- end
- Note right of John: Les pensées rationnelles prédominent...
- John-->Alice: Super!
- John->Bob: Et toi?
- Bob-->John: Au top!
-```
-
-## GANTT Example
-
- {{*mermaid*/>}}
- gantt
- dateFormat YYYY-MM-DD
- title Ajout de la fonctionnalité de GANTT à Mermaid
- section Une section
- Tâche complétée :done, des1, 2014-01-06,2014-01-08
- Tâche en cours :active, des2, 2014-01-09, 3d
- Future tâche : des3, after des2, 5d
- Future tâche 2 : des4, after des3, 5d
- section Tâches critiques
- Tâche complétée dans le chemin critique :crit, done, 2014-01-06,24h
- Implémenter le parser et jison :crit, done, after des1, 2d
- Créer des tests pour le parser :crit, active, 3d
- Future tâche dans le chemin critique :crit, 5d
- Créer des tests pour le renderer :2d
- Ajout à Mermaid :1d
- {{* /mermaid */>}}
-
-
-renders as
-
-{{}}
-gantt
- dateFormat YYYY-MM-DD
- title Ajout de la fonctionnalité de GANTT à Mermaid
- section Une section
- Tâche complétée :done, des1, 2014-01-06,2014-01-08
- Tâche en cours :active, des2, 2014-01-09, 3d
- Future tâche : des3, after des2, 5d
- Future tâche 2 : des4, after des3, 5d
- section Tâches critiques
- Tâche complétée dans le chemin critique :crit, done, 2014-01-06,24h
- Implémenter le parser et jison :crit, done, after des1, 2d
- Créer des tests pour le parser :crit, active, 3d
- Future tâche dans le chemin critique :crit, 5d
- Créer des tests pour le renderer :2d
- Ajout à Mermaid :1d
-{{}}
-
-
-or you can use this alternative syntax:
-
-
-```mermaid
-gantt
- dateFormat YYYY-MM-DD
- title Ajout de la fonctionnalité de GANTT à Mermaid
- section Une section
- Tâche complétée :done, des1, 2014-01-06,2014-01-08
- Tâche en cours :active, des2, 2014-01-09, 3d
- Future tâche : des3, after des2, 5d
- Future tâche 2 : des4, after des3, 5d
- section Tâches critiques
- Tâche complétée dans le chemin critique :crit, done, 2014-01-06,24h
- Implémenter le parser et jison :crit, done, after des1, 2d
- Créer des tests pour le parser :crit, active, 3d
- Future tâche dans le chemin critique :crit, 5d
- Créer des tests pour le renderer :2d
- Ajout à Mermaid :1d
-```
-
-
-renders as
-
-```mermaid
-gantt
- dateFormat YYYY-MM-DD
- title Ajout de la fonctionnalité de GANTT à Mermaid
- section Une section
- Tâche complétée :done, des1, 2014-01-06,2014-01-08
- Tâche en cours :active, des2, 2014-01-09, 3d
- Future tâche : des3, after des2, 5d
- Future tâche 2 : des4, after des3, 5d
- section Tâches critiques
- Tâche complétée dans le chemin critique :crit, done, 2014-01-06,24h
- Implémenter le parser et jison :crit, done, after des1, 2d
- Créer des tests pour le parser :crit, active, 3d
- Future tâche dans le chemin critique :crit, 5d
- Créer des tests pour le renderer :2d
- Ajout à Mermaid :1d
-```
-
-### Class example
-
-
';
- },
- onSelect: function(e, term, item){}
- };
- for (var k in options) { if (options.hasOwnProperty(k)) o[k] = options[k]; }
-
- // init
- var elems = typeof o.selector == 'object' ? [o.selector] : document.querySelectorAll(o.selector);
- for (var i=0; i 0)
- that.sc.scrollTop = selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight;
- else if (selTop < 0)
- that.sc.scrollTop = selTop + scrTop;
- }
- }
- }
- addEvent(window, 'resize', that.updateSC);
- document.body.appendChild(that.sc);
-
- live('autocomplete-suggestion', 'mouseleave', function(e){
- var sel = that.sc.querySelector('.autocomplete-suggestion.selected');
- if (sel) setTimeout(function(){ sel.className = sel.className.replace('selected', ''); }, 20);
- }, that.sc);
-
- live('autocomplete-suggestion', 'mouseover', function(e){
- var sel = that.sc.querySelector('.autocomplete-suggestion.selected');
- if (sel) sel.className = sel.className.replace('selected', '');
- this.className += ' selected';
- }, that.sc);
-
- live('autocomplete-suggestion', 'mousedown', function(e){
- if (hasClass(this, 'autocomplete-suggestion')) { // else outside click
- var v = this.getAttribute('data-val');
- that.value = v;
- o.onSelect(e, v, this);
- that.sc.style.display = 'none';
- }
- }, that.sc);
-
- that.blurHandler = function(){
- try { var over_sb = document.querySelector('.autocomplete-suggestions:hover'); } catch(e){ var over_sb = 0; }
- if (!over_sb) {
- that.last_val = that.value;
- that.sc.style.display = 'none';
- setTimeout(function(){ that.sc.style.display = 'none'; }, 350); // hide suggestions on fast input
- } else if (that !== document.activeElement) setTimeout(function(){ that.focus(); }, 20);
- };
- addEvent(that, 'blur', that.blurHandler);
-
- var suggest = function(data){
- var val = that.value;
- that.cache[val] = data;
- if (data.length && val.length >= o.minChars) {
- var s = '';
- for (var i=0;i 40) && key != 13 && key != 27) {
- var val = that.value;
- if (val.length >= o.minChars) {
- if (val != that.last_val) {
- that.last_val = val;
- clearTimeout(that.timer);
- if (o.cache) {
- if (val in that.cache) { suggest(that.cache[val]); return; }
- // no requests if previous suggestions were empty
- for (var i=1; i https://github.com/noelboss/featherlight/issues/317
-!function(u){"use strict";if(void 0!==u)if(u.fn.jquery.match(/-ajax/))"console"in window&&window.console.info("Featherlight needs regular jQuery, not the slim version.");else{var r=[],i=function(t){return r=u.grep(r,function(e){return e!==t&&0','
','',n.closeIcon,"",'
'+n.loading+"
","
","
"].join("")),o="."+n.namespace+"-close"+(n.otherClose?","+n.otherClose:"");return n.$instance=i.clone().addClass(n.variant),n.$instance.on(n.closeTrigger+"."+n.namespace,function(e){if(!e.isDefaultPrevented()){var t=u(e.target);("background"===n.closeOnClick&&t.is("."+n.namespace)||"anywhere"===n.closeOnClick||t.closest(o).length)&&(n.close(e),e.preventDefault())}}),this},getContent:function(){if(!1!==this.persist&&this.$content)return this.$content;var t=this,e=this.constructor.contentFilters,n=function(e){return t.$currentTarget&&t.$currentTarget.attr(e)},r=n(t.targetAttr),i=t.target||r||"",o=e[t.type];if(!o&&i in e&&(o=e[i],i=t.target&&r),i=i||n("href")||"",!o)for(var a in e)t[a]&&(o=e[a],i=t[a]);if(!o){var s=i;if(i=null,u.each(t.contentFilters,function(){return(o=e[this]).test&&(i=o.test(s)),!i&&o.regex&&s.match&&s.match(o.regex)&&(i=s),!i}),!i)return"console"in window&&window.console.error("Featherlight: no content filter found "+(s?' for "'+s+'"':" (no target specified)")),!1}return o.process.call(t,i)},setContent:function(e){return this.$instance.removeClass(this.namespace+"-loading"),this.$instance.toggleClass(this.namespace+"-iframe",e.is("iframe")),this.$instance.find("."+this.namespace+"-inner").not(e).slice(1).remove().end().replaceWith(u.contains(this.$instance[0],e[0])?"":e),this.$content=e.addClass(this.namespace+"-inner"),this},open:function(t){var n=this;if(n.$instance.hide().appendTo(n.root),!(t&&t.isDefaultPrevented()||!1===n.beforeOpen(t))){t&&t.preventDefault();var e=n.getContent();if(e)return r.push(n),s(!0),n.$instance.fadeIn(n.openSpeed),n.beforeContent(t),u.when(e).always(function(e){n.setContent(e),n.afterContent(t)}).then(n.$instance.promise()).done(function(){n.afterOpen(t)})}return n.$instance.detach(),u.Deferred().reject().promise()},close:function(e){var t=this,n=u.Deferred();return!1===t.beforeClose(e)?n.reject():(0===i(t).length&&s(!1),t.$instance.fadeOut(t.closeSpeed,function(){t.$instance.detach(),t.afterClose(e),n.resolve()})),n.promise()},resize:function(e,t){if(e&&t&&(this.$content.css("width","").css("height",""),this.$content.parent().width()');return n.onload=function(){r.naturalWidth=n.width,r.naturalHeight=n.height,t.resolve(r)},n.onerror=function(){t.reject(r)},n.src=e,t.promise()}},html:{regex:/^\s*<[\w!][^<]*>/,process:function(e){return u(e)}},ajax:{regex:/./,process:function(e){var n=u.Deferred(),r=u("").load(e,function(e,t){"error"!==t&&n.resolve(r.contents()),n.fail()});return n.promise()}},iframe:{process:function(e){var t=new u.Deferred,n=u(""),r=function(e,t){var n={},r=new RegExp("^"+t+"([A-Z])(.*)");for(var i in e){var o=i.match(r);o&&(n[(o[1]+o[2].replace(/([A-Z])/g,"-$1")).toLowerCase()]=e[i])}return n}(this,"iframe"),i=function(e,t){var n={};for(var r in e)r in t&&(n[r]=e[r],delete e[r]);return n}(r,o);return n.hide().attr("src",e).attr(i).css(r).on("load",function(){t.resolve(n.show())}).appendTo(this.$instance.find("."+this.namespace+"-content")),t.promise()}},text:{process:function(e){return u("