diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds-deployed.png b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds-deployed.png deleted file mode 100644 index 029e1eb0..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds-deployed.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds.png b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds.png deleted file mode 100644 index 311a33dd..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-creds.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-deployed.png b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-deployed.png new file mode 100644 index 00000000..ed926691 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-deployed.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-preview1.png b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-preview1.png deleted file mode 100644 index a5daf009..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-preview1.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-runtime-tab.png b/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-runtime-tab.png deleted file mode 100644 index 03bf3e4c..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/acc-mgt-runtime-tab.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/acnt-mgt-fraud-detected-queue-config.png b/markdown/solace-masterclass/img/banking-domain-usecase/acnt-mgt-fraud-detected-queue-config.png index 5e2aa28b..213a5a0d 100644 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/acnt-mgt-fraud-detected-queue-config.png and b/markdown/solace-masterclass/img/banking-domain-usecase/acnt-mgt-fraud-detected-queue-config.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-management-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-management-1.png new file mode 100644 index 00000000..3b5ebf76 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-management-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-2.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-2.png new file mode 100644 index 00000000..6c6ee367 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-2.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-3.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-3.png new file mode 100644 index 00000000..6f6ceb55 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-3.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-4.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-4.png new file mode 100644 index 00000000..48bf17f7 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-4.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-5.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-5.png new file mode 100644 index 00000000..985f64f6 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-5.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-6.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-6.png new file mode 100644 index 00000000..d8d57766 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-6.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-7.png b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-7.png new file mode 100644 index 00000000..2d1ff7ed Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/configuring-acc-mgt-7.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-1.png new file mode 100644 index 00000000..b826533b Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-step2.png b/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-step2.png deleted file mode 100644 index 22b69dcf..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking-step2.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking.png b/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking.png index 4aa74c35..5d406a83 100644 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking.png and b/markdown/solace-masterclass/img/banking-domain-usecase/consumer-config-core-banking.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-account-suspended-consumer.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-account-suspended-consumer.png index cfdfa719..c7a1e2ba 100644 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-account-suspended-consumer.png and b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-account-suspended-consumer.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-1.png deleted file mode 100644 index 1d0559db..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-1.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-setup-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-setup-1.png new file mode 100644 index 00000000..fd0f5fc9 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-consumer-setup-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-1.png new file mode 100644 index 00000000..01a69393 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-step1.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-step1.png deleted file mode 100644 index 5d78f620..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-subscriptions-step1.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-update-broker.png b/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-update-broker.png deleted file mode 100644 index a21d6681..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/core-banking-update-broker.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/edit-account-management-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/edit-account-management-1.png index 6b49e7a0..40e1b841 100644 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/edit-account-management-1.png and b/markdown/solace-masterclass/img/banking-domain-usecase/edit-account-management-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/editing-acc-management-1.png b/markdown/solace-masterclass/img/banking-domain-usecase/editing-acc-management-1.png index 8430d557..a2b0d6f0 100644 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/editing-acc-management-1.png and b/markdown/solace-masterclass/img/banking-domain-usecase/editing-acc-management-1.png differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-consumer.png b/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-consumer.png deleted file mode 100644 index 48d90a5a..00000000 Binary files a/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-consumer.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-subscriptions.png b/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-subscriptions.png new file mode 100644 index 00000000..02957df4 Binary files /dev/null and b/markdown/solace-masterclass/img/banking-domain-usecase/fraud-detection-subscriptions.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-connect-tab.png b/markdown/solace-masterclass/img/broker-provisioning/broker-connect-tab.png new file mode 100644 index 00000000..c547439a Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-connect-tab.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-manage-tab.png b/markdown/solace-masterclass/img/broker-provisioning/broker-manage-tab.png new file mode 100644 index 00000000..ee8fdaba Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-manage-tab.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-setup-1.png b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-1.png new file mode 100644 index 00000000..4a7c5768 Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-1.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-setup-2.png b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-2.png new file mode 100644 index 00000000..66f7e234 Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-2.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-setup-3.png b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-3.png new file mode 100644 index 00000000..6c8a4262 Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-3.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-setup-4.png b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-4.png new file mode 100644 index 00000000..266e252c Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-4.png differ diff --git a/markdown/solace-masterclass/img/broker-provisioning/broker-setup-5.png b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-5.png new file mode 100644 index 00000000..c4670844 Binary files /dev/null and b/markdown/solace-masterclass/img/broker-provisioning/broker-setup-5.png differ diff --git a/markdown/solace-masterclass/img/commons/brokerconsole_connect_creds_java.png b/markdown/solace-masterclass/img/commons/brokerconsole_connect_creds_java.png index b3348b0d..4cd2db02 100644 Binary files a/markdown/solace-masterclass/img/commons/brokerconsole_connect_creds_java.png and b/markdown/solace-masterclass/img/commons/brokerconsole_connect_creds_java.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/env-setup-1.png b/markdown/solace-masterclass/img/env-mem-setup/env-setup-1.png new file mode 100644 index 00000000..8efa95fe Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/env-setup-1.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/env-setup-2.png b/markdown/solace-masterclass/img/env-mem-setup/env-setup-2.png new file mode 100644 index 00000000..3014681b Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/env-setup-2.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/env-setup-3.png b/markdown/solace-masterclass/img/env-mem-setup/env-setup-3.png new file mode 100644 index 00000000..cf70735a Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/env-setup-3.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/env-setup-4.png b/markdown/solace-masterclass/img/env-mem-setup/env-setup-4.png new file mode 100644 index 00000000..649461d1 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/env-setup-4.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/env-setup-optional.png b/markdown/solace-masterclass/img/env-mem-setup/env-setup-optional.png new file mode 100644 index 00000000..c0ea4b27 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/env-setup-optional.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-1.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-1.png new file mode 100644 index 00000000..1d6458d2 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-1.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-2.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-2.png new file mode 100644 index 00000000..6f5307b2 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-2.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-3.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-3.png new file mode 100644 index 00000000..fb165c00 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-3.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-4.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-4.png new file mode 100644 index 00000000..963582d7 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-4.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-5.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-5.png new file mode 100644 index 00000000..402dd560 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-5.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-6.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-6.png new file mode 100644 index 00000000..e264a17a Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-6.png differ diff --git a/markdown/solace-masterclass/img/env-mem-setup/mem-setup-7.png b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-7.png new file mode 100644 index 00000000..cf8814f9 Binary files /dev/null and b/markdown/solace-masterclass/img/env-mem-setup/mem-setup-7.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/configuring-order-service-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/configuring-order-service-1.png new file mode 100644 index 00000000..eae1c4e1 Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/configuring-order-service-1.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service-step2.png b/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service-step2.png index 3fa8c4fc..14dfaa3e 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service-step2.png and b/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service-step2.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service.png b/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service.png index 863754cb..71770243 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service.png and b/markdown/solace-masterclass/img/retail-domain-usecase/consumer-config-inventory-service.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/edit-order-service-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/edit-order-service-1.png index 4ec11490..dea0eac2 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/edit-order-service-1.png and b/markdown/solace-masterclass/img/retail-domain-usecase/edit-order-service-1.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/editing-order-service-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/editing-order-service-1.png index 0300dc69..d1200615 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/editing-order-service-1.png and b/markdown/solace-masterclass/img/retail-domain-usecase/editing-order-service-1.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-serivice-subscriptions-step1.png b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-serivice-subscriptions-step1.png index 29cef627..9e0a2431 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-serivice-subscriptions-step1.png and b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-serivice-subscriptions-step1.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-1.png deleted file mode 100644 index a1a981ac..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-1.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-setup-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-setup-1.png new file mode 100644 index 00000000..5d7a4838 Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-consumer-setup-1.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-update-broker.png b/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-update-broker.png deleted file mode 100644 index b3ea77cb..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/inventory-service-update-broker.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-access-control.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-access-control.png new file mode 100644 index 00000000..1fb96f9d Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-access-control.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v2.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v2.png deleted file mode 100644 index 647982fe..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v2.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v3.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v3.png deleted file mode 100644 index 344676b4..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue-v3.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue.png index 172645dd..5fab4eec 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue.png and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-all-order-updates-queue.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-create-configuration.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-create-configuration.png new file mode 100644 index 00000000..38bf2e8d Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-create-configuration.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds-deployed.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds-deployed.png index 2275feee..6c25d50f 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds-deployed.png and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds-deployed.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds.png deleted file mode 100644 index 90eacdef..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-creds.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-define-access-control.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-define-access-control.png new file mode 100644 index 00000000..cbb4427e Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-define-access-control.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-design-preview-promotion.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-design-preview-promotion.png new file mode 100644 index 00000000..ab99d6ca Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-design-preview-promotion.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-final-promotion-preview.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-final-promotion-preview.png new file mode 100644 index 00000000..ae34eac1 Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-final-promotion-preview.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-preview-1.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-preview-1.png deleted file mode 100644 index 4b18bb94..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-preview-1.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-runtime-tab.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-runtime-tab.png deleted file mode 100644 index 80e14dd7..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-runtime-tab.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-select-env-broker.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-select-env-broker.png new file mode 100644 index 00000000..d3105c4f Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-select-env-broker.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-start-promotion.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-start-promotion.png new file mode 100644 index 00000000..db69c2e5 Binary files /dev/null and b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-start-promotion.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-paymentEvents.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-paymentEvents.png deleted file mode 100644 index 1051768a..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-paymentEvents.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-shipmentEvents.png b/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-shipmentEvents.png deleted file mode 100644 index c727cf13..00000000 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/order-service-update-queue-subscription-shipmentEvents.png and /dev/null differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png b/markdown/solace-masterclass/img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png index 5e3a7e42..c1681960 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png and b/markdown/solace-masterclass/img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png differ diff --git a/markdown/solace-masterclass/img/retail-domain-usecase/shipping-service-all-payments-confirmed-queue.png b/markdown/solace-masterclass/img/retail-domain-usecase/shipping-service-all-payments-confirmed-queue.png index 75beefba..08b3ba50 100644 Binary files a/markdown/solace-masterclass/img/retail-domain-usecase/shipping-service-all-payments-confirmed-queue.png and b/markdown/solace-masterclass/img/retail-domain-usecase/shipping-service-all-payments-confirmed-queue.png differ diff --git a/markdown/solace-masterclass/solace-masterclass.md b/markdown/solace-masterclass/solace-masterclass.md index 6da81994..7013a644 100755 --- a/markdown/solace-masterclass/solace-masterclass.md +++ b/markdown/solace-masterclass/solace-masterclass.md @@ -52,7 +52,7 @@ Due to time limit considerations, we will be implementing only a selected subset Duration: 0:25:00 -### Step 1: Solace Cloud Account +### Solace Cloud Account In case you do not have an active Solace cloud account, you can register for one via the link: [Solace trial account registration](https://console.solace.cloud/login/new-account?product=event-streaming). \ @@ -61,81 +61,105 @@ link : [Solace Cloud Account Login](https://console.solace.cloud/home?login=true Once you have registered and logged in to the Solace cloud account, you can get started with provisioning a Solace developer grade broker which will be used in the next sections. -### Step 2 : Environment setup -Once you are logged in to the Solace cloud portal with the details you registered with , you should see something like -this: - ![cloud-console-home.png](img/broker-setup/cloud-console-home.png) - -- Click on the **Environments** button as shown below : \ - ![settings-environment.png](img/broker-setup/settings-environment.png) -- Click on the **...** of the default created environment as below and click **Enable Runtime Configuration** as below: - ![env-enable-runtime-config.png](img/broker-setup/env-enable-runtime-config.png) - This will allow you to push configuration objects for Solace queues, ACL profiles, and credentials to the broker directly from the Event Portal - -### Step 3: Solace broker provisioning - -- Click on "Cluster Manager" to go into where you create and manage your broker services as below : - ![cluster-manager-sidebar.png](img/broker-setup/cluster-manager-sidebar.png) -- Then click the "Create service" button to create a new Solace cloud broker instance. You can see that this service is associated with the **Default** environment that is available. -- Ensure you have selected Developer Service, your choice as the cloud service provider, -- and then click the map to find a region close to you: - ![broker_create_service.jpg](img/broker-setup/broker_create_service.jpg) - -Give your Solace PubSub+ Cloud service instance a name of your choice and then let it start!. -> aside negative As a guide, try to keep your broker name short for this session - -Under the covers, a Solace event broker will be deployed and configured in the cloud you indicated, ports configured, -load-balancer setup, monitoring enabled, etc. -It takes about 5 minutes, and then you'll be ready! -> It is safe to navigate away from the "Solace is starting" page while the broker is being deployed in the cloud. Feel -> free to explore the rest of Solace Mission Control, including the Event Portal! - -Once the Solace broker is up and running, click on the broker name and enter it. - -- Once your service is deployed and ready, click on it to go into it and look at some basic configuration - information: - ![broker_console.png](img/broker-setup/broker_console.png) - -- Notice some buttons across the top: - -* The "Connect" tab shows you all the required connection information for your messaging pub/sub applications (e.g. - host, username, password, etc.), which we'll need in later steps. The info can be grouped either by protocol or by - programming language. -* At the top-right, there should be a button saying "Open PubSub+ Broker Manager". Click on that to go into the Manager - GUI. - -- From this webapp, you'll be able to view configured and runtime information, create new queues, create usernames and - profiles, and other various administrative tasks for the Solace broker. - ![pubsubManager.png](img/broker-setup/pubsubManager.png) - -- On the left side of the screen are the main sections to navigate through: - -* **Message VPN**: VPN-level stats and config (a Message VPN is a virtual partition of a single broker... one Solace - broker can host multiple Message VPNs, and each VPN can have different authorization schemes and topic spaces; - client/messaging application activity happens within the scope of a VPN) -* **Clients**: information about connected and configured client applications -* **Queues**: used for Guaranteed / persistent messaging -* **Connectors**: helpful wizards to connect to a variety of web services -* **Access Control**: where you create new client usernames, ACL profiles, and client profiles -* **Replay**: where you can enable replay, to allow the broker to send previous messages again - -### Step 4: Runtime Event Manager - -- In the main cloud console, click on the **Runtime Event Manager** as shown : \ - ![runtime-event-mgr-sidebar.png](img/broker-setup/runtime-event-mgr-sidebar.png) -- Click on the **Create Modeled Event Mesh** button and create a new Modeled Event Mesh (MEM) as shown : \ - ![create-mem-popup.png](img/broker-setup/create-mem-popup.png) -> aside positive Note the environment associated with each MEM that you create. This groups EDA artefacts and their deployments across all brokers associated with a particular environment. - -- Enter the newly create MEM and navigate to the **Event Broker Connections** tab and click on the **Connect Event Broker** button as below : \ -![new-mem.png](img/broker-setup/new-mem.png) -- Select the newly created broker, and you should be able to see a screen as below : \ -![mem-to-broker-assoc.png](img/broker-setup/mem-to-broker-assoc.png) -> aside positive You will see that : -> 1. The broker is connected to the MEM -> 2. The connection between the broker, MEM and the Event Portal is automatically managed by the Event Portal using a cloud hosted Event Management Agent (EMA) -> 3. To test the connection, click on the **Run Discovery Scan** button which will trigger a scan of your broker -> 4. The status of the scan is displayed under the **Discovery Scans** section +### Provision Your First Solace PubSub Broker + +Duration: 10 minutes + +#### Navigate to Cluster Manager + +1. In the Solace Cloud Console, click **Cluster Manager** in the left navigation + ![broker-setup-1.png](img/broker-provisioning/broker-setup-1.png) +2. Click **Create Service** (or the **+** button if you have existing services) + ![broker-setup-2.png](img/broker-provisioning/broker-setup-2.png) + +#### Configure Your Service + +1. Fill in the service configuration details: + - Name : Choose a concise name (e.g., `solace-masterclass`) + - Environment : Leave as **Default** + - Cloud : Choose your preferred cloud provider (AWS, Azure, or GCP) + - Region : Select a region closest to your location + - Broker Release : Leave as default (latest stable) + - Service Type : Select **Developer** (free tier) + ![broker-setup-3.png](img/broker-provisioning/broker-setup-3.png) + +2. Click **Create Service** + +#### Wait for Provisioning + +1. The service will take 3-5 minutes to provision +2. Status will show as **Creating...** + ![broker-setup-4.png](img/broker-provisioning/broker-setup-4.png) +3. Once complete, the broker details page will load + ![broker-setup-5.png](img/broker-provisioning/broker-setup-5.png) + +#### Explore Your Broker + +1. Navigate through the tabs: + - **Connect**: Connection details and credentials + ![broker-connect-tab.png](img/broker-provisioning/broker-connect-tab.png) + - **Manage**: Service management and configuration + ![broker-manage-tab.png](img/broker-provisioning/broker-manage-tab.png) + +> aside positive **Checkpoint**: You should now have a running PubSub+ broker service with status "Running" in your +> Cluster Manager. + +--- + +### Configure environment and modelled event mesh + +#### Environment Setup + +Environments in Solace Cloud represent the runtime environments within your organisation. For example, you may have + +- Multiple development environments +- Multiple testing environments +- A Staging or Pre-Production +- A Production environment + +1. In the Solace Cloud Console, navigate to the **Environments** tab + ![env-setup-1.png](img/env-mem-setup/env-setup-1.png) +2. In the **Environments** tab, there is a default environment created for you called "Default" + ![env-setup-2.png](img/env-mem-setup/env-setup-2.png) +3. Click on the **...** buttons next to the Default environment and select **Runtime Configuration Settings** + ![env-setup-3.png](img/env-mem-setup/env-setup-3.png) +4. Click on the **Auto on Promotion** radio button to enable automatic promotion of configuration changes from Event + Portal to the associated PubSub+ Cloud broker + ![env-setup-4.png](img/env-mem-setup/env-setup-4.png) +5. Click **Save** to save the changes +6. Optional: You can edit some of the environment details like name and description by clicking on the **Edit** button + under the **...** menu + ![env-setup-optional.png](img/env-mem-setup/env-setup-optional.png) + +#### Modeled Event Mesh Setup + +A modeled event mesh represents an actual event mesh or event flow operating in a specific runtime environment. Modeled +event meshes help you define and visualise event flows between publishing and subscribing applications within your +event-driven architecture (EDA). + +1. In the Solace Cloud Console, navigate to the **Runtime Event Manager** tab + ![mem-setup-1.png](img/env-mem-setup/mem-setup-1.png) +2. Click on the **Create Modeled Event Mesh** button + ![mem-setup-2.png](img/env-mem-setup/mem-setup-2.png) +3. Fill in the details for the modeled event mesh: + - Name : `Dev-Mesh` + - Type : `Solace` + - Description : `Development Modeled Event Mesh` + - Environment : Select `Default` environment +4. Click **Create** to create the modeled event mesh + ![mem-setup-3.png](img/env-mem-setup/mem-setup-3.png) +5. You will see the newly created modeled event mesh in the list + ![mem-setup-4.png](img/env-mem-setup/mem-setup-4.png) +6. Click on the modeled event mesh name to view its details +7. Under the **Event Broker Connections** tab, click on **Connect Event Broker** + ![mem-setup-5.png](img/env-mem-setup/mem-setup-5.png) +8. Select the PubSub+ Cloud broker you created earlier (e.g., `ep-codelab`) and click **Add** + ![mem-setup-6.png](img/env-mem-setup/mem-setup-6.png) +9. You should now see the broker connection listed under the **Event Broker Connections** tab + ![mem-setup-7.png](img/env-mem-setup/mem-setup-7.png) + +> aside positive **Checkpoint**: You should now have an environment configured with automatic promotion enabled and a +> modeled event mesh connected to your PubSub+ Cloud broker. ## Event Portal design @@ -163,6 +187,9 @@ In summary, the Event Portal streamlines event management, making it an essentia > aside positive you can import as many application domains as you wish, > but for time considerations it's advisable to choose one example for implementation. +> aside negative Please note that the initial visualisation of the application domain might be a bit different from the screenshot. +> You can rearrange the objects as per your preference and save the layout for easier navigation in the future. + - Inside the application domain, you should be able to see the objects from your selected industry as below : - Retail industry : ![retail-domain-ep.png](img/retail-domain-usecase/retail-domain-ep.png) @@ -257,16 +284,24 @@ relevant events which it uses for showing realtime status updates on the order l > You can reorder the objects as per your preference - Click on the **Order Service**, and then on the **Open Application** which pops up as below : ![edit-order-service-1.png](img/retail-domain-usecase/edit-order-service-1.png) -- The **Order Service** application screen displays you the various events that are published and subscribed by this version of the application. It also describes the various environments this application is deployed on : +- The **Order Service** application screen displays you the various events that are published and subscribed by this version of the application : ![editing-order-service-1.png](img/retail-domain-usecase/editing-order-service-1.png) -- Click on the **Runtime** tab at the top of the application, and you can see the various environments, brokers and the status of the application configuration deployment as below : - ![order-service-runtime-tab.png](img/retail-domain-usecase/order-service-runtime-tab.png) -> aside positive You can see the **dev** broker associated with the **default** environment and the MEM that you created earlier. In case of multiple brokers and environments they would be listed here as available -- Click on the **+** button by the broker which will show a modal window to set up credentials for the application to connect to the broker. **Make sure to keep a note of these credentials as they will be required in the following steps.** - ![order-service-creds.png](img/retail-domain-usecase/order-service-creds.png) -- Clicking on the **Save Credentials and Continue** button generates a preview of the configuration that will be deployed to the broker as below : - ![order-service-preview-1.png](img/retail-domain-usecase/order-service-preview-1.png) -- You will see a **Configuring** status for a short duration during which the EMA deploys the configuration onto the broker. +- Click on the **Configurations** tab on the left sidebar as below : + ![configuring-order-service-1.png](img/retail-domain-usecase/configuring-order-service-1.png) +- This opens up the configuration screen, click on the **Create Configurations** button as shown: + ![order-service-create-configuration.png](img/retail-domain-usecase/order-service-create-configuration.png) +- A modal window opens up as below, first select the environment and the broker that you have created earlier and click on the **Next:Define Event Handling** button : + ![order-service-select-env-broker.png](img/retail-domain-usecase/order-service-select-env-broker.png) +- For now, we are not configuring any consumers (or subscriptions) for this application, so click on the **Next: Define Access Control** button directly. + ![order-service-define-event-handling.png](img/retail-domain-usecase/order-service-define-access-control.png) +- For authentication, select the **Basic** access type and enter a client usename and password of your choice as below. **Make sure to keep a note of these credentials as they will be required in the following steps.** + ![order-service-access-control.png](img/retail-domain-usecase/order-service-access-control.png) +- Review the configuration in both the **Define Event Handling** and **Define Access Control** tabs and if everything looks as expected, click **Start Promotion** as below : + ![order-service-start-promotion.png](img/retail-domain-usecase/order-service-start-promotion.png) +- An intermediate screen is shown as below indicating some design mismatches, but you can safely ignore them for now and click on the **Preview Promotion** button as below : + ![order-service-design-mismatches.png](img/retail-domain-usecase/order-service-design-preview-promotion.png) +- The final promotion preview is shown as below, detailing the various configuration objects that will be created on the broker. Click on the **Promote** button as shown : + ![order-service-final-promotion-preview.png](img/retail-domain-usecase/order-service-final-promotion-preview.png) - Once the deployment is completed, you can see the deployed application version on the broker as below : ![order-service-creds-deployed.png](img/retail-domain-usecase/order-service-creds-deployed.png) @@ -284,7 +319,7 @@ relevant events which it uses for showing realtime status updates on the order l - Public Endpoint - Message VPN \ ![brokerconsole_connect_creds_java_highlighted.png](img/commons/brokerconsole_connect_creds_java_highlighted.png) -- The credentials (username and password) were configured in the previous step. + > aside negative Just take the endpoint and message vpn details for now, the username and password are the ones you configured in the earlier step in the Event Portal. - Fill in the connection details in the appropriate text box and click on the **Connect to broker** button - You should see a screen as below with the appropriate connection status : ![order-service-broker-connected.png](img/retail-domain-usecase/order-service-broker-connected.png) @@ -298,8 +333,7 @@ relevant events which it uses for showing realtime status updates on the order l - If you observe the logs closely, you will see that the broker sends back an **ACK or Acknowledge** for every **Order-Created** event that is being published. This is because we are publishing these events as **Persistent** events. -- You can also verify this quickly by using the **Try-Me** tab. How to do this would have been shown in the earlier half - of the day when we discussed the Solace Broker features. +- You can also verify this quickly by using the **Try-Me** tab. - Feel free to trigger a few more orders using the UI and observe the payload and topics on which the events are published. > aside positive If you need help using the **Try-me** then feel free to ask any of the Solace members running the @@ -323,7 +357,7 @@ _Order-Confirmed_ event for further processing. - Similar to how you deployed the credentials for the **Order Service** in the previous step, you will need to deploy the application and credentials for the **Inventory-FraudCheck-Service** as well. - In the **Designer** screen, enter the Acme Retail application domain - Click on the **Inventory and FraudCheck Service** and open the application -- Navigate to the **Runtime** tab on the application and add credentials for the application and deploy them to the broker. +- Navigate to the **Configuration** tab on the application and add credentials for the application and deploy them to the broker. > aside positive Make a note of the credentials (username and password) that you enter as they will be used in the following steps for deploying and running the application ##### **Part 2 : Application build and deployment** @@ -365,36 +399,22 @@ able to delete the queue object; an architectural choice was made to use **Durab To fix the error encountered above, you need to create the Queue object as below : -* Open the **Inventory and FraudCheck Service** and click **Edit This Version** on the top right as below : +* Open the **Inventory and FraudCheck Service** and click **Advanced Subscription Setup** as below : ![consumer-config-inventory-service.png](img/retail-domain-usecase/consumer-config-inventory-service.png) -* Click on the **Runtime Configuration** sub-tab and then **Add Consumer** as below : +* Click on the **Create Consumer** as below and enter the following details in the popup window : ![consumer-config-inventory-service-step2.png](img/retail-domain-usecase/consumer-config-inventory-service-step2.png) -* Fill in the follwing details in the form : * Name : `all-orders-placed` * Type : Solace Event Queue -* Click on the **Add Subscriptions** button which will open up a sidebar. Select the **Order Created** event and its associated subscription as below : +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic subscription based on your application design ![inventory-serivice-subscriptions-step1.png](img/retail-domain-usecase/inventory-serivice-subscriptions-step1.png) > aside negative Do you recollect how Solace topic filtering and matching works? Feel free to ask any of the Solace -> presenters if you have any queries -* Click on the **Manage Queue Configuration** button which opens up a sidebar, fill in the below configuration in the configuration pane : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "all-orders-placed" - } - ``` -> aside negative Does the **Access Type** parameter ring any bells and how it influences the consumption of events -> from the queue, benefits, limitations, alternative solutions? \ -> Feel free to discuss with your fellow participants and the Solace presenters on this differentiating Solace feature. - -* At the end you should have something like this : - ![inventory-service-consumer-1.png](img/retail-domain-usecase/inventory-service-consumer-1.png) -* Click **Save Version** and navigate to the **Runtime** tab. -* You should see the status as **Update Required** on the broker -* Click **Push Updates to Event Broker**, which shows a preview of all the changes that will be pushed to the broker - ![inventory-service-update-broker.png](img/retail-domain-usecase/inventory-service-update-broker.png) -* Click **Push Changes** which will trigger the configuration push to the broker +> presenters if you have any queries. You can also explore the modal window which tells you how it has derived the subscription. + +* Click on the **Configurations** tab on the left sidebar, select the environment and broker selected previously and click on the button **Next:Define Event Handling**. +* In the **Define Event Handling** tab, you should see the consumer created in the earlier step : + ![inventory-service-consumer-setup-1.png](img/retail-domain-usecase/inventory-service-consumer-setup-1.png) +* Click on the **Next:Define Access Control** button, but no action is requried on this sub-step as the credentials have already been configured for this application. +* Click **Review** and then **Start Promotion**. This will signal Event Portal to push only the new configuration objects to the broker. * With the above steps, a new queue has been created with the required subscription which can now be connected to by the **Inventory-FraudCheck-Service** @@ -431,24 +451,16 @@ fraud check passes. This **Order-Confirmed** needs to be subscribed by the **Order Service**. Follow the below steps to enable this flow : -* Navigate to the Designer screen and open the **Order Service** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** sub-section and start creating a new consumer with the below settings : - * Name : all-order-updates +* Navigate to the Designer screen and open the **Order Service** application. +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `all-order-updates` * Type : Solace Event Queue - * Event and subscriptions : Select the **Order Confirmed** event and confirm the suggested subscription - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "all-order-updates" - } - ``` - * You should have a consumer setup which looks like this : +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : ![order-service-all-order-updates-queue.png](img/retail-domain-usecase/order-service-all-order-updates-queue.png) -> aside positive As we incorporate new features, we will update this queue's subscriptions with additional event topics. +> aside positive We have already incorporated all the subscriptions required for this exercise. -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker. +* Once the consumer is created, navigate to the **Configuration** tab and push the updates to the event broker as you have done for the previous applications. * Publish a few more orders from the **Order-Service** and see it being processed in the console logs. * Go back to the **Order-Service,** and you will observe that the status of the newly created order is showing as VALIDATED as the orders are processed by the **Inventory-FraudCheck-Service** @@ -479,35 +491,14 @@ The _Payment Created_ event is in-turn subscribed by the **Order Service** for u ##### **Part 1 : Broker Configuration** -* Navigate to the Designer screen and open the **Payment Service** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** sub-section and start creating a new consumer with the below settings : - * Name : all-orders-confirmed +* Navigate to the Designer screen and open the **Payment Service** application. +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `all-orders-confirmed` * Type : Solace Event Queue - * Event and subscriptions : Select the **Order Confirmed** event and confirm the suggested subscription - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "all-orders-confirmed" - } - ``` - * You should have a consumer setup which looks like this : - ![payment-service-all-orders-confirmed-queue.png](img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png) -> aside positive As we incorporate new features, we will update this queue's subscriptions with additional event topics. -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker -* Now that we have configured the queue for feeding the **Payment Service**, we have to make sure that the - **Order-Service** can also receive the _Payment Created_ events. This is done by updating the subscription list of the - _all-order-updates_ queue with the topic pattern of the _Payment Created_ events. -* You can do this by : - * Navigate to the Designer screen and open the **Order Service** application. Click on the **Edit this Version** button. - * Click on the **Runtime Configuration** sub-section and in the consumer named **all-order-updates** click on **Add Subscriptions** button - * Make sure to select only the **Payment Created** and **Payment Updated** events as below : - ![order-service-update-queue-subscription-paymentEvents.png](img/retail-domain-usecase/order-service-update-queue-subscription-paymentEvents.png) - * Add the subscription and close the sidebar - * At this stage, you should have a queue with the following subscriptions : - ![order-service-all-order-updates-queue-v2.png](img/retail-domain-usecase/order-service-all-order-updates-queue-v2.png) - * Save the version, navigate to the **Runtime** tab and push the updates to the event broker +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : + ![payment-service-all-orders-confirmed-queue.png](img/retail-domain-usecase/payment-service-all-orders-confirmed-queue.png) +* Once the consumer is created, navigate to the **Configuration** tab and push the updates to the event broker as you have done for the previous applications. ##### **Part 2 : Application build and deployment** * Open up a new terminal window, make sure not to close the earlier window running the earlier applications @@ -517,7 +508,7 @@ The _Payment Created_ event is in-turn subscribed by the **Order Service** for u * Run the command : `java -jar target/payment-service-0.0.1-SNAPSHOT.jar -h HOST_URL -v VPN-NAME -u USER_NAME -p PASSWORD` and observe the console to see what events are getting processed and subsequently produced -> aside positive The credentials (username and password) for the Payment Service are the same as you configured on the Runtime tab for this application +> aside positive The credentials (username and password) for the Payment Service are the same as you configured on the Configuration tab for this application #### Testing @@ -554,37 +545,14 @@ The **Order Service** subscribes to the _Shipment Created_ for user status updat #### How to run? ##### **Part 1 : Broker Configuration** -* Navigate to the Designer screen and open the **Shipping Service** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** sub-section and start creating a new consumer with the below settings : - * Name : all-payments-confirmed +* Navigate to the Designer screen and open the **Shipping Service** application. +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `all-payments-confirmed` * Type : Solace Event Queue - * Event and subscriptions : Select the **Payment Updated** event and confirm the suggested subscription - > aside positive You can refer to the Event Portal topic design to identify what event and topic taxonomy is in play - > here to understand the Solace topic routing concept better. - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "all-payments-confirmed" - } - ``` - * You should have a consumer setup which looks like this : +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : ![shipping-service-all-payments-confirmed-queue.png](img/retail-domain-usecase/shipping-service-all-payments-confirmed-queue.png) -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker - -* Now that we have configured the queue for feeding the **Shipping Service**, we have to make sure that the - **Order-Service** can also receive the _Shipment Created_ events. This is done by updating the subscription list of - the _all-order-updates_ queue with the topic pattern of the Shipment Created events. -* You can do this by : - * Navigate to the Designer screen and open the **Order Service** application. Click on the **Edit this Version** button. - * Click on the **Runtime Configuration** sub-section and in the consumer named **all-order-updates** click on **Add Subscriptions** button - * Make sure to select only the **Shipment Created** event as below : - [order-service-update-queue-subscription-shipmentEvents](img/retail-domain-usecase/order-service-update-queue-subscription-shipmentEvents) - * Add the subscription and close the sidebar - * At this stage, you should have a queue with the following subscriptions : - ![order-service-all-order-updates-queue-v2.png](img/retail-domain-usecase/order-service-all-order-updates-queue-v3.png) - * Save the version, navigate to the **Runtime** tab and push the updates to the event broker +* Once the consumer is created, navigate to the **Configuration** tab and push the updates to the event broker as you have done for the previous applications. ##### **Part 2 : Application build and deployment** * Open up a new terminal window, make sure not to close the earlier window running the earlier applications @@ -685,18 +653,24 @@ Confirmed_ and corresponding _Account Suspended_ events. > You can reorder the objects as per your preference - Click on the **Account Management**, and then on the **Open Application** which pops up as below : ![edit-account-management-1.png](img/banking-domain-usecase/edit-account-management-1.png) -- The **Account Management** application screen displays you the various events that are published and subscribed by this version of the application. It also describes the various environments this application is deployed on : +- The **Account Management** application screen displays you the various events that are published and subscribed by this version of the application. ![editing-acc-management-1.png](img/banking-domain-usecase/editing-acc-management-1.png) -- Click on the **Runtime** tab at the top of the application, and you can see the various environments, brokers and the status of the application configuration deployment as below : - ![acc-mgt-runtime-tab.png](img/banking-domain-usecase/acc-mgt-runtime-tab.png) -> aside positive You can see the **dev** broker associated with the **default** environment and the MEM that you created earlier. In case of multiple brokers and environments they would be listed here as available -- Click on the **Add Application** button by the broker which will show a modal window to set up credentials for the application to connect to the broker. **Make sure to keep a note of these credentials as they will be required in the following steps.** - ![acc-mgt-creds.png](img/banking-domain-usecase/acc-mgt-creds.png) -- Clicking on the **Save Credentials and Continue** button generates a preview of the configuration that will be deployed to the broker as below : - ![acc-mgt-preview1.png](img/banking-domain-usecase/acc-mgt-preview1.png) -- You will see a **Configuring** status for a short duration during which the EMA deploys the configuration onto the broker. +- Click on the **Configuration** tab on the left of the sidebar as below. This opens up the configuration screen, click on the **Create Configurations** button as shown: + ![configuring-acc-management-1.png](img/banking-domain-usecase/configuring-acc-management-1.png) +- A modal window opens up as below, first select the environment and the broker that you have created earlier and click on the Next:Define Event Handling button : + ![configuring-acc-mgt-2.png](img/banking-domain-usecase/configuring-acc-mgt-2.png) +- For now, we are not configuring any consumers (or subscriptions) for this application, so click on the Next: Define Access Control button directly. + ![configuring-acc-mgt-3.png](img/banking-domain-usecase/configuring-acc-mgt-3.png) +- For authentication, select the **Basic** access type and enter a client username and password of your choice as below. Make sure to keep a note of these credentials as they will be required in the following steps. + ![configuring-acc-mgt-3.png](img/banking-domain-usecase/configuring-acc-mgt-4.png) +- Review the configuration in both the Define Event Handling and Define Access Control tabs and if everything looks as expected, click Start Promotion as below : + ![configuring-acc-mgt-5.png](img/banking-domain-usecase/configuring-acc-mgt-5.png) +- An intermediate screen is shown as below indicating some design mismatches, but you can safely ignore them for now and click on the Preview Promotion button as below : + ![configuring-acc-mgt-6.png](img/banking-domain-usecase/configuring-acc-mgt-6.png) +- The final promotion preview is shown as below, detailing the various configuration objects that will be created on the broker. Click on the Promote button as shown : + ![configuring-acc-mgt-7.png](img/banking-domain-usecase/configuring-acc-mgt-7.png) - Once the deployment is completed, you can see the deployed application version on the broker as below : - ![acc-mgt-creds-deployed.png](img/banking-domain-usecase/acc-mgt-creds-deployed.png) + ![acc-mgt-deployed.png](img/banking-domain-usecase/acc-mgt-deployed.png) ##### **Part 2 : Application build and deployment** @@ -744,7 +718,7 @@ The Core Banking Application randomly generates the above transactions on all th - Similar to how you deployed the credentials for the **Account Management** in the previous step, you will need to deploy the application and credentials for the **Core Banking** as well. - In the **Designer** screen, enter the Acme Bank application domain - Click on the **Core Banking** and open the application -- Navigate to the **Runtime** tab on the application and add credentials for the application and deploy them to the broker. +- Navigate to the **Configuration** tab on the application and add credentials for the application and deploy them to the broker. > aside positive Make a note of the credentials (username and password) that you enter as they will be used in the following steps for deploying and running the application ##### **Part 2 : Application build and deployment** @@ -786,38 +760,23 @@ that subscribing applications cannot delete queue objects, an architectural deci To fix the error encountered above, you need to manually create the Queue object as below : -* Open the **Core Banking** and click **Edit This Version** on the top right as below : +* Open the **Core Banking** application and click **Advanced Subscription Setup** as below : : ![consumer-config-core-banking.png](img/banking-domain-usecase/consumer-config-core-banking.png) -* Click on the **Runtime Configuration** sub-tab and then **Add Consumer** as below : - ![consumer-config-core-banking-step2.png](img/banking-domain-usecase/consumer-config-core-banking-step2.png) -* Fill in the follwing details in the form : + +* Click on the **Create Consumer** as below and enter the following details in the popup window : + ![consumer-config-core-banking-1.png](img/banking-domain-usecase/consumer-config-core-banking-1.png) * Name : `accounts-opened` * Type : Solace Event Queue -* Click on the **Add Subscriptions** button which will open up a sidebar. Select the **Account Opened** event and its associated subscription as below : - ![core-banking-subscriptions-step1.png](img/banking-domain-usecase/core-banking-subscriptions-step1.png) +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic subscription based on your application design +* Event Portal identifies multiple possible subscriptions for this consumer, so ensure you select the correct one as below : + ![core-banking-subscriptions-1.png](img/banking-domain-usecase/core-banking-subscriptions-1.png) > aside negative Do you recollect how Solace topic filtering and matching works? Feel free to ask any of the Solace -> presenters if you have any queries -* Click on the **Manage Queue Configuration** button which opens up a sidebar, fill in the below configuration in the configuration pane : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "accounts-opened" - } - ``` -> aside negative Does the **Access Type** parameter ring any bells and how it influences the consumption of events -> from the queue, benefits, limitations, alternative solutions? \ -> Feel free to discuss with your fellow participants and the Solace presenters on this differentiating Solace feature. - -* At the end you should have something like this : - ![core-banking-consumer-1.png](img/banking-domain-usecase/core-banking-consumer-1.png) -* Click **Save Version** and navigate to the **Runtime** tab. -* You should see the status as **Update Required** on the broker -* Click **Push Updates to Event Broker**, which shows a preview of all the changes that will be pushed to the broker - ![core-banking-update-broker.png](img/banking-domain-usecase/core-banking-update-broker.png) -* Click **Push Changes** which will trigger the configuration push to the broker - - +> presenters if you have any queries. You can also explore the modal window which tells you how it has derived the subscription. +* Click on the **Configurations** tab on the left sidebar, select the environment and broker selected previously and click on the button **Next:Define Event Handling** +* In the **Define Event Handling** tab, you should see the consumer created in the earlier step : + ![core-banking-consumer-setup-1.png](img/banking-domain-usecase/core-banking-consumer-setup-1.png) +* Click on the **Next:Define Access Control** button, but no action is requried on this sub-step as the credentials have already been configured for this application. +* Click **Review** and then **Start Promotion**. This will signal Event Portal to push only the new configuration objects to the broker. * With the above steps, a new queue has been created with the required subscription which can now be connected to by the **Core-Banking** @@ -861,24 +820,15 @@ transactions by publishing a _Fraud Detected_ event. ##### **Part 1 : Broker Configuration** -* Navigate to the Designer screen and open the **Fraud Detection** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** subsection and start creating a new consumer with the below settings : - * Name : all-transactions +* Navigate to the Designer screen and open the **Fraud Detection** application. +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `all-transactions` * Type : Solace Event Queue - * Event and subscriptions : Select the **Deposit**, **Transfer** and **Withdrawal** events and confirm the suggested subscription - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "all-transactions" - } - ``` - * You should have a consumer setup which looks like this : - ![fraud-detection-consumer.png](img/banking-domain-usecase/fraud-detection-consumer.png) - -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker -* Now that you have created the queue object for feeding the **Fraud Detection** service, we can build and start the +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : + ![fraud-detection-subscriptions.png](img/banking-domain-usecase/fraud-detection-subscriptions.png) +* Once the consumer is created, navigate to the **Configuration** tab, create configurations and credentials for pushing to the event broker as you have done for the previous applications. +* Now that you have created the configuration for feeding the **Fraud Detection** service, we can build and start the application. * ##### **Part 2 : Application build and deployment** @@ -919,23 +869,15 @@ actually fraudulent. If found fraudulent, a corresponding _Fraud Confirmed_ even suspended by publishing an _Account Suspended_ event. * Start with creating a new queue for subscribing to the _Fraud Detected_ event -* Navigate to the Designer screen and open the **Account Management** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** subsection and start creating a new consumer with the below settings : - * Name : fraud-detected-events +* Navigate to the Designer screen and open the **Account Management** application. + +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `fraud-detected-events` * Type : Solace Event Queue - * Event and subscriptions : Select the **Fraud Detected** event and confirm the suggested subscription - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "fraud-detected-events" - } - ``` - * You should have a consumer setup which looks like this : +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : ![acnt-mgt-fraud-detected-queue-config.png](img/banking-domain-usecase/acnt-mgt-fraud-detected-queue-config.png) -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker - +* Once the consumer is created, navigate to the **Configuration** tab and push the updates to the event broker as you have done for the previous applications. * Navigate to the folder : **solace-masterclass/banking-domain/account-management** > aside negative If you need any assistance in this, please feel free to reach out to the Solace instructors nearby. @@ -1010,25 +952,15 @@ suspended by publishing an _Account Suspended_ event. The _Account Suspended_ event published in the previous step is subscribed to by the **Core Banking** application which stops all transactions on that account number immediately. +* * Start with creating a new queue for subscribing to the _Account Suspended_ event - - -* Navigate to the Designer screen and open the **Core Banking** application. Click on the **Edit this Version** button. -* Click on the **Runtime Configuration** subsection and start creating a new consumer with the below settings : - * Name : accounts-suspended +* In the **Advanced Subscription Setup** tab, create a new consumer with the below settings : + * Name : `accounts-suspended` * Type : Solace Event Queue - * Event and subscriptions : Select the **Account Suspended** event and confirm the suggested subscription - * Queue configuration : - ```JSON - { - "accessType": "exclusive", - "maxMsgSpoolUsage": 5000, - "queueName": "accounts-suspended" - } - ``` - * You should have a consumer setup which looks like this : +* Clicking on the **+** symbol for the subscriptions opens up a modal window offering you a pre-selected topic + * You should have a subscription setup which looks like this : ![core-banking-account-suspended-consumer.png](img/banking-domain-usecase/core-banking-account-suspended-consumer.png) -* Once the consumer is created, navigate to the **Runtime** tab and push the updates to the event broker +* Once the consumer is created, navigate to the **Configuration** tab and push the updates to the event broker as you have done for the previous applications. * Navigate to the location :**solace-masterclass/banking-domain/core-banking** > aside negative If you need any assistance in this, please feel free to reach out to the Solace instructors nearby. @@ -1062,8 +994,7 @@ stops all transactions on that account number immediately. }); } ``` - > aside positive This code snippet builds a handler for processing the events attracted to the queue * - *accounts-suspended** + > aside positive This code snippet builds a handler for processing the events attracted to the queue **accounts-suspended** * Open the file **com.solace.acme.bank.corebanking.service.AccountsEventProcessor.java** in the same project : * Add in the following method in the file :