diff --git a/.github/workflows/deploy-v2.yml b/.github/workflows/deploy-v2.yml
new file mode 100644
index 000000000..58b0e3a10
--- /dev/null
+++ b/.github/workflows/deploy-v2.yml
@@ -0,0 +1,346 @@
+name: Validate Deployment v2
+
+on:
+ workflow_run:
+ workflows: ["Build Docker and Optional Push"]
+ types:
+ - completed
+ branches:
+ - macae-v2
+ - dev
+ schedule:
+ - cron: "0 11,23 * * *" # Runs at 11:00 AM and 11:00 PM GMT
+ workflow_dispatch: #Allow manual triggering
+env:
+ GPT_MIN_CAPACITY: 150
+ BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ outputs:
+ RESOURCE_GROUP_NAME: ${{ steps.check_create_rg.outputs.RESOURCE_GROUP_NAME }}
+ WEBAPP_URL: ${{ steps.get_output.outputs.WEBAPP_URL }}
+ DEPLOYMENT_SUCCESS: ${{ steps.deployment_status.outputs.SUCCESS }}
+ MACAE_URL_API: ${{ steps.get_backend_url.outputs.MACAE_URL_API }}
+ CONTAINER_APP: ${{steps.get_backend_url.outputs.CONTAINER_APP}}
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v3
+
+ - name: Run Quota Check
+ id: quota-check
+ run: |
+ export AZURE_CLIENT_ID=${{ secrets.AZURE_CLIENT_ID }}
+ export AZURE_TENANT_ID=${{ secrets.AZURE_TENANT_ID }}
+ export AZURE_CLIENT_SECRET=${{ secrets.AZURE_CLIENT_SECRET }}
+ export AZURE_SUBSCRIPTION_ID="${{ secrets.AZURE_SUBSCRIPTION_ID }}"
+ export GPT_MIN_CAPACITY="150"
+ export AZURE_REGIONS="${{ vars.AZURE_REGIONS }}"
+
+ chmod +x infra/scripts/checkquota.sh
+ if ! infra/scripts/checkquota.sh; then
+ # If quota check fails due to insufficient quota, set the flag
+ if grep -q "No region with sufficient quota found" infra/scripts/checkquota.sh; then
+ echo "QUOTA_FAILED=true" >> $GITHUB_ENV
+ fi
+ exit 1 # Fail the pipeline if any other failure occurs
+ fi
+
+ - name: Send Notification on Quota Failure
+ if: env.QUOTA_FAILED == 'true'
+ run: |
+ RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+ EMAIL_BODY=$(cat <
The quota check has failed, and the pipeline cannot proceed.
Build URL: ${RUN_URL}
Please take necessary action.
Best regards,
Your Automation Team
We would like to inform you that the Multi-Agent-Custom-Automation-Engine-Solution-Accelerator Automation process has encountered an issue and has failed to complete successfully.
Build URL: ${RUN_URL}
${OUTPUT}
Please investigate the matter at your earliest convenience.
Best regards,
Your Automation Team
The quota check has failed, and the pipeline cannot proceed.
Build URL: ${RUN_URL}
Please take necessary action.
Best regards,
Your Automation Team
We would like to inform you that the Multi-Agent-Custom-Automation-Engine-Solution-Accelerator Automation process has encountered an issue and has failed to complete successfully.
Build URL: ${RUN_URL}
${OUTPUT}
Please investigate the matter at your earliest convenience.
Best regards,
Your Automation Team
Please bake 12 chocolate chip cookies for tomorrow's event.
-az account set --subscription "<YourSubscriptionId>"
+ 2. Register the feature (one time per subscription):
+ Run: az feature register --name EncryptionAtHost --namespace Microsoft.Compute
+ 3. Wait until registration completes and shows "Registered":
+ Run: az feature show --name EncryptionAtHost --namespace Microsoft.Compute --query properties.state -o tsv
+ 4. Refresh the provider (if required):
+ Run: az provider register --namespace Microsoft.Compute
+ 5. Re-run the deployment after registration is complete.
+
+ Note: Feature registration can take several minutes. Ensure the feature is registered before attempting deployments that require encryptionAtHost.
+
+ Reference: Azure Host Encryption β https://learn.microsoft.com/azure/virtual-machines/disks-enable-host-based-encryption-portal?tabs=azure-cli
+
- Enhanced network security (e.g., Network protection with private endpoints)
- Stricter access controls and managed identities
- Logging, monitoring, and diagnostics enabled by default
@@ -239,11 +256,47 @@ Once you've opened the project in [Codespaces](#github-codespaces), [Dev Contain
- This deployment will take _4-6 minutes_ to provision the resources in your account and set up the solution with sample data.
- If you encounter an error or timeout during deployment, changing the location may help, as there could be availability constraints for the resources.
-5. Once the deployment has completed successfully, open the [Azure Portal](https://portal.azure.com/), go to the deployed resource group, find the App Service, and get the app URL from `Default domain`.
+5. After deployment completes, you can upload Team Configurations using command printed in the terminal. The command will look like one of the following. Run the appropriate command for your shell from the project root:
+
+ - **For Bash (Linux/macOS/WSL):**
+ ```bash
+ bash infra/scripts/upload_team_config.sh
+ ```
+
+ - **For PowerShell (Windows):**
+ ```powershell
+ infra\scripts\Upload-Team-Config.ps1
+ ```
+
+6. After deployment completes, you can index Sample Data into Search Service using command printed in the terminal. The command will look like one of the following. Run the appropriate command for your shell from the project root:
+
+ - **For Bash (Linux/macOS/WSL):**
+ ```bash
+ bash infra/scripts/process_sample_data.sh
+ ```
-6. When Deployment is complete, follow steps in [Set Up Authentication in Azure App Service](../docs/azure_app_service_auth_setup.md) to add app authentication to your web app running on Azure App Service
+ - **For PowerShell (Windows):**
+ ```powershell
+ infra\scripts\Process-Sample-Data.ps1
+ ```
-7. If you are done trying out the application, you can delete the resources by running `azd down`.
+7. To upload team configurations and index sample data in one step. Run the appropriate command for your shell from the project root:
+
+ - **For Bash (Linux/macOS/WSL):**
+ ```bash
+ bash infra/scripts/team_config_and_data.sh
+ ```
+
+ - **For PowerShell (Windows):**
+ ```powershell
+ infra\scripts\Team-Config-And-Data.ps1
+ ```
+
+8. Once the deployment has completed successfully, open the [Azure Portal](https://portal.azure.com/), go to the deployed resource group, find the App Service, and get the app URL from `Default domain`.
+
+9. When Deployment is complete, follow steps in [Set Up Authentication in Azure App Service](../docs/azure_app_service_auth_setup.md) to add app authentication to your web app running on Azure App Service
+
+10. If you are done trying out the application, you can delete the resources by running `azd down`.
### π οΈ Troubleshooting
@@ -419,6 +472,14 @@ or Run
11. Open a browser and navigate to `http://localhost:3000`
12. To see swagger API documentation, you can navigate to `http://localhost:8000/docs`
+## Deploy Your local changes
+To Deploy your local changes rename the below files.
+ 1. Rename `azure.yaml` to `azure_custom2.yaml` and `azure_custom.yaml` to `azure.yaml`.
+ 2. Go to `infra` directory
+ - Remove `main.bicep` to `main_custom2.bicep` and `main_custom.bicep` to `main.bicep`.
+Continue with the [deploying steps](#deploying-with-azd).
+
+
## Debugging the solution locally
You can debug the API backend running locally with VSCode using the following launch.json entry:
diff --git a/docs/SampleQuestions.md b/docs/SampleQuestions.md
deleted file mode 100644
index 770a994b7..000000000
--- a/docs/SampleQuestions.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Sample Questions
-
-To help you get started, here are some **Sample Prompts** you can ask in the app:
-
-1. Run each of the following sample prompts and verify that a plan is generated:
- - Launch a new marketing campaign
- - Procure new office equipment
- - Initiate a new product launch
-
-2. Run the **Onboard employee** prompt:
- - Remove the employee name from the prompt to test how the solution handles missing information.
- - The solution should ask for the missing detail before proceeding.
-
-3. Try running known **RAI test prompts** to confirm safeguard behavior:
- - You should see a toast message indicating that a plan could not be generated due to policy restrictions.
-
-
-**Home Page**
-
-
-**Task Page**
-
-
-
-_This structured approach helps ensure the system handles prompts gracefully, verifies plan generation flows, and confirms RAI protections are working as intended._
diff --git a/docs/SetUpGroundingWithBingSearch.md b/docs/SetUpGroundingWithBingSearch.md
new file mode 100644
index 000000000..8ccdd2302
--- /dev/null
+++ b/docs/SetUpGroundingWithBingSearch.md
@@ -0,0 +1,99 @@
+
+# π Grounding with Bing Search β Quick Setup
+
+This guide walks you through setting up Grounding with Bing Search and connecting it to your Azure AI Foundry project. This tool enables your AI agents to retrieve real-time public web data, enhancing responses with up-to-date information.
+
+---
+
+## β
Prerequisites
+
+- An active **Azure subscription**
+- **Azure CLI** installed and logged in (`az login`)
+- A **resource group** created
+- Register the Bing provider (one-time setup):
+
+ ```bash
+ az provider register --namespace Microsoft.Bing
+
+β οΈ **Important:**
+Bing Search Grounding only supports **API key authentication**.
+Ensure your **Azure AI Foundry account has Local Authentication enabled**.
+If local auth is disabled, you will not be able to connect Bing Search.
+
+---
+
+## π Step 1: Create a Bing Search Grounding Resource
+
+### Option A β Azure Portal
+
+1. In the [Azure Portal](https://portal.azure.com), search for **Bing Search (Grounding)**.
+2. Click **Create**.
+3. Select your **Subscription** and **Resource Group**.
+4. Enter a **Resource Name** and choose a **Pricing Tier (SKU)**.
+5. At the bottom of the form, tick the required checkbox:
+ β
*βI confirm I have read and understood the notice above.β*
+ (You cannot proceed without this.)
+6. Click **Review + Create** β **Create**.
+
+---
+
+### Option B β Azure CLI
+
+Set your variables (replace with your own values):
+
+```bash
+RESOURCE_GROUP="