diff --git a/shared/adb-slack-msteams/get-started/get-started.md b/shared/adb-slack-msteams/get-started/get-started.md
new file mode 100644
index 00000000..9979f16a
--- /dev/null
+++ b/shared/adb-slack-msteams/get-started/get-started.md
@@ -0,0 +1,2 @@
+
+[](include:cloud-login.md)
\ No newline at end of file
diff --git a/shared/adb-slack-msteams/get-started/images/adb-configure.png b/shared/adb-slack-msteams/get-started/images/adb-configure.png
new file mode 100644
index 00000000..2e144583
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/adb-configure.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/adb-deployment-type.png b/shared/adb-slack-msteams/get-started/images/adb-deployment-type.png
new file mode 100644
index 00000000..f37e01e6
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/adb-deployment-type.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/adb-provisioned.png b/shared/adb-slack-msteams/get-started/images/adb-provisioned.png
new file mode 100644
index 00000000..4b80140e
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/adb-provisioned.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/adb-provisioning.png b/shared/adb-slack-msteams/get-started/images/adb-provisioning.png
new file mode 100644
index 00000000..51df7562
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/adb-provisioning.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/adb-workload-type.png b/shared/adb-slack-msteams/get-started/images/adb-workload-type.png
new file mode 100644
index 00000000..0af6958f
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/adb-workload-type.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/admin-credential.png b/shared/adb-slack-msteams/get-started/images/admin-credential.png
new file mode 100644
index 00000000..beab436e
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/admin-credential.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/choose-network-access.png b/shared/adb-slack-msteams/get-started/images/choose-network-access.png
new file mode 100644
index 00000000..ce2ee87a
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/choose-network-access.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/cloud-service-dashboard.png b/shared/adb-slack-msteams/get-started/images/cloud-service-dashboard.png
new file mode 100644
index 00000000..925dc01e
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/cloud-service-dashboard.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/contact-email-field.png b/shared/adb-slack-msteams/get-started/images/contact-email-field.png
new file mode 100644
index 00000000..4bfdcaba
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/contact-email-field.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/create-adb-button.png b/shared/adb-slack-msteams/get-started/images/create-adb-button.png
new file mode 100644
index 00000000..7894ea33
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/create-adb-button.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier-default.png b/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier-default.png
new file mode 100644
index 00000000..56722341
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier-default.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier.png b/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier.png
new file mode 100644
index 00000000..d61a7e20
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/create-adb-screen-freetier.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/license.png b/shared/adb-slack-msteams/get-started/images/license.png
new file mode 100644
index 00000000..055dd97e
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/license.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/livelabs-adwconfig.png b/shared/adb-slack-msteams/get-started/images/livelabs-adwconfig.png
new file mode 100644
index 00000000..397954a1
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/livelabs-adwconfig.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/livelabs-adwname.png b/shared/adb-slack-msteams/get-started/images/livelabs-adwname.png
new file mode 100644
index 00000000..93f4ea7c
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/livelabs-adwname.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/livelabs-byol.png b/shared/adb-slack-msteams/get-started/images/livelabs-byol.png
new file mode 100644
index 00000000..9c3975b8
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/livelabs-byol.png differ
diff --git a/shared/adb-slack-msteams/get-started/images/navigation.png b/shared/adb-slack-msteams/get-started/images/navigation.png
new file mode 100644
index 00000000..48258e12
Binary files /dev/null and b/shared/adb-slack-msteams/get-started/images/navigation.png differ
diff --git a/shared/adb-slack-msteams/introduction/intro.md b/shared/adb-slack-msteams/introduction/intro.md
new file mode 100644
index 00000000..1931c5f7
--- /dev/null
+++ b/shared/adb-slack-msteams/introduction/intro.md
@@ -0,0 +1,61 @@
+# Introduction
+
+## About this Workshop
+
+The labs in this workshop walk you through all the steps to send Slack and Microsoft Teams notifications from **Oracle Autonomous Database** (ADB) . You will create Slack and Microsoft Teams apps and configure them so that you can send messages, alerts, or the output of a query from Oracle Autonomous Database. You will review and confirm the receipt of the messages in both Slack channel and Microsoft Teams channels.
+
+Estimated Workshop Time: 1 hour
+
+### About Slack and Microsoft Teams
+
+**Slack** is a business messaging platform that connects teams with the apps, services, and resources you need. It offers real-time messaging, file sharing, and application integrations, making it easy for teams to communicate and collaborate efficiently. See [Getting started](https://slack.com/help/articles/360059928654-How-to-use-Slack--your-quick-start-guide) with Slack for more information.
+
+**Microsoft Teams** is a collaboration platform that combines chat, video meetings, and file sharing. It integrates with Microsoft 365 apps, supports third-party integrations, and offers robust security. With dedicated channels and mobile access, Teams enhances productivity in remote and hybrid work environments. See [Get Started](https://support.microsoft.com/en-us/office/get-started-with-microsoft-teams-b98d533f-118e-4bae-bf44-3df2470c2b12) with Microsoft Teams for more information.
+
+Oracle Autonomous Database offers robust integration with Slack and Microsoft Teams, enabling you to enhance your communication, and productivity workflows in your organization. This integration facilitates the seamless transmission of messages, alerts, and query results directly to Slack and Teams channels, addressing several key use cases for modern teams.
+
+### Objectives
+
+- Create a Slack account, workspace, app, and channel
+- Create a Microsoft Teams account, app, and channel
+- Provision and configure an Autonomous Database
+- Send a message and a query output to the Slack channel
+- Confirm the receipt of the messages in Slack channel
+- Send a message and a query output to Microsoft Teams
+- Confirm the receipt of the messages in Microsoft Teams
+
+### Prerequisites
+
+- An Oracle Cloud account - You may use your own cloud account, a cloud account that you obtained through a trial, a Free Tier account, or a training account whose details were given to you by an Oracle instructor.
+- Experience with Oracle Autonomous Database
+- Familiarity with Slack and Microsoft Teams
+- Familiarity with Oracle Cloud Infrastructure is helpful, but not required.
+
+**Let's begin! Please click Get Started in the Contents menu on the left.**
+
+## Learn More
+
+- [Oracle Autonomous Data Warehouse Documentation](https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/index.html)
+- [Additional Autonomous Data Warehouse Tutorials](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/tutorials.html)
+- [Autonomous Database Workshops](https://livelabs.oracle.com/pls/apex/r/dbpm/livelabs/livelabs-workshop-cards?clear=100&session=103864463501116)
+- [Slack](https://slack.com/)
+- [Microsoft Teams](https://www.microsoft.com/en-us/microsoft-teams/group-chat-software)
+
+## Acknowledgements
+
++ **Author:** Yonca Aksit, User Assistance Developer Intern
+
++ **Contributors:**
+
+ + Lauran K. Serhal, Consulting User Assistance Developer
+ + Marty Gubar, Director of Product Management, Autonomous Database
+
++ **Last Updated By/Date:** Yonca Aksit, October 2024
+
+Copyright (C) 2024 Oracle Corporation.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled [GNU Free Documentation License](files/gnu-free-documentation-license.txt)
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app.png
new file mode 100644
index 00000000..808d01fa
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app_to_channel.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app_to_channel.png
new file mode 100644
index 00000000..88f4521e
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_app_to_channel.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_bot_to_team.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_bot_to_team.png
new file mode 100644
index 00000000..fdc51dba
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_bot_to_team.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_channel.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_channel.png
new file mode 100644
index 00000000..13207d62
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_channel.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_readwrite.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_readwrite.png
new file mode 100644
index 00000000..cff4d10b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_permis_readwrite.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_scope_permission.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_scope_permission.png
new file mode 100644
index 00000000..02fb8c5d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_scope_permission.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_secret.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_secret.png
new file mode 100644
index 00000000..6b81f7ce
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/add_secret.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app-created.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app-created.png
new file mode 100644
index 00000000..55c97066
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app-created.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app_registry.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app_registry.png
new file mode 100644
index 00000000..a8542e8b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/app_registry.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-example.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-example.png
new file mode 100644
index 00000000..747b7825
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-example.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-sized.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-sized.png
new file mode 100644
index 00000000..25613baf
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/basic-info-sized.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/bot_management.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/bot_management.png
new file mode 100644
index 00000000..c703e007
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/bot_management.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_popup_msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_popup_msg.png
new file mode 100644
index 00000000..def9cad4
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_popup_msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_sub_status.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_sub_status.png
new file mode 100644
index 00000000..0ab8b9e4
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/check_sub_status.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click-lines.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click-lines.png
new file mode 100644
index 00000000..de3c4804
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click-lines.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_add_permis.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_add_permis.png
new file mode 100644
index 00000000..77a7f066
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_add_permis.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_bot_name.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_bot_name.png
new file mode 100644
index 00000000..c509b3e2
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_bot_name.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_consent_permis.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_consent_permis.png
new file mode 100644
index 00000000..b33334c7
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_consent_permis.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_create_channel.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_create_channel.png
new file mode 100644
index 00000000..373da7d4
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_create_channel.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_ok_msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_ok_msg.png
new file mode 100644
index 00000000..2e72fd7d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_ok_msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_three_dots.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_three_dots.png
new file mode 100644
index 00000000..436df446
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/click_three_dots.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/config_permis.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/config_permis.png
new file mode 100644
index 00000000..70555c4f
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/config_permis.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_channel_id.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_channel_id.png
new file mode 100644
index 00000000..3bfcb509
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_channel_id.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_ids.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_ids.png
new file mode 100644
index 00000000..d0207722
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_ids.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_team_id.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_team_id.png
new file mode 100644
index 00000000..1d43812f
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_team_id.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_tenant_id.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_tenant_id.png
new file mode 100644
index 00000000..1d19978b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_tenant_id.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_the_link.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_the_link.png
new file mode 100644
index 00000000..69109c80
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/copy_the_link.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_new_app.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_new_app.png
new file mode 100644
index 00000000..94fdf502
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_new_app.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_secret_key.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_secret_key.png
new file mode 100644
index 00000000..49cf497d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_secret_key.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_teams_channel.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_teams_channel.png
new file mode 100644
index 00000000..f263089c
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/create_teams_channel.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created-new-chnl.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created-new-chnl.png
new file mode 100644
index 00000000..6ce6b348
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created-new-chnl.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_bot.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_bot.png
new file mode 100644
index 00000000..f0a45afe
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_bot.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_client_secret.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_client_secret.png
new file mode 100644
index 00000000..b96a233c
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/created_client_secret.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/delete-app.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/delete-app.png
new file mode 100644
index 00000000..a7340b0a
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/delete-app.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-botname-field.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-botname-field.png
new file mode 100644
index 00000000..efc65728
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-botname-field.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-confirm-to-delete.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-confirm-to-delete.png
new file mode 100644
index 00000000..47379c74
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter-confirm-to-delete.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter_bot_name.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter_bot_name.png
new file mode 100644
index 00000000..a666160b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/enter_bot_name.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/fill-out-basicinfo.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/fill-out-basicinfo.png
new file mode 100644
index 00000000..37656159
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/fill-out-basicinfo.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/get_link_channel.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/get_link_channel.png
new file mode 100644
index 00000000..4a70b424
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/get_link_channel.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/grant_permis.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/grant_permis.png
new file mode 100644
index 00000000..1f7f22dd
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/grant_permis.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-button.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-button.png
new file mode 100644
index 00000000..bcd35735
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-button.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-to-org.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-to-org.png
new file mode 100644
index 00000000..1fd3719d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/publish-to-org.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/receive-popup-msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/receive-popup-msg.png
new file mode 100644
index 00000000..3a0edb25
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/receive-popup-msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/register_app.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/register_app.png
new file mode 100644
index 00000000..ab57c397
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/register_app.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/search_team.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/search_team.png
new file mode 100644
index 00000000..9ccec4de
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/search_team.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-add-team.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-add-team.png
new file mode 100644
index 00000000..167ba86f
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-add-team.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-applications-arrow.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-applications-arrow.png
new file mode 100644
index 00000000..29f4ea3b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-applications-arrow.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-appname.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-appname.png
new file mode 100644
index 00000000..d3465a1d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-appname.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-apps.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-apps.png
new file mode 100644
index 00000000..2933c88f
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-apps.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-ateam.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-ateam.png
new file mode 100644
index 00000000..78696c13
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-ateam.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-basic-info.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-basic-info.png
new file mode 100644
index 00000000..9a415782
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-basic-info.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-identity.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-identity.png
new file mode 100644
index 00000000..b40071eb
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-identity.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-teams.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-teams.png
new file mode 100644
index 00000000..0b855031
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select-teams.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_api_perms.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_api_perms.png
new file mode 100644
index 00000000..4c3fe2a6
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_api_perms.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_features.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_features.png
new file mode 100644
index 00000000..3d6ce018
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_features.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_name.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_name.png
new file mode 100644
index 00000000..b713e2ae
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_name.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_permis.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_permis.png
new file mode 100644
index 00000000..fdb856a3
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_app_permis.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_appfeatures_bot.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_appfeatures_bot.png
new file mode 100644
index 00000000..e069a3f6
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_appfeatures_bot.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_apps.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_apps.png
new file mode 100644
index 00000000..3a79f1d4
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_apps.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot.png
new file mode 100644
index 00000000..c7960ae2
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot_name.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot_name.png
new file mode 100644
index 00000000..cc71d3eb
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_bot_name.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_client_secrets.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_client_secrets.png
new file mode 100644
index 00000000..a8f545ed
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_client_secrets.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_graphapi.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_graphapi.png
new file mode 100644
index 00000000..cbc6736a
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_graphapi.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_newbot.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_newbot.png
new file mode 100644
index 00000000..2f097abd
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_newbot.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_pub_toorg.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_pub_toorg.png
new file mode 100644
index 00000000..5dc59b6d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_pub_toorg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_publish_app.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_publish_app.png
new file mode 100644
index 00000000..4bf59501
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/select_publish_app.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/images/status-published.png b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/status-published.png
new file mode 100644
index 00000000..b2e3cea5
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-config/images/status-published.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-config/prepare-adb-msteams-config.md b/shared/adb-slack-msteams/prepare-adb-msteams-config/prepare-adb-msteams-config.md
new file mode 100644
index 00000000..fe56c933
--- /dev/null
+++ b/shared/adb-slack-msteams/prepare-adb-msteams-config/prepare-adb-msteams-config.md
@@ -0,0 +1,317 @@
+# Configure the Microsoft Teams Application
+
+**Important:** This lab uses features which are not available on the Oracle LiveLabs Sandbox hosted environments (the Green button), and requires Microsoft Teams admin permissions.
+
+## Introduction
+
+Microsoft Teams serves as a comprehensive collaboration platform within the Microsoft 365 ecosystem, facilitating instant messaging, audio and video calls, and online meetings. With its seamless integration with other applications, Teams enhances productivity by streamlining communication and project management. Microsoft Teams supports a wide range of integrations with external apps and services.
+
+This lab walks you through the steps to create your Microsoft Teams application and channel to receive messages, alerts and output of a query from Autonomous Database.
+
+Estimated Time: 15 minutes
+
+### Objectives
+
+In this lab, you will:
+
++ Create your Microsoft Teams application
++ Create and configure a bot for your Microsoft Teams application
++ Publish your Microsoft Teams application
++ Configure your Microsoft Teams application using Azure Portal
++ Create your Microsoft Teams channel
+
+### Prerequisites
+
++ Completion of the lab **Get Started** from the **Contents** menu on the left.
++ Microsoft Teams account and workspace
++ Microsoft Teams app and channel
++ Microsoft 365 Developer Account
+
+> **Note:** The Microsoft 365 Developer Program offers a powerful sandbox environment through its Microsoft 365 E5 developer subscription. This subscription provides developers with a dedicated space to build and test solutions without impacting production systems. For more information, see [Set up a developer subscription](https://learn.microsoft.com/en-us/office/developer-program/microsoft-365-developer-program-get-started).
+
+## Task 1: Create your Microsoft Teams application
+
+1. To create a Microsoft Teams application, click [this link](https://dev.teams.microsoft.com/home) to access **Developer Portal for Teams**, and then select **Apps** from the navigation menu that is located on the left side panel.
+
+ ![Open ADB](./images/select-apps.png "")
+
+ > **Note:** Please bookmark the [apps](https://dev.teams.microsoft.com/apps) link as you will need it for future tasks.
+
+2. Click the plus sign next to **New app** to create a new application.
+
+ ![Open ADB](./images/create_new_app.png "")
+
+3. Enter a name for your app in the **Name** field, and then click **Add**.
+
+ ![Open ADB](./images/add_app.png "")
+
+4. Ensure that your app has been successfully created as shown in the screen capture.
+
+ ![Open ADB](./images/app-created.png "")
+
+5. If you want to delete your application, click the **3 dots** sign on the row for your app, and then click **Delete**.
+
+ ![Open ADB](./images/delete-app.png "")
+
+6. Enter your application **name** in the field, and then click **Confirm**.
+
+ ![Open ADB](./images/enter-confirm-to-delete.png "")
+
+7. If successful, you will receive a message as shown in the screen capture.
+
+ ![Open ADB](./images/receive-popup-msg.png "")
+
+## Task 2: Create and configure a bot for your Microsoft Teams application
+
+For this task, you will create and configure a bot for your Microsoft Team application. A bot is the application designed to interact through conversation and it is also referred to as a chatbot or conversational bot. It's an app that runs simple and repetitive tasks by users such as customer service or support staff. Everyday use of bots include, bots that provide information about the weather, make dinner reservations, or provide travel information. Interactions with bots can be quick questions and answers or complex conversations. For more information, see [Build bots for Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/what-are-bots).
+
+1. Click the **Navigation menu** that is located on the left side panel.
+
+ ![Open ADB](./images/click-lines.png "")
+
+2. Click **Tools** in the Navigation menu, and then click **Bot management** in the **Tools** section.
+
+ ![Open ADB](./images/bot_management.png "")
+
+3. Click the plus sign next to **New Bot** to create your bot.
+
+ ![Open ADB](./images/select_newbot.png "")
+
+4. Enter your bot name in the **Bot name** field, and then click **Add**.
+
+ ![Open ADB](./images/enter_bot_name.png "")
+
+5. Ensure you receive a pop-up message confirming that your bot has been successfully added.
+
+ ![Open ADB](./images/created_bot.png "")
+
+6. To create a secret key for your bot, click the **Bot Name**.
+
+ ![Open ADB](./images/click_bot_name.png "")
+
+7. Select the **Client secrets**, and then click **Add a secret** to create a client secret for your bot.
+
+ ![Open ADB](./images/add_secret.png "")
+
+8. After you create the client secret, click the **Copy** icon next to the code to copy the secret which you will need in later steps. This is the only time the generated secret will be displayed. Next, click **OK** close it.
+
+ ![Open ADB](./images/create_secret_key.png "")
+
+9. Select **Apps** from the Navigation menu, and then click your application **Name**.
+
+ ![Open ADB](./images/select-appname.png "")
+
+10. Scroll down to the **Configure** section, and then click **App features**.
+
+ ![Open ADB](./images/select_app_features.png "")
+
+11. In the **App features** section, click **Bot** to set up required scope and permission for your application.
+
+ ![Open ADB](./images/select_appfeatures_bot.png "")
+
+ > **Note:** Bots are conversational apps that carry out a predetermined set of tasks. Bots interact with people, answering their inquiries and informing them in advance of changes and other happenings. For more information, see [Build bots for Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/what-are-bots?referrer=developerportal).
+
+12. Specify the following parameters that are shown in the screen capture to set up your bot's scope, and then click **Save**.
+
+ - Identify your bot: Click **Select an existing bot**
+ - What can your bot do: Click **Only send notifications**
+ - Select the scopes where people can use your bot: Click **Team**
+
+ ![Open ADB](./images/add_scope_permission.png "")
+
+ > **Note:** Selecting the "team" scope provides the bot functionalities such as accessing to team channels, ability to interact with multiple users in a team, and retrieving team-specific data. Fore more information, see [App scope](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/design/understand-use-cases?referrer=developerportal#app-scope).
+
+## Task 3: Publish your Microsoft Teams application
+
+After creating your application successfully, the next crucial step is to publish it to your organization. This process ensures that your application becomes accessible to all users within your organization.
+
+1. Go to your [Apps](https://dev.teams.microsoft.com/apps), click your application **Name**.
+
+ ![Open ADB](./images/select-appname.png "")
+
+2. Scroll down to the **Configure** section, and then select **Basic information**.
+
+ ![Open ADB](./images/select-basic-info.png "")
+
+3. On the **Basic Information** page, fill out the basic information about your application, and then click **Save**.
+
+ ![Open ADB](./images/basic-info-sized.png "")
+
+ > **Note:** If you do not enter the information on your app details page, you will not be able to publish your app to org (MSFT). For more information, see [Create your Teams Store listing details](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/submission-checklist?referrer=developerportal&tabs=desktop).
+
+4. After completing the basic information, scroll down to the **Publish** section, and then click **Publish to org** to submit your app.
+
+ ![Open ADB](./images/publish-button.png "")
+
+5. Verify that the submission **Status** shows **Submitted**.
+
+ ![Open ADB](./images/check_sub_status.png "")
+
+6. Once your Microsoft Teams admin approves your app, the **Status** will change to **Published** as shown in the screen capture.
+
+ ![Open ADB](./images/status-published.png "")
+
+## Task 4: Configure your Microsoft Teams application using Microsoft Entra ID
+
+1. After publishing your app, ensure your Microsoft Teams admin approves your app from the [Teams admin center](https://admin.teams.microsoft.com/policies/manage-apps) page.
+
+ > **Note:** If your application is not approved by Microsoft Team admin, you will not be able to proceed to the next tasks.
+
+2. Go to [Microsoft Entra admin center](https://entra.microsoft.com/#home), and then click the arrow down next to **Identity**.
+
+ ![Open ADB](./images/select-identity.png "")
+
+3. Scroll down to the **Applications** section, and then click the arrow down next to **Applications** section.
+
+ ![Open ADB](./images/select-applications-arrow.png "")
+
+4. From the drop-down list, click **App registrations**.
+
+ ![Open ADB](./images/register_app.png "")
+
+5. Select **Owned applications**, which will automatically populate your bot with the **Application(client) ID**.
+
+ ![Open ADB](./images/app_registry.png "")
+
+ > **Note:** Please copy your **Application (client) ID**. It is unique identifier for an app and also known as the client ID for an app.
+
+6. You can also enter your bot **name** in the **Search** field as shown in the screen capture.
+
+ ![Open ADB](./images/enter-botname-field.png "")
+
+7. Click **Display name** to see information about your application.
+
+ ![Open ADB](./images/select_bot_name.png "")
+
+8. Scroll down to **Manage** section, an then select **API permissions**.
+
+ ![Open ADB](./images/select_api_perms.png "")
+
+9. For your application, these following permissions are required:
+
+ + **`Files.ReadWrite.All`**
+
+ This permission will enable you to read, create, update and delete all files. For more information, see [Microsoft Graph permissions reference](https://learn.microsoft.com/en-us/graph/permissions-reference).
+
+ + **`ChannelSettings.Read.All`**
+
+ This permission will enable you to read all channel names, channel descriptions, and channel settings. For more information, see [Microsoft Graph permissions reference](https://learn.microsoft.com/en-us/graph/permissions-reference).
+
+10. To request required permissions for your app, click **Add a permission**.
+
+ ![Open ADB](./images/click_add_permis.png "")
+
+11. On the Request API permissions page, set the following parameters, and then click **Add permissions**.
+
+ + Microsoft APIs: Select **Microsoft Graph**
+ + Type of permissions: Select **Application permissions**
+ + Select permissions: Enter **ChannelSettings.Read.All** in the **search** field
+ + Channel Settings: Click the **ChannelSettings.Read.All** box
+
+ ![Open ADB](./images/add_permis_channel.png "")
+
+ > **Note:** Microsoft Graph API for Teams offers powerful capabilities to enhance your applications. It provides access to crucial data about teams, channels, users, and messages, enabling the creation of rich features. Additionally, the notification APIs simplify sending alerts from your app directly to the Teams activity feed. For more information, see [Use the Microsoft Graph API to work with Microsoft Teams](https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview?view=graph-rest-1.0).
+
+12. Repeat the step 11 to add **`Files.ReadWrite.All`** permission as well.
+
+13. After adding permissions, ensure your admin approve requested permissions from **Microsoft Entra admin center**.
+
+ ![Open ADB](./images/grant_permis.png "")
+
+## Task 5: Create your Microsoft Teams Channel
+
+1. Log into your [Microsoft Teams](https://www.microsoft.com/en-us/microsoft-teams/log-in), click **Teams** , click **+** sign next to **Teams**.
+
+ ![Open ADB](./images/select-teams.png "")
+
+2. Select **Create channel** from the drop-down list.
+
+ ![Open ADB](./images/create_teams_channel.png "")
+
+3. To create a channel, specify the following parameters as shown in the screen capture and click **Create**.
+
+ + Add the channel to a team: Select your preferred **team**, and click **Done** as shown in the screen capture.
+ + Channel name: Enter your preferred **Channel name** in the name field.
+ + Description: Enter your preferred **Description**.
+ + Channel type: Choose a **channel type** as **Standard** so people on your team has access.
+
+ ![Open ADB](./images/select-ateam.png "")
+
+ ![Open ADB](./images/click_create_channel.png "")
+
+4. If successful, you will see your channel, which was created under your preferred team.
+
+ ![Open ADB](./images/created-new-chnl.png "")
+
+5. Select **Apps** from navigation menu, enter your **application name** in the search field, and then click **Add** to add your app to your channel.
+
+ ![Open ADB](./images/add_app_to_channel.png "")
+
+6. Select **Add to a team**.
+
+ ![Open ADB](./images/select-add-team.png "")
+
+7. Enter your channel name in the name field or click the **search** icon to find your channel, and then select your **team or your channel** from the dropdown.
+
+ ![Open ADB](./images/search_team.png "")
+
+8. Click **Set up a bot** to proceed.
+
+ ![Open ADB](./images/add_bot_to_team.png "")
+
+9. In the **About this bot** message box, click **OK** .
+
+ ![Open ADB](./images/click_ok_msg.png "")
+
+ > **Note:** To send a query result to a Microsoft Teams channel, you need to obtain your **team ID**, and **tenant ID**. The tenant ID is a globally unique identifier (GUID) that differs from your organization’s name or domain.
+
+10. Click on the **three dots(...)** next to your channel name, and then click **Get link to channel**.
+
+ ![Open ADB](./images/click_three_dots.png "")
+
+ ![Open ADB](./images/get_link_channel.png "")
+
+11. Click **Copy** to copy the link as shown in the screen capture.
+
+ ![Open ADB](./images/copy_the_link.png "")
+
+ > **Note:** Please save the URL to be able to proceed to next tasks.
+
+12. Paste the URL into the text editor to copy your **tenant ID**, which is located at the end of the URL.
+
+ ![Open ADB](./images/copy_tenant_id.png "")
+
+ > **Note:** For more information, see [Find your Microsoft 365 tenant ID](https://learn.microsoft.com/en-us/sharepoint/find-your-office-365-tenant-id).
+
+13. Copy your **team ID** from the URL as shown in the screen capture.
+
+ ![Open ADB](./images/copy_team_id.png "")
+
+14. Copy the **channel ID** from the URL as shown in the screen capture.
+
+ ![Open ADB](./images/copy_channel_id.png "")
+
+## Summary
+
+You learned how to create a Microsoft Teams application and a channel to receive messages and query results form Autonomous Database. Autonomous Database supports sending alerts,messages and query results directly to your channels to enhance productivity. Next, let's see how to provision and configure a new Autonomous Database.
+
+You may now **proceed to the next lab**.
+
+## Acknowledgements
+
++ **Author:** Yonca Aksit, User Assistance Developer Intern
+
++ **Contributors:**
+
+ + Lauran K. Serhal, Consulting User Assistance Developer
+ + Marty Gubar, Director of Product Management, Autonomous Database
+
++ **Last Updated By/Date:** Yonca Aksit, October 2024
+
+Copyright (C) 2024 Oracle Corporation.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled [GNU Free Documentation License](files/gnu-free-documentation-license.txt)
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/check-to-see-msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/check-to-see-msg.png
new file mode 100644
index 00000000..d39614e8
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/check-to-see-msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb-name.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb-name.png
new file mode 100644
index 00000000..50d91527
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb-name.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb.png
new file mode 100644
index 00000000..d44492e8
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-adb.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-open-link.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-open-link.png
new file mode 100644
index 00000000..79adf265
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/click-open-link.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-query-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-query-json.png
new file mode 100644
index 00000000..df7c2fb0
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-query-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-sql-output.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-sql-output.png
new file mode 100644
index 00000000..aac8cbce
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm-sql-output.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_msg.png
new file mode 100644
index 00000000..c1b49399
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_query_result.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_query_result.png
new file mode 100644
index 00000000..c2651f40
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/confirm_query_result.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/copy-channel-id.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/copy-channel-id.png
new file mode 100644
index 00000000..e6900723
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/copy-channel-id.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/csv-result.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/csv-result.png
new file mode 100644
index 00000000..3d7bcb9e
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/csv-result.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/insert-data.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/insert-data.png
new file mode 100644
index 00000000..e26446f8
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/insert-data.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/json-result.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/json-result.png
new file mode 100644
index 00000000..e165d52b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/json-result.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-file-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-file-json.png
new file mode 100644
index 00000000..59e4db8d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-file-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-link-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-link-json.png
new file mode 100644
index 00000000..25fcf158
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/open-link-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/receipt-query-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/receipt-query-json.png
new file mode 100644
index 00000000..8cd40bb7
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/receipt-query-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/run_send_notif_pkg.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/run_send_notif_pkg.png
new file mode 100644
index 00000000..c70ce99b
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/run_send_notif_pkg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/select-database-actions.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/select-database-actions.png
new file mode 100644
index 00000000..f080fadd
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/select-database-actions.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-a-msg.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-a-msg.png
new file mode 100644
index 00000000..87fa36f7
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-a-msg.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-query-result-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-query-result-json.png
new file mode 100644
index 00000000..8f8d648c
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-query-result-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-results-json.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-results-json.png
new file mode 100644
index 00000000..cc3e234d
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-results-json.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-sqlquery.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-sqlquery.png
new file mode 100644
index 00000000..6c52f679
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send-sqlquery.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send_results_query.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send_results_query.png
new file mode 100644
index 00000000..fbf09963
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/send_results_query.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/table-created.png b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/table-created.png
new file mode 100644
index 00000000..2c712a09
Binary files /dev/null and b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/images/table-created.png differ
diff --git a/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/prepare-adb-sendmsg.md b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/prepare-adb-sendmsg.md
new file mode 100644
index 00000000..2de1c099
--- /dev/null
+++ b/shared/adb-slack-msteams/prepare-adb-msteams-slack-sendmsg/prepare-adb-sendmsg.md
@@ -0,0 +1,340 @@
+# Send Notifications from Autonomous Database to Slack and Microsoft Teams
+
+**Important:** This lab uses features which are not available on the Oracle LiveLabs Sandbox hosted environments (the Green button), and requires Microsoft Teams admin permissions.
+
+## Introduction
+
+This lab walks you through the steps to send messages, alerts and output of a query from Autonomous Database to Slack and Microsoft Teams. Also, you will learn the procedures to send notifications to Microsoft Teams and Slack channels.
+
+Estimated Time: 10 minutes
+
+### Objectives
+
+In this lab, you will:
+
++ Send messages to a Slack channel
++ Send query results to a Slack Channel
++ Send messages to a Microsoft Teams channel
++ Send query results to a Microsoft Teams channel
+
+### Prerequisites
+
++ Completion of the lab **Get Started**, **Lab 1**, **Lab 2**, and **Lab 3** from the **Contents** menu on the left.
++ Slack account and workspace
++ Slack app
++ Slack channel
++ Microsoft Teams account and workspace
++ Microsoft Teams app and channel
++ Microsoft 365 Developer Account
+
+## Task 1: Create a Luxury Car Dealership Story
+
+Let's assume you work at a luxury car dealership that prides itself on providing exceptional customer service. The dealership offers a special **white glove** treatment for customers who purchase cars valued at over $40,000.
+
+You will create the customers table based on few parameters, and then will notify the customer service who qualify for the treatment from Autonomous Database to Slack and Microsoft Teams channels.
+
++ name: Customer name
++ email: Customer email
++ product: Car type
++ amount: Price of the car
+
+1. In the Oracle Cloud console, open the **Navigation menu**, navigate to **Oracle Database**, and then select **Autonomous Data Warehouse**.
+
+ ![Open ADB](./images/click-adb.png "")
+
+2. Select your **Autonomous Database instance**.
+
+ ![Open ADB](./images/click-adb-name.png "")
+
+3. Click **Database actions**, and then select **SQL** .
+
+ ![Open ADB](./images/select-database-actions.png "")
+
+4. To create the generated **customers** table using the script, copy and paste the following code into your SQL Worksheet, and then click the **Run Script (F5)** icon in the Worksheet toolbar.
+
+ ```
+
Autonomous Database makes it simple to query your data using natural language. The person asking the question doesn't need to know where the data is stored, its structure or how to combine it with other data to get results. All of these tasks are handled by a large language model and Autonomous Database.
\nThe following paragraphs will show you how to:
\nA credential is used to sign LLM API requests. This workshop uses an Autonomous Database resource principal to access OCI Generative AI model; your database has been granted privileges to access OCI GenAI. This code has already been run by the setup script; you don't need to run it. It is typically run by the ADMIN user:
\nbegin\n dbms_cloud_admin.enable_resource_principal (\n username => 'MOVIESTREAM'\n );\nend;\n
\n",
+ "type" : "HTML"
+ }
+ ],
+ "forms" : "[]"
+ },
+ "relations" : [ ],
+ "dynamicFormParams" : null
+ },
+ {
+ "row" : 0,
+ "col" : 0,
+ "sizeX" : 0,
+ "width" : 0,
+ "title" : null,
+ "hasTitle" : false,
+ "message" : [
+ "%md",
+ "## Use AI profiles to access your LLM",
+ "Profiles capture the properties of your LLM provider plus the tables and views you want to enable for natural language queries. You can create multiple profiles (e.g. for different providers), although only one is active for a given session.",
+ "### Create an AI profile",
+ "To get started: you'll need to: ",
+ "* Create a profile that describes your LLM provider and the metadata (schemas, tables, views, etc.) that can be used for natural language queries. You can have multiple profiles - each pointing to different models.",
+ "* Set the profile for your session. Because we're accessing a single LLM, create a LOGON trigger that sets the profile for your session."
+ ],
+ "selectedVisualization" : "html",
+ "visualizationConfig" : null,
+ "hideCode" : true,
+ "hideResult" : false,
+ "hideGutter" : true,
+ "hideVizConfig" : false,
+ "hideInIFrame" : false,
+ "enabled" : true,
+ "forms" : "[]",
+ "result" : {
+ "startTime" : 1719332899047,
+ "endTime" : 1719332899239,
+ "interpreter" : "md.low",
+ "taskStatus" : "SUCCESS",
+ "status" : "SUCCESS",
+ "results" : [
+ {
+ "message" : "Profiles capture the properties of your LLM provider plus the tables and views you want to enable for natural language queries. You can create multiple profiles (e.g. for different providers), although only one is active for a given session.
\nTo get started: you'll need to:
\nYou can now ask questions using SELECT AI
. AI is a special keyword in the select statement that tells Autonomous Database that the subsequent text will be either or an action or the natural language question.
Here are the actions:
\nEnough explaining. Just give it a try!
\nStart by asking a general question that is not going to be answered by our data. But, the answer may lead to questions that we want to ask of our data:
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : "Ask a general question", + "hasTitle" : true, + "message" : [ + "%script", + "select ai chat what are considered the best movies produced in the past 20 years" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : "[{\"raw\":{\"layout\":\"beautify\",\"lastColumns\":[],\"version\":1},\"table\":{\"version\":1}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331869566, + "endTime" : 1719331873585, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "#### Take a quick look at some tables", + "Numerous tables were included as part of the AI profile:", + "* movies", + "* streams", + "* customer_extension", + "* customer_contact", + "* customer_segment", + "* pizza_shop", + "* genre", + "* actors", + "", + "", + "These are the only tables that will be accessed by natural language queries. Let's take a look at a few of the tables:" + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719332917173, + "endTime" : 1719332917246, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "Numerous tables were included as part of the AI profile:
\nThese are the only tables that will be accessed by natural language queries. Let's take a look at a few of the tables:
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Customer movie streams", + "hasTitle" : true, + "message" : [ + "%sql ", + "", + "", + "-- transactions - who is watching what movies", + "--~~~~~~~~~~~~~~~~~~~", + "", + "select * from streams where rownum <= 10;" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331873955, + "endTime" : 1719331874177, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Movies", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "", + "-- movies and their attributes", + "--~~~~~~~~~~~~~~~~~~~", + "", + "select * from movies where title like '%Godfather%';" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331874307, + "endTime" : 1719331874431, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Customer", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "", + "-- customer info", + "--~~~~~~~~~~~~~~~~~~~", + "select * from customer_extension where rownum <= 10" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331874728, + "endTime" : 1719331874957, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "#### See the different types of actions for a simple natural language query", + "We described the different actions above: runsql, narrate, showsql, explainsql and chat. Whereas chat is just a general question, narrate and runsql are questions about our data. Take a look at the results from the different actions:" + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719332943860, + "endTime" : 1719332943934, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "We described the different actions above: runsql, narrate, showsql, explainsql and chat. Whereas chat is just a general question, narrate and runsql are questions about our data. Take a look at the results from the different actions:
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Action: runsql", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "", + "select ai runsql what are our total sales" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331875278, + "endTime" : 1719331877418, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Action: narrate", + "hasTitle" : true, + "message" : [ + "%script", + "", + "", + "select ai narrate what are our total sales" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331877547, + "endTime" : 1719331880521, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Action: showsql", + "hasTitle" : true, + "message" : [ + "%script", + "", + "", + "select ai showsql what are our total sales" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331880670, + "endTime" : 1719331882093, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 4, + "title" : "Action: explainsql", + "hasTitle" : true, + "message" : [ + "%script", + "", + "", + "select ai explainsql what are our total sales" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : "[{\"raw\":{\"layout\":\"beautify\",\"lastColumns\":[],\"version\":1}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331882214, + "endTime" : 1719331886814, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "#### Ask tougher questions", + "That first question was pretty easy. These will be a bit harder. Some things to notice when you check out the generated SQL:", + "* Finds tables to join", + "* Determines columns to query - even when the columns aren't mentioned in the query" + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719332949674, + "endTime" : 1719332949754, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "That first question was pretty easy. These will be a bit harder. Some things to notice when you check out the generated SQL:
\nThe next question fails. The challenge is when you have multiple tables with similar content - like CUSTOMER_CONTACT
and CUSTOMER_EXTENSION
. The model fails to find the right tables.
After the failed query, you will solve the problem by:
\nCUSTOMER_CONTACT
, CUSTOMER_SEGMENT
and CUSTOMER_SEGMENT
Then, ask the question again
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 12, + "title" : "This question fails", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "", + "select ai What are sales by customer segment" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : "[{\"raw\":{\"layout\":\"beautify\",\"lastColumns\":[],\"version\":1}}]", + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331909413, + "endTime" : 1719331911827, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 6, + "title" : "Create a view to simplify the content", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "CREATE OR REPLACE VIEW v_customer AS", + "SELECT", + " cc.cust_id,", + " cc.last_name,", + " cc.first_name,", + " cc.email,", + " cc.street_address,", + " cc.postal_code,", + " cc.city,", + " cc.state_province,", + " cc.country,", + " cc.country_code,", + " cc.continent,", + " cc.yrs_customer,", + " ce.age,", + " ce.commute_distance,", + " ce.credit_balance,", + " ce.education,", + " ce.full_time,", + " ce.gender,", + " ce.household_size, ", + " ce.income_level,", + " ce.job_type,", + " ce.marital_status,", + " ce.num_cars,", + " ce.pet,", + " ce.rent_own,", + " ce.segment_id,", + " ce.work_experience,", + " ce.yrs_current_employer,", + " ce.yrs_residence,", + " cs.short_name as segment_name", + "FROM", + " customer_extension ce, customer_contact cc, customer_segment cs", + "WHERE ", + " ce.cust_id = cc.cust_id", + "AND ce.segment_id = cs.segment_id; " + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331911953, + "endTime" : 1719331912057, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 6, + "title" : "Segment name is part of the view", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "select cust_id, last_name, segment_name", + "from v_customer", + "where rownum < 10;" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331912229, + "endTime" : 1719331912359, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Recreate the profile using the view", + "hasTitle" : true, + "message" : [ + "%script", + "", + "begin", + "", + " -- ~~~~~~~~~~~~~~", + " -- drop the current AI profile ", + " -- ~~~~~~~~~~~~~~", + " dbms_cloud_ai.drop_profile(", + " profile_name => 'genai',", + " force => true", + " );", + "", + " -- ~~~~~~~~~~~~~~", + " -- change CUSTOMER to the V_CUSTOMER view", + " -- ~~~~~~~~~~~~~~", + " ", + " dbms_cloud_ai.create_profile(", + " profile_name => 'genai',", + " attributes => ", + " '{\"provider\": \"oci\", ", + " \"credential_name\": \"OCI$RESOURCE_PRINCIPAL\",", + " \"object_list\": [{\"owner\": \"MOVIESTREAM\", \"name\": \"movies\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"streams\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"v_customer\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"pizza_shop\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"genre\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"actors\"}", + " ]", + " }'", + " );", + "", + " -- ~~~~~~~~~~~~~~", + " -- set the AI profile for this session", + " -- ~~~~~~~~~~~~~~", + " dbms_cloud_ai.set_profile(", + " profile_name => 'genai'", + " ); ", + " ", + "", + "end;" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331912481, + "endTime" : 1719331913987, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Success! Sales by customer segment", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "", + "select ai runsql What are sales by customer segment" + ], + "selectedVisualization" : "bar", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331914120, + "endTime" : 1719331916366, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "#### Use a PLSQL API to access the LLM", + "You can use a PLSQL API to access the LLM. This is useful for tools that are unable to use the SQL interface. Here's a couple examples that use `DBMS_CLOUD_AI.GENERATE` that to translate natural lange to SQL.", + "", + "This approach is used by the **Ask Autonomous** APEX app." + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : true, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719332969164, + "endTime" : 1719332969232, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "You can use a PLSQL API to access the LLM. This is useful for tools that are unable to use the SQL interface. Here's a couple examples that use DBMS_CLOUD_AI.GENERATE
that to translate natural lange to SQL.
This approach is used by the Ask Autonomous APEX app.
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Chat using the PLSQL API", + "hasTitle" : true, + "message" : [ + "%script", + "", + "declare", + " l_prompt varchar2(4000) := 'Who is Tom Hanks?';", + " l_response clob;", + " l_profile_name varchar2(100) := 'genai';", + "begin", + " l_response := dbms_cloud_ai.generate(", + " prompt => l_prompt,", + " profile_name => l_profile_name,", + " action => 'chat' ", + " );", + " dbms_output.put_line(l_response);", + "end; " + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331916938, + "endTime" : 1719331919244, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "SHOWSQL using the PLSQL API", + "hasTitle" : true, + "message" : [ + "%script", + "", + "", + "declare", + " l_prompt varchar2(4000) := 'What are our total views by genre?';", + " l_response clob;", + " l_profile_name varchar2(100) := 'genai';", + "begin", + " l_response := dbms_cloud_ai.generate(", + " prompt => l_prompt,", + " profile_name => l_profile_name,", + " action => 'showsql' ", + " );", + " dbms_output.put_line(l_response);", + "end; " + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331919377, + "endTime" : 1719331921250, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "#### What to do when my table and column names are difficult to understand?", + "It's convenient that our movie data is contained in tables that use clear names. Unfortunately, that's oftentimes not the case! ", + "", + "Use **COMMENTS** on tables and columns to help the model understand their meaning.", + "", + "We'll create views with meaningless names and then try a natural language query. Then, we'll apply comments to see how they help." + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1721927728815, + "endTime" : 1721927728972, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "It's convenient that our movie data is contained in tables that use clear names. Unfortunately, that's oftentimes not the case!
\nUse COMMENTS on tables and columns to help the model understand their meaning.
\nWe'll create views with meaningless names and then try a natural language query. Then, we'll apply comments to see how they help.
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Create views with generic names", + "hasTitle" : true, + "message" : [ + "%script", + "", + "-- movies", + "CREATE or REPLACE VIEW view1", + "AS SELECT ", + " movie_id as c1,", + " title as c2,", + " year as c3", + "FROM movies;", + "", + "-- streams", + "CREATE OR REPLACE VIEW view2 as", + "SELECT DAY_ID as c1,", + " GENRE_ID as c2,", + " MOVIE_ID as c3,", + " CUST_ID as c4,", + " DEVICE as c5,", + " SALES as c6,", + " VIEWS as c7", + "FROM STREAMS;", + "", + "-- genres", + "create or replace view view3 as", + "SELECT ", + " GENRE_ID as c1,", + " NAME as c2", + "FROM GENRE;" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331921603, + "endTime" : 1719331921731, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Query VIEW3", + "hasTitle" : true, + "message" : [ + "%sql", + "SELECT * FROM view3;" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331921874, + "endTime" : 1719331921956, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md ", + "#### Create a new AI profile that uses COMMENTS", + "", + "We'll create a new AI profile called `USING_COMMENTS`. Notice that the profile has an attribute `\"comments\":\"true\"`. This tells Select AI to send comments with the LLM request.", + "", + "We still haven't added comments to our objects - that will come next!" + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1721927753546, + "endTime" : 1721927753724, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "We'll create a new AI profile called USING_COMMENTS
. Notice that the profile has an attribute "comments":"true"
. This tells Select AI to send comments with the LLM request.
We still haven't added comments to our objects - that will come next!
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "Create the new profile", + "hasTitle" : true, + "message" : [ + "%script", + "", + "begin", + " dbms_cloud_ai.drop_profile(", + " profile_name => 'USING_COMMENTS',", + " force => true", + " );", + "", + " dbms_cloud_ai.create_profile(", + " profile_name => 'USING_COMMENTS',", + " attributes => ", + " '{\"provider\": \"oci\",", + " \"credential_name\": \"OCI$RESOURCE_PRINCIPAL\",", + " \"comments\":\"true\", ", + " \"object_list\": [", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"view1\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"view2\"},", + " {\"owner\": \"MOVIESTREAM\", \"name\": \"view3\"} ", + " ] ", + " }'", + " );", + " ", + " dbms_cloud_ai.set_profile(", + " profile_name => 'USING_COMMENTS'", + " );", + "end;" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331922279, + "endTime" : 1719331923886, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : "No comments, no luck!", + "hasTitle" : true, + "message" : [ + "%sql", + "", + "select ai runsql What are our total views by genre" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331924019, + "endTime" : 1719331928132, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%md", + "##### Add comments to the views", + "Apply comments to the views that describe their meaning. This is really helpful - not just in this case where it's absolutely needed - but in most every case. It helps the LLM find the right information." + ], + "selectedVisualization" : "html", + "visualizationConfig" : null, + "hideCode" : true, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719332983742, + "endTime" : 1719332983905, + "interpreter" : "md.low", + "taskStatus" : "SUCCESS", + "status" : "SUCCESS", + "results" : [ + { + "message" : "Apply comments to the views that describe their meaning. This is really helpful - not just in this case where it's absolutely needed - but in most every case. It helps the LLM find the right information.
\n", + "type" : "HTML" + } + ], + "forms" : "[]" + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%script", + "", + "-- Movies", + "COMMENT ON TABLE view1 IS 'Contains movies, movie titles and the year it was released';", + "COMMENT ON COLUMN view1.c1 IS 'movie ids. Use this column to join to other views';", + "COMMENT ON COLUMN view1.c2 IS 'movie titles';", + "COMMENT ON COLUMN view1.c3 IS 'year the movie was released';", + "", + "-- Streams", + "COMMENT ON TABLE view2 IS 'transactions for movie views - also known as streams';", + "COMMENT ON COLUMN view2.c1 IS 'day the movie was streamed';", + "COMMENT ON COLUMN view2.c2 IS 'genre ids. Use this column to join to other views';", + "COMMENT ON COLUMN view2.c3 IS 'movie ids. Use this column to join to other views';", + "COMMENT ON COLUMN view2.c4 IS 'customer ids. Use this column to join to other views';", + "COMMENT ON COLUMN view2.c5 IS 'device used to stream, watch or view the movie';", + "COMMENT ON COLUMN view2.c6 IS 'sales from the movie';", + "COMMENT ON COLUMN view2.c7 IS 'number of views, watched, streamed';", + "", + "-- Genres", + "COMMENT ON TABLE view3 IS 'Contains the genres';", + "COMMENT ON COLUMN view3.c1 IS 'genre id. use this column to join to other views';", + "COMMENT ON COLUMN view3.c2 IS 'name of the genre';" + ], + "selectedVisualization" : "raw", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331928462, + "endTime" : 1719331928618, + "interpreter" : "script.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + }, + { + "row" : 0, + "col" : 0, + "sizeX" : 0, + "width" : 0, + "title" : null, + "hasTitle" : false, + "message" : [ + "%sql", + "", + "select ai runsql what are our top 10 most viewed movies" + ], + "selectedVisualization" : "table", + "visualizationConfig" : null, + "hideCode" : false, + "hideResult" : false, + "hideGutter" : true, + "hideVizConfig" : false, + "hideInIFrame" : false, + "enabled" : true, + "forms" : "[]", + "result" : { + "startTime" : 1719331928756, + "endTime" : 1719331931858, + "interpreter" : "sql.low", + "taskStatus" : null, + "status" : null, + "results" : null, + "forms" : null + }, + "relations" : [ ], + "dynamicFormParams" : null + } + ] + } +] \ No newline at end of file diff --git a/shared/adb-speaks-human/notebook/adb-speaks-human-notebook.dsnb b/shared/adb-speaks-human/notebook/adb-speaks-human-notebook.dsnb index 0d86d02a..31518139 100644 --- a/shared/adb-speaks-human/notebook/adb-speaks-human-notebook.dsnb +++ b/shared/adb-speaks-human/notebook/adb-speaks-human-notebook.dsnb @@ -50,8 +50,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1721687755875, - "endTime" : 1721687755961, + "startTime" : 1730132675976, + "endTime" : 1730132676037, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -64,7 +64,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -87,13 +87,13 @@ "hideCode" : true, "hideResult" : false, "hideGutter" : true, - "hideVizConfig" : false, + "hideVizConfig" : true, "hideInIFrame" : false, "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332899047, - "endTime" : 1719332899239, + "startTime" : 1730132687461, + "endTime" : 1730132687795, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -106,7 +106,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -145,7 +145,8 @@ " {\"owner\": \"MOVIESTREAM\", \"name\": \"genre\"},", " {\"owner\": \"MOVIESTREAM\", \"name\": \"customer_segment\"},", " {\"owner\": \"MOVIESTREAM\", \"name\": \"customer_contact\"}", - " ]", + " ],", + " \"region\": \"us-chicago-1\"", " }'", " );", " -- ~~~~~~~~~~~~~~", @@ -158,7 +159,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -166,8 +167,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331865111, - "endTime" : 1719331869205, + "startTime" : 1730132656159, + "endTime" : 1730132658355, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -175,7 +176,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -210,8 +211,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332910363, - "endTime" : 1719332910467, + "startTime" : 1730133536764, + "endTime" : 1730133536839, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -224,7 +225,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -239,7 +240,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : "[{\"raw\":{\"layout\":\"beautify\",\"lastColumns\":[],\"version\":1},\"table\":{\"version\":1}}]", - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -247,8 +248,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331869566, - "endTime" : 1719331873585, + "startTime" : 1730132431224, + "endTime" : 1730132457649, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -256,7 +257,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -291,8 +292,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332917173, - "endTime" : 1719332917246, + "startTime" : 1730133559446, + "endTime" : 1730133559518, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -305,7 +306,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -325,7 +326,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -333,8 +334,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331873955, - "endTime" : 1719331874177, + "startTime" : 1730132457887, + "endTime" : 1730132457964, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -342,7 +343,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -362,7 +363,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -370,8 +371,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331874307, - "endTime" : 1719331874431, + "startTime" : 1730132458038, + "endTime" : 1730132458184, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -379,7 +380,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -398,7 +399,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -406,8 +407,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331874728, - "endTime" : 1719331874957, + "startTime" : 1730132458264, + "endTime" : 1730132458333, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -415,7 +416,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -439,8 +440,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332943860, - "endTime" : 1719332943934, + "startTime" : 1730133575627, + "endTime" : 1730133575699, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -453,7 +454,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -470,7 +471,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : true, @@ -478,8 +479,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331875278, - "endTime" : 1719331877418, + "startTime" : 1730132458547, + "endTime" : 1730132460944, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -487,7 +488,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -504,7 +505,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : true, @@ -512,8 +513,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331877547, - "endTime" : 1719331880521, + "startTime" : 1730132461019, + "endTime" : 1730132463615, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -521,7 +522,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -538,7 +539,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -546,8 +547,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331880670, - "endTime" : 1719331882093, + "startTime" : 1730132463686, + "endTime" : 1730132465178, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -555,7 +556,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -572,7 +573,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : "[{\"raw\":{\"layout\":\"beautify\",\"lastColumns\":[],\"version\":1}}]", - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -580,8 +581,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331882214, - "endTime" : 1719331886814, + "startTime" : 1730132465250, + "endTime" : 1730132473847, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -589,7 +590,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -615,8 +616,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332949674, - "endTime" : 1719332949754, + "startTime" : 1730133472238, + "endTime" : 1730133472385, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -629,7 +630,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -642,11 +643,11 @@ "%sql", "", "", - "select ai what are our total sales by movie with best movies first;" + "select ai what are our total sales by movie with best movies first" ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -654,8 +655,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331887130, - "endTime" : 1719331889433, + "startTime" : 1730132474047, + "endTime" : 1730132478057, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -663,7 +664,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -680,7 +681,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -688,8 +689,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331889579, - "endTime" : 1719331891693, + "startTime" : 1730132478349, + "endTime" : 1730132481347, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -697,7 +698,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -714,7 +715,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -722,8 +723,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331891834, - "endTime" : 1719331895244, + "startTime" : 1730132481418, + "endTime" : 1730132486615, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -731,7 +732,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -748,7 +749,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -756,8 +757,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331895372, - "endTime" : 1719331897989, + "startTime" : 1730132486689, + "endTime" : 1730132490888, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -765,7 +766,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -782,7 +783,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -790,8 +791,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331898126, - "endTime" : 1719331900841, + "startTime" : 1730132490958, + "endTime" : 1730132495856, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -799,7 +800,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -816,75 +817,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, - "hideResult" : false, - "hideGutter" : true, - "hideVizConfig" : false, - "hideInIFrame" : false, - "enabled" : true, - "forms" : "[]", - "result" : { - "startTime" : 1719331901011, - "endTime" : 1719331903336, - "interpreter" : "script.low", - "taskStatus" : null, - "status" : null, - "results" : null, - "forms" : null - }, - "relations" : [ ], - "dynamicFormParams" : null - }, - { - "row" : 0, - "col" : 0, - "sizeX" : 0, - "width" : 6, - "title" : "How people watch Action/Adventure movies", - "hasTitle" : true, - "message" : [ - "%sql", - "", - "", - "select ai runsql what are the most popular devices when watching Action and Adventure movies;" - ], - "selectedVisualization" : "table", - "visualizationConfig" : null, - "hideCode" : false, - "hideResult" : false, - "hideGutter" : true, - "hideVizConfig" : false, - "hideInIFrame" : false, - "enabled" : true, - "forms" : "[]", - "result" : { - "startTime" : 1719331903491, - "endTime" : 1719331906506, - "interpreter" : "sql.low", - "taskStatus" : null, - "status" : null, - "results" : null, - "forms" : null - }, - "relations" : [ ], - "dynamicFormParams" : null - }, - { - "row" : 0, - "col" : 0, - "sizeX" : 0, - "width" : 6, - "title" : "Model knows A&A are genres", - "hasTitle" : true, - "message" : [ - "%script", - " ", - "", - "select ai showsql what are the most popular devices when watching Action and Adventure movies;" - ], - "selectedVisualization" : "raw", - "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -892,8 +825,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331906663, - "endTime" : 1719331909069, + "startTime" : 1730132495924, + "endTime" : 1730132500920, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -901,7 +834,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -912,16 +845,13 @@ "hasTitle" : false, "message" : [ "%md", - "#### Challenge with tables and similar content. Need to create a view.", - "", + "#### Simplify sources for the model using a view.", "", - "The next question fails. The challenge is when you have multiple tables with similar content - like `CUSTOMER_CONTACT` and `CUSTOMER_EXTENSION`. The model fails to find the right tables.", + "It's good to simplify your sources to make the model more effective. For example, you may have tables with overlapping content - creating a view that includes the correct columns will make SQL generation more reliable. Let's create a view to disambiguate customer information.", "", - "After the failed query, you will solve the problem by: ", - "* creating a view to join `CUSTOMER_CONTACT`, `CUSTOMER_SEGMENT` and `CUSTOMER_SEGMENT`", - "* updating the AI profile to include this new view", "", - "Then, ask the question again" + "* Create a view to join `CUSTOMER_CONTACT`, `CUSTOMER_SEGMENT` and `CUSTOMER_SEGMENT`", + "* Update the AI profile to include this new view" ], "selectedVisualization" : "html", "visualizationConfig" : null, @@ -933,55 +863,21 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1721927831011, - "endTime" : 1721927831120, + "startTime" : 1730133632678, + "endTime" : 1730133632751, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", "results" : [ { - "message" : "The next question fails. The challenge is when you have multiple tables with similar content - like CUSTOMER_CONTACT
and CUSTOMER_EXTENSION
. The model fails to find the right tables.
After the failed query, you will solve the problem by:
\nCUSTOMER_CONTACT
, CUSTOMER_SEGMENT
and CUSTOMER_SEGMENT
Then, ask the question again
\n", + "message" : "It's good to simplify your sources to make the model more effective. For example, you may have tables with overlapping content - creating a view that includes the correct columns will make SQL generation more reliable. Let's create a view to disambiguate customer information.
\nCUSTOMER_CONTACT
, CUSTOMER_SEGMENT
and CUSTOMER_SEGMENT
You can use a PLSQL API to access the LLM. This is useful for tools that are unable to use the SQL interface. Here's a couple examples that use DBMS_CLOUD_AI.GENERATE
that to translate natural lange to SQL.
This approach is used by the Ask Autonomous APEX app.
\n", + "message" : "You can use a PLSQL API to access the LLM. This is useful for tools that are unable to use the SQL interface. Here's a couple examples that use DBMS_CLOUD_AI.GENERATE
that to translate natural lange to SQL.
This approach is used by the Ask Autonomous APEX app.
\n", "type" : "HTML" } ], "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1256,7 +1153,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1264,8 +1161,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331916938, - "endTime" : 1719331919244, + "startTime" : 1730132507269, + "endTime" : 1730132521074, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -1273,7 +1170,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1287,7 +1184,7 @@ "", "", "declare", - " l_prompt varchar2(4000) := 'What are our total views by genre?';", + " l_prompt varchar2(4000) := 'What are our total streams by customer segment';", " l_response clob;", " l_profile_name varchar2(100) := 'genai';", "begin", @@ -1301,7 +1198,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1309,8 +1206,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331919377, - "endTime" : 1719331921250, + "startTime" : 1730132521145, + "endTime" : 1730132524340, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -1318,7 +1215,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1346,8 +1243,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1721927728815, - "endTime" : 1721927728972, + "startTime" : 1730133678742, + "endTime" : 1730133678821, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -1360,7 +1257,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1400,7 +1297,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1408,8 +1305,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331921603, - "endTime" : 1719331921731, + "startTime" : 1730132524540, + "endTime" : 1730132524633, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -1417,7 +1314,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1432,7 +1329,7 @@ ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1440,8 +1337,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331921874, - "endTime" : 1719331921956, + "startTime" : 1730132524702, + "endTime" : 1730132524774, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -1449,7 +1346,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1476,8 +1373,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1721927753546, - "endTime" : 1721927753724, + "startTime" : 1730133703712, + "endTime" : 1730133703805, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -1490,7 +1387,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1529,7 +1426,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1537,8 +1434,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331922279, - "endTime" : 1719331923886, + "startTime" : 1730132524978, + "endTime" : 1730132527172, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -1546,7 +1443,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1562,7 +1459,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1570,8 +1467,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331924019, - "endTime" : 1719331928132, + "startTime" : 1730132527250, + "endTime" : 1730132531148, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -1579,7 +1476,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1603,8 +1500,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719332983742, - "endTime" : 1719332983905, + "startTime" : 1730133732741, + "endTime" : 1730133732800, "interpreter" : "md.low", "taskStatus" : "SUCCESS", "status" : "SUCCESS", @@ -1617,7 +1514,7 @@ "forms" : "[]" }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1652,7 +1549,7 @@ ], "selectedVisualization" : "raw", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1660,8 +1557,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331928462, - "endTime" : 1719331928618, + "startTime" : 1730132531356, + "endTime" : 1730132531505, "interpreter" : "script.low", "taskStatus" : null, "status" : null, @@ -1669,7 +1566,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" }, { "row" : 0, @@ -1681,11 +1578,11 @@ "message" : [ "%sql", "", - "select ai runsql what are our top 10 most viewed movies" + "select ai runsql what are our top 10 most viewed moviesx" ], "selectedVisualization" : "table", "visualizationConfig" : null, - "hideCode" : false, + "hideCode" : true, "hideResult" : false, "hideGutter" : true, "hideVizConfig" : false, @@ -1693,8 +1590,8 @@ "enabled" : true, "forms" : "[]", "result" : { - "startTime" : 1719331928756, - "endTime" : 1719331931858, + "startTime" : 1730132531574, + "endTime" : 1730132534466, "interpreter" : "sql.low", "taskStatus" : null, "status" : null, @@ -1702,7 +1599,7 @@ "forms" : null }, "relations" : [ ], - "dynamicFormParams" : null + "dynamicFormParams" : "{}" } ] } diff --git a/shared/adb-speaks-human/query-using-select-ai/images/import-successful.png b/shared/adb-speaks-human/query-using-select-ai/images/import-successful.png index 64610452..67119c8b 100644 Binary files a/shared/adb-speaks-human/query-using-select-ai/images/import-successful.png and b/shared/adb-speaks-human/query-using-select-ai/images/import-successful.png differ diff --git a/shared/adb-speaks-human/query-using-select-ai/images/oml-home-page-new.png b/shared/adb-speaks-human/query-using-select-ai/images/oml-home-page-new.png new file mode 100644 index 00000000..48f12d01 Binary files /dev/null and b/shared/adb-speaks-human/query-using-select-ai/images/oml-home-page-new.png differ diff --git a/shared/adb-speaks-human/query-using-select-ai/images/run-all-paragraph.png b/shared/adb-speaks-human/query-using-select-ai/images/run-all-paragraph.png index ab2fd2e5..b4a72ba5 100644 Binary files a/shared/adb-speaks-human/query-using-select-ai/images/run-all-paragraph.png and b/shared/adb-speaks-human/query-using-select-ai/images/run-all-paragraph.png differ diff --git a/shared/adb-speaks-human/query-using-select-ai/query-using-select-ai.md b/shared/adb-speaks-human/query-using-select-ai/query-using-select-ai.md index 63f4220b..cf602e84 100644 --- a/shared/adb-speaks-human/query-using-select-ai/query-using-select-ai.md +++ b/shared/adb-speaks-human/query-using-select-ai/query-using-select-ai.md @@ -187,15 +187,15 @@ If you are no longer logged in to your Cloud account, start with **step 1** belo ![Click the Oracle Machine Learning card](./images/oml-tab.png " ") -7. On the **SIGN IN** page, enter **`moviestream`** in the **Username** field, the **`adb_user_password`** that you saved in **Lab 1 > Task 2 Step 6** in the **Password** field, and then click **Sign In**. +7. On the **SIGN IN** page, enter **`moviestream`** in the **Username** field, the **`adb_user_password`** that you saved in **Lab 1 > Task 2 > Step 6** in the **Password** field, and then click **Sign In**. ![Enter credentials on the Sign In page](./images/oml-sign-in.png " ") The **Oracle Machine Learning** Home page is displayed. You can use this landing page to access tutorials, model creation, notebooks, and much more. - ![Oracle Machine Learning Home page is displayed.](./images/oml-home-page.png " ") + ![Oracle Machine Learning Home page is displayed.](./images/oml-home-page-new.png " ") -8. In the **Quick Actions** section, click the **Notebooks** button. The **Notebooks** page is displayed. +8. In the **Quick Actions** section, click the **Notebooks** icon. The **Notebooks** page is displayed. ![The Notebooks page is displayed](./images/notebooks-page-displayed.png " ") @@ -211,7 +211,7 @@ You can import a notebook from a local disk or from a remote location if you pro ![The Open dialog box is displayed](./images/open-imported-notebook.png " ") - If the import is successful, a notification is displayed and the **`ADB Speaks Human`** notebook is displayed in the list of available notebooks. + If the import is successful, a notification is displayed and the **`adb-speaks-human-notebook`** notebook is displayed in the list of available notebooks. ![The newly imported notebook is displayed.](./images/import-successful.png " ") @@ -219,15 +219,11 @@ You can import a notebook from a local disk or from a remote location if you pro >**Note:** If a **User Action Required** message is displayed when you open the notebook, click **Allow Run**. - ![The notebook and the paragraphs it contains is displayed in the Notebook Editor.](./images/notebook-displayed.png " ") - ## Task 4: Review and Run the Imported Notebook A notebook is comprised of paragraphs that use different languages: SQL, PL/SQL, Python, R, markdown and more. The **ADB Speaks Human** notebook is well-documented using markdown code. Examine the paragraphs in the notebook and then execute the code. Feel free to run different types of queries! -1. Display the code sections of all paragraphs in the notebook. On the notebook banner, the **Show Code** icon. This is a toggle icon that you can use to show or hide the code in all paragraphs. - - >**Note:** By default, the code sections of all markdown paragraphs in this notebook are hidden. +1. In this notebook, the code sections of all paragraphs in the notebook are hidden. Only the results (outputs) of all markdown paragraphs are displayed. To show or hide the code sections in all the paragraphs, on the notebook's banner, click the **Show Code** icon. This is a toggle icon that you can use to show or hide the code in all paragraphs. Click the **Show Code** icon. ![Select Show Code from the Actions drop-down menu](./images/show-code.png =75%x*) @@ -237,7 +233,7 @@ A notebook is comprised of paragraphs that use different languages: SQL, PL/SQL, In this notebook, the **`%md`** (Markdown) paragraphs provide useful information about the paragraphs. The **`%md`** Markdown interpreter generates static html from plain Markdown text. In this lab, you will review the code in each paragraph one at a time, run that paragraph, and review the results as desired. It is a good idea to hide the code of any .md paragraph. -2. Display the result (output) sections of all paragraphs in the notebook. On the notebook banner, click the **Show Result/Hide Result** icon to show the output sections of the paragraphs where the output section is not shown by default. +2. By default, when you imported the notebook, the results (output) sections of the .md paragraphs were displayed. On the notebook banner, click the **Show Result/Hide Result** icon to show the output sections of the paragraphs where the output section is not shown by default. ![The Show/hide the output icon on the notebook toolbar is shown as clicked.](./images/show-result.png " ") @@ -275,7 +271,7 @@ You may now proceed to the next lab. * **Author:** Lauran K. Serhal, Consulting User Assistance Developer * **Contributor:** Marty Gubar, Product Manager -* **Last Updated By/Date:** Lauran K. Serhal, July 2024 +* **Last Updated By/Date:** Lauran K. Serhal, October 2024 Data about movies in this workshop were sourced from **Wikipedia**.