[
  {
    "path": ".github/CODEOWNERS",
    "content": "# Instructions for CODEOWNERS file format and automatic build failure notifications:\n# https://github.blog/2017-07-06-introducing-code-owners/\n# https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners\n\n*                         @backwind1233 @chenrujun @hui1110 @moarychan @netyyyy @saragluna @stliu @yiliuTo\ndocs/src/main/asciidoc/   @chenrujun @hui1110 @yiliuTo\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: azure-spring\nassignees: ''\n\n---\n\n**Describe the bug**\n<!-- A clear and concise description of what the bug is. -->\n\n***Exception or Stack Trace***\n<!-- Add the exception log and stack trace if available -->\n\n**To Reproduce**\n<!-- Steps to reproduce the behavior: -->\n\n***Code Snippet***\n<!-- Add the code snippet that causes the issue. -->\n\n**Expected behavior**\n<!-- A clear and concise description of what you expected to happen. -->\n\n**Screenshots**\n<!-- If applicable, add screenshots to help explain your problem. -->\n\n**Content (please complete the following information if possible):**\n<!-- - Content: https://microsoft.github.io/spring-cloud-azure/4.0.0/reference/html/index.html#spring-data-support -->\n<!-- - Content Source: https://github.com/microsoft/spring-cloud-azure/blob/main/docs/src/main/asciidoc/spring-data-support.adoc -->\n\n**Additional context**\n<!-- Add any other context about the problem here. -->\n\n**Information Checklist**\n<!-- Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report -->\n- [ ] Bug Description Added\n- [ ] Repro Steps Added\n- [ ] Setup information Added"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"[FEATURE REQ]\"\nlabels: azure-spring\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\n<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->\n\n**Describe the solution you'd like**\n<!-- A clear and concise description of what you want to happen. -->\n\n**Describe alternatives you've considered**\n<!-- A clear and concise description of any alternative solutions or features you've considered. -->\n\n**Additional context**\n<!-- Add any other context or screenshots about the feature request here. -->\n\n**Information Checklist**\n<!-- Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report -->\n- [ ] Description Added\n- [ ] Expected solution specified\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question-query-template.md",
    "content": "---\nname: Question/Query template\nabout: Use this template to file a question/query\ntitle: \"[QUERY]\"\nlabels: azure-spring\nassignees: ''\n\n---\n\n**Query/Question**\n<!-- A clear and concise ask/query. -->\n\n***Why is this not a Bug or a feature Request?***\n<!-- A clear explanation of why is this not a bug or a feature request? -->\n\n**Content (please complete the following information if possible):**\n<!-- - Content: https://microsoft.github.io/spring-cloud-azure/4.0.0/reference/html/index.html#spring-data-support -->\n<!-- - Content Source: https://github.com/microsoft/spring-cloud-azure/blob/main/docs/src/main/asciidoc/spring-data-support.adoc -->\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n- package-ecosystem: maven\n  directory: \"/\"\n  schedule:\n    interval: daily\n  open-pull-requests-limit: 10\n"
  },
  {
    "path": ".github/workflows/broken-link-check.yml",
    "content": "# This is a basic workflow to help you get started with Actions\n\nname: Broken Link Checker\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request events but only for the main branch\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n  workflow_dispatch:\n\njobs:\n  check_html_links_job:\n    runs-on: ubuntu-latest\n    name: Check-Links-Action\n    steps:\n      - uses: actions/checkout@v4\n        name: Checkout Azure/azure-sdk-for-java\n        with:\n          repository: 'Azure/azure-sdk-for-java'\n          path: 'azure-sdk-for-java'\n          ref: main\n          fetch-depth: 0\n\n      - name: Set up JDK 17\n        uses: actions/setup-java@v4.2.2\n        with:\n          java-version: '17'\n          distribution: 'temurin'\n          cache: maven\n\n      - name: Build latest azure-sdk-for-java repository\n        run: |\n          cd azure-sdk-for-java\n          mvn clean install \\\n            -Dcheckstyle.skip=true \\\n            -Dcodesnippet.skip \\\n            -Denforcer.skip \\\n            -Djacoco.skip=true \\\n            -Dmaven.javadoc.skip=true \\\n            -Drevapi.skip=true \\\n            -DskipTests \\\n            -Dspotbugs.skip=true \\\n            -Pdev -T 4 -ntp -f sdk/spring/pom.xml\n\n      - uses: actions/checkout@v4\n\n      - name: Build Docs\n        run: |\n          ./mvnw clean install -P docs -pl docs -DskipTests\n\n      - name: Check link in generated html files\n        id: html-link-report\n        uses: peter-evans/link-checker@v1\n        with:\n          args: -d --document-root ./docs/target/generated-docs -r -x \"https://my.custom.endpoint.com:55300|localhost\"\n\n      - name: Replace bata to main in html-link-report result\n        run: |\n          if [ -d \"link-checker/\" ] ; then\n             cd link-checker\n             sudo sed -i 's/spring-cloud-azure_*.*.*-beta.[0-9]/main/g' *\n             sudo sed -i 's/```/ /g' *\n             sudo mv out.md ../\n          fi\n\n      - name: Remove files generated at build-time.\n        run: |\n          ./mvnw clean\n\n      - name: Check link in all markdown files\n        uses: gaurav-nelson/github-action-markdown-link-check@1.0.13\n        with:\n          use-quiet-mode: 'yes'\n          use-verbose-mode: 'yes'\n          config-file: '.github/workflows/markdown-link-check-config.json'\n"
  },
  {
    "path": ".github/workflows/markdown-link-check-config.json",
    "content": "{\n  \"ignorePatterns\": [\n    {\n      \"pattern\": \"^http://localhost\"\n    },\n    {\n      \"pattern\": \"^https://localhost\"\n    },\n    {\n      \"pattern\": \"https://my.custom.endpoint.com:55300\"\n    }\n  ],\n  \"timeout\": \"20s\",\n  \"aliveStatusCodes\": [200],\n  \"retryOn429\": true,\n  \"retryCount\": 5\n}\n"
  },
  {
    "path": ".github/workflows/schedule-current-link-check.yaml",
    "content": "# This is a basic workflow to help you get started with Actions\n\nname: GH Pages Broken Link Checker\n\n# Controls when the workflow will run\non:\n  # The schedule event allows you to trigger a workflow at a scheduled time.\n  workflow_dispatch:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  broken_link_checker_job:\n    runs-on: ubuntu-latest\n    name: Check for broken links\n    steps:\n      - name: Check for broken links\n        id: link-report\n        uses: ScholliYT/Broken-Links-Crawler-Action@v3\n        with:\n          website_url: 'https://microsoft.github.io/spring-cloud-azure/'\n          exclude_url_prefix: 'http://localhost:,http://HOST_NAME:,https://my.custom.endpoint.com:55300'\n          verbose: 'true'\n"
  },
  {
    "path": ".github/workflows/sync-label-from-azsdk-repo.yml",
    "content": "name: Sync Labels\non:\n  workflow_dispatch:\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Fetch Labels\n        run:  curl https://api.github.com/repos/Azure/azure-sdk-for-java/labels\\?per_page\\=1000 | jq -c '.[] | select(.name | contains(\"spring\"))' | jq -s >> labels.json\n\n      - name: Label Sync\n        uses: EndBug/label-sync@v2.1.0\n        with:\n          config-file: ./labels.json\n          dry-run: false\n"
  },
  {
    "path": ".github/workflows/update-docs.yaml",
    "content": "name: Update Docs\n\non:\n  push:\n    branches:\n    - main\n  # paths:\n    # - 'docs/**'\n  # release:\n  #   types: [published] # includes pre-release and regular releases, but does not include draft releases.\n  # workflow_dispatch:\n  #   inputs:\n  #     committish:\n  #       description: Tag or branch of the docs to be created or updated. Using `main` will update the landing page. Using anything else will create or update a versioned copy of the docs.\n  #       required: true\n  #       default: main\n\njobs:\n  updateDocs:\n    runs-on: ubuntu-20.04\n    steps:\n    - uses: actions/checkout@v3\n      name: Checkout Azure/azure-sdk-for-java\n      with:\n        repository: Azure/azure-sdk-for-java\n        ref: main\n        fetch-depth: 0\n\n    - name: Set up JDK 17\n      uses: actions/setup-java@v4.2.2\n      with:\n        java-version: '17'\n        distribution: 'temurin'\n        cache: maven\n\n    - name: Build latest azure-sdk-for-java repository\n      run: |\n        mvn clean install \\\n          -Dcheckstyle.skip=true \\\n          -Dcodesnippet.skip \\\n          -Denforcer.skip \\\n          -Djacoco.skip=true \\\n          -Dmaven.javadoc.skip=true \\\n          -Drevapi.skip=true \\\n          -DskipTests \\\n          -Dspotbugs.skip=true \\\n          -Pdev -T 4 -ntp -f sdk/spring/pom.xml\n\n    - name: Get current date\n      id: date\n      run: echo \"date=$(date +'%Y-%m-%d' --utc)\" >> $GITHUB_OUTPUT\n    - uses: actions/checkout@v3\n      with:\n        token: ${{ secrets.ACCESS_TOKEN }}\n    - run: |\n        git config user.name github-actions\n        git config user.email github-actions@github.com\n\n    - uses: actions/setup-java@v4.2.2\n      with:\n        java-version: 17\n        distribution: 'temurin'\n\n    - uses: actions/cache@v3\n      id: mvn-cache\n      with:\n        path: ~/.m2/repository\n        key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.date }}\n\n    - name: Maven go offline\n      id: mvn-offline\n      if: steps.mvn-cache.outputs.cache-hit != 'true'\n      run: ./mvnw compile dependency:go-offline\n\n    - name: Mvn install # Need this when the version/directory/pom structure changes\n      run: |\n        ./mvnw \\\n          --batch-mode \\\n          --show-version \\\n          --threads 1.5C \\\n          --define maven.test.skip=true \\\n          --define maven.javadoc.skip=true \\\n          install\n\n    - name: Remove SNAPSHOT # Needed for releases\n      run: |\n        if [[ -n \"${{ github.event.release.tag_name }}\" ]] ; then\n          ./mvnw versions:set --batch-mode -DremoveSnapshot -DprocessAllModules\n        fi\n\n    - name: Update Docs\n      run: |\n        if [[ -n \"${{ github.event.release.tag_name }}\" ]] ; then\n          ./docs/src/main/asciidoc/ghpages.sh --version ${{ github.event.release.tag_name }} --destination . --build\n        elif [[ -n \"${{ github.event.inputs.committish }}\" ]] && [[ \"${{ github.event.inputs.committish }}\" != \"main\" ]] ; then\n            ./docs/src/main/asciidoc/ghpages.sh --version ${{ github.event.inputs.committish }} --destination . --build\n        else\n          ./mvnw install -P docs -P '!CI' -pl docs -DskipTests # Simplified PR check\n        fi\n"
  },
  {
    "path": ".github/workflows/update-properties-table-in-ms-docs.yaml",
    "content": "# This workflow will create PR to update the configuration properties files in MS docs repository: https://github.com/MicrosoftDocs/azure-dev-docs-pr/tree/main/articles/java/spring-framework/includes/spring-cloud-azure\n# For example, this PR is created by this workflow: https://github.com/MicrosoftDocs/azure-dev-docs-pr/pull/3035\n\nname: Update Properties Table In Microsoft Docs\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\njobs:\n  update_properties_table_in_ms_docs_job:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n        name: Checkout Azure/azure-sdk-for-java\n        with:\n          repository: 'Azure/azure-sdk-for-java'\n          path: 'azure-sdk-for-java'\n          ref: main\n          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis\n\n      - name: Set up JDK 17\n        uses: actions/setup-java@v4.2.2\n        with:\n          java-version: '17'\n          distribution: 'temurin'\n\n      - name: Build latest azure-sdk-for-java repository\n        run: |\n          cd azure-sdk-for-java\n          mvn clean install \\\n            -Dcheckstyle.skip=true \\\n            -Dcodesnippet.skip \\\n            -Denforcer.skip \\\n            -Djacoco.skip=true \\\n            -Dmaven.javadoc.skip=true \\\n            -Drevapi.skip=true \\\n            -DskipTests \\\n            -Dspotbugs.skip=true \\\n            -T 4 -ntp -Pdev -f sdk/spring/pom.xml\n\n      - uses: actions/checkout@v3\n        name: Checkout microsoft/spring-cloud-azure\n\n      - name: Generate configuration properties files\n        run: |\n          mkdir spring-cloud-azure-markdown-appdendix-generator/src/main/asciidoc # Output files to asciidoc directory configured in parent pom.\n          ./mvnw clean install -P markdown-docs -pl spring-cloud-azure-markdown-appdendix-generator -DskipTests -ntp\n\n      - name: Get project_version and branch_name\n        id: get_project_version_and_branch_name\n        run: |\n          project_version=$(mvn -q -Dexec.executable=\"echo\" -Dexec.args='${project.version}' --non-recursive exec:exec)\n          echo branch_name=spring-cloud-azure_${project_version%-*} >> $GITHUB_OUTPUT\n          echo project_version=${project_version%-*} >> $GITHUB_OUTPUT\n\n      - uses: actions/checkout@v3\n        name: Checkout MicrosoftDocs/azure-dev-docs-pr\n        with:\n          repository: MicrosoftDocs/azure-dev-docs-pr\n          ref: 'main'\n          path: 'azure-dev-docs-pr'\n          token: ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_ACCESS_TOKEN }}\n          fetch-depth: '0'\n\n      - name: Check whether topic branch exist\n        id: check-whether-topic-branch-exist\n        run: |\n          cd azure-dev-docs-pr\n          git config --global user.email github-actions@github.com\n          git config --global user.name github-actions\n          git remote add ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }} https://github.com/${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }}/azure-dev-docs-pr.git\n          git fetch ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }}\n          echo topic_branch_exists=$(git ls-remote --heads ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }} ${{ steps.get_project_version_and_branch_name.outputs.branch_name }} | wc -l) >> $GITHUB_OUTPUT\n\n      - name: Commit files changes to topic branch\n        id: commit_files_changes_to_topic_branch\n        run: |\n          cd azure-dev-docs-pr\n          if [[ ${{ steps.check-whether-topic-branch-exist.outputs.topic_branch_exists }} -eq 1 ]] ; then\n            echo \"The branch ${{ steps.get_project_version_and_branch_name.outputs.branch_name }} already exists.\"\n            git checkout ${{ steps.get_project_version_and_branch_name.outputs.branch_name }}\n          elif [[ ${{ steps.check-whether-topic-branch-exist.outputs.topic_branch_exists }} -eq 0 ]] ; then\n            echo \"The branch ${{ steps.get_project_version_and_branch_name.outputs.branch_name }} does not exist, create.\"\n            git checkout -b ${{ steps.get_project_version_and_branch_name.outputs.branch_name }}\n          fi\n          cp -f ../spring-cloud-azure-markdown-appdendix-generator/src/main/asciidoc/configuration-*.md articles/java/spring-framework/includes/spring-cloud-azure\n          if [[ -n \"$(git status -s)\" ]] ;then\n          echo \"added_a_commit_in_topic_branch=true\" >> $GITHUB_OUTPUT\n            git add ./articles/java/spring-framework/includes/spring-cloud-azure/configuration-*.md\n            git commit -m \"Update the configuration properties for Spring Cloud Azure: ${{ steps.get_project_version_and_branch_name.outputs.project_version }}. This commit is created by GitHub Action: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}\"\n            git push \"https://${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }}:${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_ACCESS_TOKEN }}@github.com/${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }}/azure-dev-docs-pr.git\"\n          else\n            echo \"No file changes, no commits.\"\n          fi\n\n      - name: Create Pull Request\n        if: ${{ steps.check-whether-topic-branch-exist.outputs.topic_branch_exists == '0' && steps.commit_files_changes_to_topic_branch.outputs.added_a_commit_in_topic_branch == 'true' }}\n        uses: vsoch/pull-request-action@master\n        env:\n          PULL_REQUEST_TOKEN: ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_ACCESS_TOKEN }}\n          PULL_REQUEST_REPOSITORY: MicrosoftDocs/azure-dev-docs-pr\n          PULL_REQUEST_TITLE: \"Update the configuration properties for Spring Cloud Azure: ${{ steps.get_project_version_and_branch_name.outputs.project_version }}\"\n          PULL_REQUEST_FROM_BRANCH: ${{ secrets.UPDATE_PROPERTIES_TABLE_IN_MS_DOCS_GITHUB_USERNAME }}:${{ steps.get_project_version_and_branch_name.outputs.branch_name }}\n          PULL_REQUEST_BRANCH: \"main\"\n          PULL_REQUEST_BODY: \"Update the configuration properties for Spring Cloud Azure: ${{ steps.get_project_version_and_branch_name.outputs.project_version }}. This PR is created by GitHub Actions: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}\"\n          PULL_REQUEST_DRAFT: true\n"
  },
  {
    "path": ".gitignore",
    "content": "*~\n#*\n*#\n.#*\n.classpath\n.project\n.settings\n.springBeans\n.gradle\nbuild\nbin\ntarget/\nasciidoctor.css\n_site/\n*.swp\n.idea\n*.iml\n.factorypath\n.vscode/\n.flattened-pom.xml\n.DS_Store\n.sdkmanrc\n"
  },
  {
    "path": ".mvn/wrapper/MavenWrapperDownloader.java",
    "content": "/*\n * Copyright 2007-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport java.net.*;\nimport java.io.*;\nimport java.nio.channels.*;\nimport java.util.Properties;\n\npublic class MavenWrapperDownloader {\n\n    private static final String WRAPPER_VERSION = \"0.5.6\";\n    /**\n     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.\n     */\n    private static final String DEFAULT_DOWNLOAD_URL = \"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/\"\n        + WRAPPER_VERSION + \"/maven-wrapper-\" + WRAPPER_VERSION + \".jar\";\n\n    /**\n     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to\n     * use instead of the default one.\n     */\n    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =\n            \".mvn/wrapper/maven-wrapper.properties\";\n\n    /**\n     * Path where the maven-wrapper.jar will be saved to.\n     */\n    private static final String MAVEN_WRAPPER_JAR_PATH =\n            \".mvn/wrapper/maven-wrapper.jar\";\n\n    /**\n     * Name of the property which should be used to override the default download url for the wrapper.\n     */\n    private static final String PROPERTY_NAME_WRAPPER_URL = \"wrapperUrl\";\n\n    public static void main(String args[]) {\n        System.out.println(\"- Downloader started\");\n        File baseDirectory = new File(args[0]);\n        System.out.println(\"- Using base directory: \" + baseDirectory.getAbsolutePath());\n\n        // If the maven-wrapper.properties exists, read it and check if it contains a custom\n        // wrapperUrl parameter.\n        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);\n        String url = DEFAULT_DOWNLOAD_URL;\n        if(mavenWrapperPropertyFile.exists()) {\n            FileInputStream mavenWrapperPropertyFileInputStream = null;\n            try {\n                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);\n                Properties mavenWrapperProperties = new Properties();\n                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);\n                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);\n            } catch (IOException e) {\n                System.out.println(\"- ERROR loading '\" + MAVEN_WRAPPER_PROPERTIES_PATH + \"'\");\n            } finally {\n                try {\n                    if(mavenWrapperPropertyFileInputStream != null) {\n                        mavenWrapperPropertyFileInputStream.close();\n                    }\n                } catch (IOException e) {\n                    // Ignore ...\n                }\n            }\n        }\n        System.out.println(\"- Downloading from: \" + url);\n\n        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);\n        if(!outputFile.getParentFile().exists()) {\n            if(!outputFile.getParentFile().mkdirs()) {\n                System.out.println(\n                        \"- ERROR creating output directory '\" + outputFile.getParentFile().getAbsolutePath() + \"'\");\n            }\n        }\n        System.out.println(\"- Downloading to: \" + outputFile.getAbsolutePath());\n        try {\n            downloadFileFromURL(url, outputFile);\n            System.out.println(\"Done\");\n            System.exit(0);\n        } catch (Throwable e) {\n            System.out.println(\"- Error downloading\");\n            e.printStackTrace();\n            System.exit(1);\n        }\n    }\n\n    private static void downloadFileFromURL(String urlString, File destination) throws Exception {\n        if (System.getenv(\"MVNW_USERNAME\") != null && System.getenv(\"MVNW_PASSWORD\") != null) {\n            String username = System.getenv(\"MVNW_USERNAME\");\n            char[] password = System.getenv(\"MVNW_PASSWORD\").toCharArray();\n            Authenticator.setDefault(new Authenticator() {\n                @Override\n                protected PasswordAuthentication getPasswordAuthentication() {\n                    return new PasswordAuthentication(username, password);\n                }\n            });\n        }\n        URL website = new URL(urlString);\n        ReadableByteChannel rbc;\n        rbc = Channels.newChannel(website.openStream());\n        FileOutputStream fos = new FileOutputStream(destination);\n        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);\n        fos.close();\n        rbc.close();\n    }\n\n}\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "content": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip\nwrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\n"
  },
  {
    "path": ".settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<settings>\n\t<servers>\n\t\t<server>\n\t\t\t<id>repo.spring.io</id>\n\t\t\t<username>${env.CI_DEPLOY_USERNAME}</username>\n\t\t\t<password>${env.CI_DEPLOY_PASSWORD}</password>\n\t\t</server>\n\t</servers>\n\t<profiles>\n\t\t<profile>\n\t\t\t<!--\n\t\t\t\tN.B. this profile is only here to support users and IDEs that do not use Maven 3.3.\n\t\t\t\tIt isn't needed on the command line if you use the wrapper script (mvnw) or if you use\n\t\t\t\ta native Maven with the right version. Eclipse users should points their Maven tooling to\n\t\t\t\tthis settings file, or copy the profile into their ~/.m2/settings.xml.\n\t\t\t-->\n\t\t\t<id>spring</id>\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>true</activeByDefault>\n\t\t\t</activation>\n\t\t\t<repositories>\n\t\t\t\t<repository>\n\t\t\t\t\t<id>spring-snapshots</id>\n\t\t\t\t\t<name>Spring Snapshots</name>\n\t\t\t\t\t<url>https://repo.spring.io/libs-snapshot-local</url>\n\t\t\t\t\t<snapshots>\n\t\t\t\t\t\t<enabled>true</enabled>\n\t\t\t\t\t</snapshots>\n\t\t\t\t</repository>\n\t\t\t\t<repository>\n\t\t\t\t\t<id>spring-milestones</id>\n\t\t\t\t\t<name>Spring Milestones</name>\n\t\t\t\t\t<url>https://repo.spring.io/libs-milestone-local</url>\n\t\t\t\t\t<snapshots>\n\t\t\t\t\t\t<enabled>false</enabled>\n\t\t\t\t\t</snapshots>\n\t\t\t\t</repository>\n\t\t\t\t<repository>\n\t\t\t\t\t<id>spring-releases</id>\n\t\t\t\t\t<name>Spring Releases</name>\n\t\t\t\t\t<url>https://repo.spring.io/release</url>\n\t\t\t\t\t<snapshots>\n\t\t\t\t\t\t<enabled>false</enabled>\n\t\t\t\t\t</snapshots>\n\t\t\t\t</repository>\n\t\t\t\t<repository>\n\t\t\t\t\t<id>maven2-central</id>\n\t\t\t\t\t<name>Maven2 Mirror</name>\n\t\t\t\t\t<url>https://repo1.maven.org/maven2</url>\n\t\t\t\t</repository>\n\t\t\t</repositories>\n\t\t\t<pluginRepositories>\n\t\t\t\t<pluginRepository>\n\t\t\t\t\t<id>spring-snapshots</id>\n\t\t\t\t\t<name>Spring Snapshots</name>\n\t\t\t\t\t<url>https://repo.spring.io/libs-snapshot-local</url>\n\t\t\t\t\t<snapshots>\n\t\t\t\t\t\t<enabled>true</enabled>\n\t\t\t\t\t</snapshots>\n\t\t\t\t</pluginRepository>\n\t\t\t\t<pluginRepository>\n\t\t\t\t\t<id>spring-milestones</id>\n\t\t\t\t\t<name>Spring Milestones</name>\n\t\t\t\t\t<url>https://repo.spring.io/libs-milestone-local</url>\n\t\t\t\t\t<snapshots>\n\t\t\t\t\t\t<enabled>false</enabled>\n\t\t\t\t\t</snapshots>\n\t\t\t\t</pluginRepository>\n\t\t\t</pluginRepositories>\n\t\t</profile>\n\t</profiles>\n\t<pluginGroups>\n\t\t<pluginGroup>io.spring.javaformat</pluginGroup>\n\t</pluginGroups>\n</settings>\n"
  },
  {
    "path": ".springformat",
    "content": ""
  },
  {
    "path": ".springjavaformatconfig",
    "content": "java-baseline=8"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\r\n\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission is hereby granted, free of charge, to any person obtaining a copy\r\n    of this software and associated documentation files (the \"Software\"), to deal\r\n    in the Software without restriction, including without limitation the rights\r\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n    copies of the Software, and to permit persons to whom the Software is\r\n    furnished to do so, subject to the following conditions:\r\n\r\n    The above copyright notice and this permission notice shall be included in all\r\n    copies or substantial portions of the Software.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n    SOFTWARE\r\n"
  },
  {
    "path": "LICENSE-CODE",
    "content": "The MIT License (MIT)\nCopyright (c) Microsoft Corporation\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and \nassociated documentation files (the \"Software\"), to deal in the Software without restriction, \nincluding without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, \nand/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, \nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT \nNOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. \nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, \nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE \nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "LICENSE.txt",
    "content": "------------------------------------------- START OF LICENSE -----------------------------------------\nSpring Cloud Azure\n\nCopyright (c) Microsoft Corporation\nAll rights reserved.\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n----------------------------------------------- END OF LICENSE ------------------------------------------\n"
  },
  {
    "path": "README.md",
    "content": "> [!IMPORTANT]  \n> [microsoft/spring-cloud-azure](https://github.com/microsoft/spring-cloud-azure) is deprecated. To get the latest docs of Spring Cloud Azure, please refer to [Documentation in Microsoft docs](https://docs.microsoft.com/azure/developer/java/spring-framework/). For new issues, please report to [Azure SDK for Java repo](https://github.com/Azure/azure-sdk-for-java/).\n\n# Spring Cloud Azure \n\n[![Update Properties Table In Microsoft Docs](https://github.com/microsoft/spring-cloud-azure/actions/workflows/update-properties-table-in-ms-docs.yaml/badge.svg)](https://github.com/microsoft/spring-cloud-azure/actions/workflows/update-properties-table-in-ms-docs.yaml) [![Broken Link Checker](https://github.com/microsoft/spring-cloud-azure/actions/workflows/broken-link-check.yml/badge.svg)](https://github.com/microsoft/spring-cloud-azure/actions/workflows/broken-link-check.yml) [![GH Pages Broken Link Checker](https://github.com/microsoft/spring-cloud-azure/actions/workflows/schedule-current-link-check.yaml/badge.svg)](https://github.com/microsoft/spring-cloud-azure/actions/workflows/schedule-current-link-check.yaml) [![Update Docs](https://github.com/microsoft/spring-cloud-azure/actions/workflows/update-docs.yaml/badge.svg)](https://github.com/microsoft/spring-cloud-azure/actions/workflows/update-docs.yaml) [![pages-build-deployment](https://github.com/microsoft/spring-cloud-azure/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/microsoft/spring-cloud-azure/actions/workflows/pages/pages-build-deployment)\n\n\nSpring Cloud Azure is an open-source project that provides seamless Spring integration with Azure services.\n\n\n\n- Documentation:\n    - [Documentation in GitHub pages](https://microsoft.github.io/spring-cloud-azure).\n    - [Documentation in Microsoft docs](https://docs.microsoft.com/azure/developer/java/spring-framework/).\n- Samples: [Azure-Samples/azure-spring-boot-samples](https://github.com/Azure-Samples/azure-spring-boot-samples).\n- Source code: [Azure/azure-sdk-for-java/sdk/spring](https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/spring).\n"
  },
  {
    "path": "SECURITY.md",
    "content": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).\n\nIf you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).\n\nIf you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). \n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.\n\n## Preferred Languages\n\nWe prefer all communications to be in English.\n\n## Policy\n\nMicrosoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).\n\n<!-- END MICROSOFT SECURITY.MD BLOCK -->"
  },
  {
    "path": "azure-spring-cloud-appconfiguration.md",
    "content": "---\ntitle: Azure Spring Cloud App Configuration\ndescription: An in-depth guide on the Azure Spring Cloud App Configuration Library\nservices: azure-app-configuration\ndocumentationcenter: ''\nauthor: mrm9084\neditor: ''\nms.service: azure-app-configuration\nms.topic: guide\nms.date: 09/16/2021\nms.custom: devx-track-java\nms.author: mametcal\n\n# Customer intent: As a Java Spring developer, know how to setup, authenticate, and select keys using the library.\n---\n# Azure Spring Cloud App Configuration Client Library\n\nThe Azure Spring Cloud App Configuration Client Library loads configurations and feature flags from the Azure App Configuration service. The client library generates `PropertySource` abstractions, to match those already being generated by the Spring environment such as; Environment Variables, Command-line configurations, local configuration files, and so on.\n\n## Setting up your App Configuration Store\n\nTo create your Azure App Configuration store, you can use:\n\n```azurecli\naz appconfig create --resource-group <your-resource-group> --name <name-of-your-new-store> --sku Standard\n```\n\nThis command will create you a new empty configuration store. You can upload you configurations using the import command:\n\n```azurecli\naz appconfig kv import -n <name-of-your-new-store> -s file --path <location-of-your-properties-file> --format properties --prefix /application/\n```\n\nIt will have you confirm your configurations before loading them. You can upload yaml files by changing the format to yaml. The prefix field is important as it is the default prefix loaded by the client library.\n\n## Client Usage\n\nTo use the feature in an application, you can build it as a Spring Boot application. The most convenient way to add the dependency is with our Spring Boot starter `com.azure.spring:azure-spring-cloud-starter-appconfiguration-config`. The following example `pom.xml` file uses Azure App Configuration:\n\n```xml\n<parent>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-parent</artifactId>\n    <version>{spring-boot-version}</version>\n    <relativePath />\n</parent>\n\n<dependencyManagement>\n    <dependencies>\n        <dependency>\n            <groupId>org.springframework.cloud</groupId>\n            <artifactId>spring-cloud-dependencies</artifactId>\n            <version>{spring-cloud-version}</version>\n            <type>pom</type>\n            <scope>import</scope>\n        </dependency>\n    </dependencies>\n</dependencyManagement>\n\n<dependencies>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-web</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>azure-spring-cloud-starter-appconfiguration-config</artifactId>\n        <version>{azure-appconfiguration-version}</version>\n    </dependency>\n</dependencies>\n<build>\n    <plugins>\n           <plugin>\n               <groupId>org.springframework.boot</groupId>\n               <artifactId>spring-boot-maven-plugin</artifactId>\n           </plugin>\n    </plugins>\n</build>\n```\n\nA basic Spring Boot application using App Configuration:\n\n```java\n@SpringBootApplication\n@RestController\npublic class Application {\n\n    @RequestMapping(\"/\")\n    public String home() {\n        return \"Hello World!\";\n    }\n\n    public static void main(String[] args) {\n        SpringApplication.run(Application.class, args);\n    }\n}\n```\n\nwith `bootstrap.properties` containing:\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].connection-string=${CONFIG_STORE_CONNECTION_STRING}\n```\n\nwhere `CONFIG_STORE_CONNECTION_STRING` is an Environment Variable with the connection string to your Azure App Configuration Store. You can access your connection string by running:\n\n```azurecli\naz appconfig credential list --name <name-of-your-store>\n```\n\nBy default, if no configurations are set, then the configurations starting with `/application/` are loaded with a default label of `(No Label)` unless a Spring Profile is set in which case the default label is your Spring Profile. Because the store is empty no configurations are loaded, but the Azure App Configuration Property Source is still generated.\n\nA property source named `/application/https://<name-of-your-store>.azconfig.io/` is created containing the properties of that store.The label used in the request is appended to the end of the name, if no label is set the character `\\0` is there, as an empty space.\n\n## Loading Configuration\n\nThe library supports the loading of one or multiple App Configuration stores. This allows for complex configuration scenarios, such as loading of configurations from multiple stores at once or having fallbacks for added resilience. In the situation where a key is duplicated across multiple stores, loading all stores will result in the highest priority, last one wins, stores configuration being loaded. Example:\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].connection-string=[first-store-connection-string]\nspring.cloud.azure.appconfiguration.stores[1].connection-string=[second-store-connection-string]\n```\n\nIn the example, if both the first and second stores have the same configuration, the configuration in the second store has the highest priority, last one wins.\n\n### Selecting Configurations\n\nConfigurations are loaded by their key and label. By default, the configurations that start with the key `/application/` are loaded. The default label is `${spring.profiles.active}`. If `${spring.profiles.active}` is not set then configuration with the null label seen as `(No Label)` in the portal are loaded.\n\nThe configurations that are loaded can be configured by selecting different key and label filters.\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter=[my-key]\nspring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=[my-label]\n```\n\n`key-filter` supports the following filters:\n\n| Key Filter | Effect |\n| -- | -- |\n|`*`|Matches **any** key|\n|`abc`|Matches a key named  **abc**|\n|`abc*`|Matches key names that start with **abc**|\n|`abc,xyz`|Matches key names **abc** or **xyz** (limited to 5 CSV)|\n\n`label-filter` supports the following filters:\n\n| Label | Description |\n|---|---|\n| `*` | Matches **any** label, which includes `\\0` |\n| `\\0` | Matches `null` labels, seen as `(No Label)` in the portal |\n| `1.0.0` | Matches label **1.0.0** exactly |\n| `1.0.*` | Matches labels that start with **1.0.** |\n| `,1.0.0` | Matches labels `null` or **1.0.0**, limited to five CSVs |\n\nIf you are using yaml with label filters and need to start with `null`, then the label filter needs to be surrounded by single quotes.\n\n```yml\nspring:\n  cloud:\n    azure:\n      appconfiguration:\n        stores:\n         -\n           selects:\n             -\n              label-filter: ',1.0.0'\n```\n\n> [!NOTE]\n> You are unable to combine `*` with `,` in filters. In that case you need to use an additional select.\n\n### Spring Profiles\n\nBy default, `spring.profiles.active` is set as the default `label-filter` for all selected configurations. This functionality can be overridden by the `label-filter`. The Spring Profiles can be used in the `label-filter` by using `${spring.profiles.active}` in the `label-filter`.\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=,${spring.profiles.active}\nspring.cloud.azure.appconfiguration.stores[0].selects[1].label-filter=${spring.profiles.active}_local\n```\n\nIn the first `label-filter`, all configurations with `null` label are loaded, then all configurations matching the Spring Profiles. Spring Profiles have priority over the `null` configurations, because they are at the end.\n\nIn the second `label-filter`, the string `_local` is appended to the end of the Spring Profiles, though only to the last Spring Profile.\n\n### Disabled Stores\n\nUsing the configuration `spring.cloud.azure.appconfiguration.enabled` you can disable loading all configuration stores. With the `spring.cloud.azure.appconfiguration.stores[0].enabled` configuration, you can disable an individual store.\n\nIn addition to disabling all stores, stores can be configured to be disabled if they fail to load using the `spring.cloud.azure.appconfiguration.stores[0].fail-fast`. When `fail-fast` is enabled, set to `true`, a `RuntimeException` that would result in the application not starting up will instead have the store disabled with no configurations from it loaded. If a configuration store is disabled on startup it will not be checked for changes with refresh, or attempted to be loaded from if configurations are updated.\n\nIf, an error resulting in a `RuntimeException` happens during a refresh check or a reload of configuration the refresh attempt is ended and will be retried after the `refresh-interval` has passed.\n\n## Authentication\n\nThe client library supports all forms of Identity supported by the [Azure Identity Library](https://github.com/Azure/azure-sdk-for-java/tree/azure-identity_1.3.6/sdk/identity/azure-identity). Authentication can be done through configuration for Connection Strings and Managed Identity. All other forms of Identity can be done by using the `TokenCredentialProvider`.\n\n### Connection String\n\nAuthentication through connection string is the simplest form to setup. You can access a stores connection strings using:\n\n```azurecli\naz appconfig credential list --name <name-of-your-store>\n```\n\nThe connection string can be then set to the property `spring.cloud.azure.appconfiguration.stores[0].connection-string`. It is highly recommended that the connection string in the local configuration file should be a placeholder value, which should map to an Environment Variable to avoid having it added to source control.\n\n### User Assigned Identity\n\nIf you already don't have one, you can create a new Managed Identity using:\n\n```azurecli\naz identity create -g myResourceGroup -n myUserAssignedIdentity\n```\n\nConnecting to Azure app configuration with any authentication method other connection string requires three steps to setup.\n\n1. Adding the Identity to the resource connecting to your App Configuration store\n1. Adding the required information to your client application.\n1. Authorizing the Identity to use App Configuration.\n\nFor user assigned, the identity needs to be added to the azure resource. How the user assigned identity is added varies between resources so you will need to check the specific docs of that resource.\n\nConfiguration of the client application just needs two values to be set.\n\n```properties\nspring.cloud.azure.appconfiguration.managed-identity.client-id= <your client id>\nspring.cloud.azure.appconfiguration.stores[0].endpoint= <URI of your Configuration Store>\n```\n\nThe first property tells us which of the configured User Assigned identities to use. The second is which configuration store we are connecting to. With this method, all configuration stores need to use the same User Assigned Identity.\n\nNext, the User Assigned Identity needs to be setup in your configuration store. Setup can be done through IAM in the Azure Portal or using the cli:\n\n```azurecli\naz role assignment  create --role \"App Configuration Data Reader\" --assignee <your client id> --scope /subscriptions/<your subscription>/resourceGroups/<your stores resource group>/providers/Microsoft.AppConfiguration/configurationStores/<name of your Configuration Store>\n```\n\n### System Assigned Identity\n\nSetting up System Assigned Identity involves enabling it on the azure resource. How the identity is enabled depends on the resource, so you will need to check the documentation for that resource. Once it is enabled, you need to configure your client application to use it.\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].endpoint= <URI of your Configuration Store>\n```\n\nYou will then need to assign the System Assigned Identity to read configurations.\n\n```azurecli\naz role assignment  create --role \"App Configuration Data Reader\" --assignee <your client id> --scope /subscriptions/<your subscription>/resourceGroups/<your stores resource group>/providers/Microsoft.AppConfiguration/configurationStores/<name of your Configuration Store>\n```\n\n### Token Credential\n\nTo authenticate with any other method supported by the [Azure Identity Library](https://github.com/Azure/azure-sdk-for-java/tree/azure-identity_1.3.6/sdk/identity/azure-identity), you can use `AppConfigurationCredentialProvider`. `AppConfigurationCredentialProvider` allows you to dynamically return any `TokenCredential` for any given URI to connect to your Configuration stores.\n\n```java\n@Bean\npublic AppConfigurationCredentialProvider appConfigurationCredentialProvider() {\n    return new AppConfigurationCredentialProvider() {\n        \n        @Override\n        public TokenCredential getAppConfigCredential(String uri) {\n            \n            ...\n            \n            return myTokenCredential;\n        }\n    };\n}\n```\n\nYou will also need to configure the endpoints that you will be connecting too.\n\n```properties\nspring.cloud.azure.appconfiguration.stores[0].endpoint= <URI of your Configuration Store>\n```\n\n> [!NOTE]\n> Only 1 authentication method can be defined per endpoint; Connection String, User Assigned Identity, Token Credential. If you need to mix and match you can have `AppConfigurationCredentialProvider` return `null` for stores that use a different method.\n\n## For more information\n\nSee [Starter Readme](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/spring-cloud-azure-starter-appconfiguration-config) for more details and compete documentation of all settings.\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/AMPM.yml",
    "content": "extends: existence\nmessage: Use 'AM' or 'PM' (preceded by a space).\nlink: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms\nlevel: error\nnonword: true\ntokens:\n  - '\\d{1,2}[AP]M'\n  - '\\d{1,2} ?[ap]m'\n  - '\\d{1,2} ?[aApP]\\.[mM]\\.'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Accessibility.yml",
    "content": "extends: existence\nmessage: \"Don't use language (such as '%s') that defines people by their disability.\"\nlink: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms\nlevel: suggestion\nignorecase: true\ntokens:\n  - a victim of\n  - able-bodied\n  - affected by\n  - an epileptic\n  - crippled\n  - disabled\n  - dumb\n  - handicapped\n  - handicaps\n  - healthy\n  - lame\n  - maimed\n  - missing a limb\n  - mute\n  - normal\n  - sight-impaired\n  - stricken with\n  - suffers from\n  - vision-impaired\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Acronyms.yml",
    "content": "extends: conditional\nmessage: \"'%s' has no definition.\"\nlink: https://docs.microsoft.com/en-us/style-guide/acronyms\nlevel: suggestion\nignorecase: false\n# Ensures that the existence of 'first' implies the existence of 'second'.\nfirst: '\\b([A-Z]{3,5})\\b'\nsecond: '(?:\\b[A-Z][a-z]+ )+\\(([A-Z]{3,5})\\)'\n# ... with the exception of these:\nexceptions:\n  - API\n  - ASP\n  - CLI\n  - CPU\n  - CSS\n  - CSV\n  - DEBUG\n  - DOM\n  - DPI\n  - FAQ\n  - GCC\n  - GDB\n  - GET\n  - GPU\n  - GTK\n  - GUI\n  - HTML\n  - HTTP\n  - HTTPS\n  - IDE\n  - JAR\n  - JSON\n  - JSX\n  - LESS\n  - LLDB\n  - NET\n  - NOTE\n  - NVDA\n  - OSS\n  - PATH\n  - PDF\n  - PHP\n  - POST\n  - RAM\n  - REPL\n  - RSA\n  - SCM\n  - SCSS\n  - SDK\n  - SQL\n  - SSH\n  - SSL\n  - SVG\n  - TBD\n  - TCP\n  - TODO\n  - URI\n  - URL\n  - USB\n  - UTF\n  - XML\n  - XSS\n  - YAML\n  - ZIP\n  - BOM\n  - AMQP\n  - AAD\n  - POSIX\n  - AKS\n  - PEM\n  - CRUD\n  - SAS\n  - JMS\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Adverbs.yml",
    "content": "extends: existence\nmessage: \"Consider removing '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences\nignorecase: true\nlevel: warning\naction:\n  name: remove\ntokens:\n  - abnormally\n  - absentmindedly\n  - accidentally\n  - adventurously\n  - anxiously\n  - arrogantly\n  - awkwardly\n  - bashfully\n  - beautifully\n  - bitterly\n  - bleakly\n  - blindly\n  - blissfully\n  - boastfully\n  - boldly\n  - bravely\n  - briefly\n  - brightly\n  - briskly\n  - broadly\n  - busily\n  - calmly\n  - carefully\n  - carelessly\n  - cautiously\n  - cheerfully\n  - cleverly\n  - closely\n  - coaxingly\n  - colorfully\n  - continually\n  - coolly\n  - courageously\n  - crossly\n  - cruelly\n  - curiously\n  - daintily\n  - dearly\n  - deceivingly\n  - deeply\n  - defiantly\n  - deliberately\n  - delightfully\n  - diligently\n  - dimly\n  - doubtfully\n  - dreamily\n  - easily\n  - elegantly\n  - energetically\n  - enormously\n  - enthusiastically\n  - excitedly\n  - extremely\n  - fairly\n  - faithfully\n  - famously\n  - ferociously\n  - fervently\n  - fiercely\n  - fondly\n  - foolishly\n  - fortunately\n  - frankly\n  - frantically\n  - freely\n  - frenetically\n  - frightfully\n  - furiously\n  - generally\n  - generously\n  - gently\n  - gladly\n  - gleefully\n  - gracefully\n  - gratefully\n  - greatly\n  - greedily\n  - happily\n  - hastily\n  - healthily\n  - heavily\n  - helplessly\n  - honestly\n  - hopelessly\n  - hungrily\n  - innocently\n  - inquisitively\n  - intensely\n  - intently\n  - interestingly\n  - inwardly\n  - irritably\n  - jaggedly\n  - jealously\n  - jovially\n  - joyfully\n  - joyously\n  - jubilantly\n  - judgmentally\n  - justly\n  - keenly\n  - kiddingly\n  - kindheartedly\n  - knavishly\n  - knowingly\n  - knowledgeably\n  - lazily\n  - lightly\n  - limply\n  - lively\n  - loftily\n  - longingly\n  - loosely\n  - loudly\n  - lovingly\n  - loyally\n  - madly\n  - majestically\n  - meaningfully\n  - mechanically\n  - merrily\n  - miserably\n  - mockingly\n  - mortally\n  - mysteriously\n  - naturally\n  - nearly\n  - neatly\n  - nervously\n  - nicely\n  - noisily\n  - obediently\n  - obnoxiously\n  - oddly\n  - offensively\n  - optimistically\n  - overconfidently\n  - painfully\n  - partially\n  - patiently\n  - perfectly\n  - playfully\n  - politely\n  - poorly\n  - positively\n  - potentially\n  - powerfully\n  - promptly\n  - properly\n  - punctually\n  - quaintly\n  - queasily\n  - queerly\n  - questionably\n  - quickly\n  - quietly\n  - quirkily\n  - quizzically\n  - randomly\n  - rapidly\n  - rarely\n  - readily\n  - really\n  - reassuringly\n  - recklessly\n  - regularly\n  - reluctantly\n  - repeatedly\n  - reproachfully\n  - restfully\n  - righteously\n  - rightfully\n  - rigidly\n  - roughly\n  - rudely\n  - safely\n  - scarcely\n  - scarily\n  - searchingly\n  - sedately\n  - seemingly\n  - selfishly\n  - separately\n  - seriously\n  - shakily\n  - sharply\n  - sheepishly\n  - shrilly\n  - shyly\n  - silently\n  - sleepily\n  - slowly\n  - smoothly\n  - softly\n  - solemnly\n  - solidly\n  - speedily\n  - stealthily\n  - sternly\n  - strictly\n  - suddenly\n  - supposedly\n  - surprisingly\n  - suspiciously\n  - sweetly\n  - swiftly\n  - sympathetically\n  - tenderly\n  - tensely\n  - terribly\n  - thankfully\n  - thoroughly\n  - thoughtfully\n  - tightly\n  - tremendously\n  - triumphantly\n  - truthfully\n  - ultimately\n  - unabashedly\n  - unaccountably\n  - unbearably\n  - unethically\n  - unexpectedly\n  - unfortunately\n  - unimpressively\n  - unnaturally\n  - unnecessarily\n  - urgently\n  - usefully\n  - uselessly\n  - utterly\n  - vacantly\n  - vaguely\n  - vainly\n  - valiantly\n  - vastly\n  - verbally\n  - very\n  - viciously\n  - victoriously\n  - violently\n  - vivaciously\n  - voluntarily\n  - warmly\n  - weakly\n  - wearily\n  - wetly\n  - wholly\n  - wildly\n  - willfully\n  - wisely\n  - woefully\n  - wonderfully\n  - worriedly\n  - yawningly\n  - yearningly\n  - yieldingly\n  - youthfully\n  - zealously\n  - zestfully\n  - zestily\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Auto.yml",
    "content": "extends: existence\nmessage: \"In general, don't hyphenate '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto\nignorecase: true\nlevel: error\naction:\n  name: convert\n  params:\n    - simple\ntokens:\n  - 'auto-\\w+'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Avoid.yml",
    "content": "extends: existence\nmessage: \"Don't use '%s'. See the A-Z word list for details.\"\n# See the A-Z word list\nlink: https://docs.microsoft.com/en-us/style-guide\nignorecase: true\nlevel: error\ntokens:\n  - abortion\n  - and so on\n  - app(?:lication)?s? (?:developer|program)\n  - app(?:lication)? file\n  - backbone\n  - backend\n  - contiguous selection\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/ComplexWords.yml",
    "content": "extends: substitution\nmessage: \"Consider using '%s' instead of '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences\nignorecase: true\nlevel: suggestion\naction:\n  name: replace\nswap:\n  \"approximate(?:ly)?\": about\n  abundance: plenty\n  accelerate: speed up\n  accentuate: stress\n  accompany: go with\n  accomplish: carry out|do\n  accorded: given\n  accordingly: so\n  accrue: add\n  accurate: right|exact\n  acquiesce: agree\n  acquire: get|buy\n  additional: more|extra\n  address: discuss\n  addressees: you\n  adjacent to: next to\n  adjustment: change\n  admissible: allowed\n  advantageous: helpful\n  advise: tell\n  aggregate: total\n  aircraft: plane\n  alleviate: ease\n  allocate: assign|divide\n  alternatively: or\n  alternatives: choices|options\n  ameliorate: improve\n  amend: change\n  anticipate: expect\n  apparent: clear|plain\n  ascertain: discover|find out\n  assistance: help\n  attain: meet\n  attempt: try\n  authorize: allow\n  belated: late\n  bestow: give\n  cease: stop|end\n  collaborate: work together\n  commence: begin\n  compensate: pay\n  component: part\n  comprise: form|include\n  concept: idea\n  concerning: about\n  confer: give|award\n  consequently: so\n  consolidate: merge\n  constitutes: forms\n  contains: has\n  convene: meet\n  demonstrate: show|prove\n  depart: leave\n  designate: choose\n  desire: want|wish\n  determine: decide|find\n  detrimental: bad|harmful\n  disclose: share|tell\n  discontinue: stop\n  disseminate: send|give\n  eliminate: end\n  elucidate: explain\n  employ: use\n  enclosed: inside|included\n  encounter: meet\n  endeavor: try\n  enumerate: count\n  equitable: fair\n  equivalent: equal\n  exclusively: only\n  expedite: hurry\n  facilitate: ease\n  females: women\n  finalize: complete|finish\n  frequently: often\n  identical: same\n  incorrect: wrong\n  indication: sign\n  initiate: start|begin\n  itemized: listed\n  jeopardize: risk\n  liaise: work with|partner with\n  maintain: keep|support\n  methodology: method\n  modify: change\n  monitor: check|watch\n  multiple: many\n  necessitate: cause\n  notify: tell\n  numerous: many\n  objective: aim|goal\n  obligate: bind|compel\n  optimum: best|most\n  permit: let\n  portion: part\n  possess: own\n  previous: earlier\n  previously: before\n  prioritize: rank\n  procure: buy\n  provide: give|offer\n  purchase: buy\n  relocate: move\n  solicit: request\n  state-of-the-art: latest\n  subsequent: later|next\n  substantial: large\n  sufficient: enough\n  terminate: end\n  transmit: send\n  utilization: use\n  utilize: use\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Contractions.yml",
    "content": "extends: substitution\nmessage: \"Use '%s' instead of '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/word-choice/use-contractions\nlevel: error\nignorecase: true\naction:\n  name: replace\nswap:\n  are not: aren't\n  cannot: can't\n  could not: couldn't\n  did not: didn't\n  do not: don't\n  does not: doesn't\n  has not: hasn't\n  have not: haven't\n  how is: how's\n  is not: isn't\n\n  'it is(?!\\.)': it's\n  'it''s(?=\\.)': it is\n\n  should not: shouldn't\n\n  'that is(?!\\.)': that's\n  'that''s(?=\\.)': that is\n\n  'they are(?!\\.)': they're\n  'they''re(?=\\.)': they are\n\n  was not: wasn't\n\n  'we are(?!\\.)': we're\n  'we''re(?=\\.)': we are\n\n  'we have(?!\\.)': we've\n  'we''ve(?=\\.)': we have\n\n  were not: weren't\n\n  'what is(?!\\.)': what's\n  'what''s(?=\\.)': what is\n\n  'when is(?!\\.)': when's\n  'when''s(?=\\.)': when is\n\n  'where is(?!\\.)': where's\n  'where''s(?=\\.)': where is\n\n  will not: won't\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Dashes.yml",
    "content": "extends: existence\nmessage: \"Remove the spaces around '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes\nignorecase: true\nnonword: true\nlevel: error\naction:\n  name: edit\n  params:\n    - remove\n    - ' '\ntokens:\n  - '[—–]\\s|\\s[—–]'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/DateFormat.yml",
    "content": "extends: existence\nmessage: Use 'July 31, 2016' format, not '%s'.\nlink: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms\nignorecase: true\nlevel: error\nnonword: true\ntokens:\n  - '\\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \\d{4}'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/DateNumbers.yml",
    "content": "extends: existence\nmessage: \"Don't use ordinal numbers for dates.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates\nlevel: error\nnonword: true\nignorecase: true\nraw:\n  - \\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?)\\b\\s*\ntokens:\n  - first\n  - second\n  - third\n  - fourth\n  - fifth\n  - sixth\n  - seventh\n  - eighth\n  - ninth\n  - tenth\n  - eleventh\n  - twelfth\n  - thirteenth\n  - fourteenth\n  - fifteenth\n  - sixteenth\n  - seventeenth\n  - eighteenth\n  - nineteenth\n  - twentieth\n  - twenty-first\n  - twenty-second\n  - twenty-third\n  - twenty-fourth\n  - twenty-fifth\n  - twenty-sixth\n  - twenty-seventh\n  - twenty-eighth\n  - twenty-ninth\n  - thirtieth\n  - thirty-first\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/DateOrder.yml",
    "content": "extends: existence\nmessage: \"Always spell out the name of the month.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates\nignorecase: true\nlevel: error\nnonword: true\ntokens:\n  - '\\b\\d{1,2}/\\d{1,2}/(?:\\d{4}|\\d{2})\\b'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Ellipses.yml",
    "content": "extends: existence\nmessage: \"In general, don't use an ellipsis.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses\nnonword: true\nlevel: warning\naction:\n  name: remove\ntokens:\n  - '\\.\\.\\.'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/FirstPerson.yml",
    "content": "extends: existence\nmessage: \"Use first person (such as '%s') sparingly.\"\nlink: https://docs.microsoft.com/en-us/style-guide/grammar/person\nignorecase: true\nlevel: warning\nnonword: true\ntokens:\n  - (?:^|\\s)I\\s\n  - (?:^|\\s)I,\\s\n  - \\bI'd\\b\n  - \\bI'll\\b\n  - \\bI'm\\b\n  - \\bI've\\b\n  - \\bme\\b\n  - \\bmy\\b\n  - \\bmine\\b\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Foreign.yml",
    "content": "extends: substitution\nmessage: \"Use '%s' instead of '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words\nignorecase: true\nlevel: error\nnonword: true\naction:\n  name: replace\nswap:\n  '\\b(?:eg|e\\.g\\.)[\\s,]': for example\n  '\\b(?:ie|i\\.e\\.)[\\s,]': that is\n\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Gender.yml",
    "content": "extends: existence\nmessage: \"Don't use '%s'.\"\nlink: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender\nlevel: error\nignorecase: true\ntokens:\n  - he/she\n  - s/he\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/GenderBias.yml",
    "content": "extends: substitution\nmessage: \"Consider using '%s' instead of '%s'.\"\nignorecase: true\nlevel: error\nswap:\n  (?:alumna|alumnus):          graduate\n  (?:alumnae|alumni):          graduates\n  air(?:m[ae]n|wom[ae]n):      pilot(s)\n  anchor(?:m[ae]n|wom[ae]n):   anchor(s)\n  authoress:                   author\n  camera(?:m[ae]n|wom[ae]n):   camera operator(s)\n  chair(?:m[ae]n|wom[ae]n):    chair(s)\n  congress(?:m[ae]n|wom[ae]n): member(s) of congress\n  door(?:m[ae]|wom[ae]n):      concierge(s)\n  draft(?:m[ae]n|wom[ae]n):    drafter(s)\n  fire(?:m[ae]n|wom[ae]n):     firefighter(s)\n  fisher(?:m[ae]n|wom[ae]n):   fisher(s)\n  fresh(?:m[ae]n|wom[ae]n):    first-year student(s)\n  garbage(?:m[ae]n|wom[ae]n):  waste collector(s)\n  lady lawyer:                 lawyer\n  ladylike:                    courteous\n  landlord:                    building manager\n  mail(?:m[ae]n|wom[ae]n):     mail carriers\n  man and wife:                husband and wife\n  man enough:                  strong enough\n  mankind:                     human kind\n  manmade:                     manufactured\n  manpower:                    personnel\n  men and girls:               men and women\n  middle(?:m[ae]n|wom[ae]n):   intermediary\n  news(?:m[ae]n|wom[ae]n):     journalist(s)\n  ombuds(?:man|woman):         ombuds\n  oneupmanship:                upstaging\n  poetess:                     poet\n  police(?:m[ae]n|wom[ae]n):   police officer(s)\n  repair(?:m[ae]n|wom[ae]n):   technician(s)\n  sales(?:m[ae]n|wom[ae]n):    salesperson or sales people\n  service(?:m[ae]n|wom[ae]n):  soldier(s)\n  steward(?:ess)?:             flight attendant\n  tribes(?:m[ae]n|wom[ae]n):   tribe member(s)\n  waitress:                    waiter\n  woman doctor:                doctor\n  woman scientist[s]?:         scientist(s)\n  work(?:m[ae]n|wom[ae]n):     worker(s)\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/GeneralURL.yml",
    "content": "extends: existence\nmessage: \"For a general audience, use 'address' rather than 'URL'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses\nlevel: warning\naction:\n  name: replace\n  params:\n    - URL\n    - address\ntokens:\n  - URL\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/HeadingAcronyms.yml",
    "content": "extends: existence\nmessage: \"Avoid using acronyms in a title or heading.\"\nlink: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings\nlevel: warning\nscope: heading\ntokens:\n  - '[A-Z]{2,4}'\nexceptions:\n  - SDK \n  - AD \n  - SAS\n  - BOM\n  - JMS\n  - API\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/HeadingColons.yml",
    "content": "extends: existence\nmessage: \"Capitalize '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/colons\nnonword: true\nlevel: error\nscope: heading\ntokens:\n  - ':\\s[a-z]'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/HeadingPunctuation.yml",
    "content": "extends: existence\nmessage: \"Don't use end punctuation in headings.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/periods\nnonword: true\nlevel: warning\nscope: heading\naction:\n  name: edit\n  params:\n    - remove\n    - '.?!'\ntokens:\n  - '[a-z][.?!](?:\\s|$)'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Headings.yml",
    "content": "extends: capitalization\nmessage: \"'%s' should use sentence-style capitalization.\"\nlink: https://docs.microsoft.com/en-us/style-guide/capitalization\nlevel: suggestion\nscope: heading\nmatch: $sentence\nindicators:\n  - ':'\nexceptions:\n  - Azure\n  - CLI\n  - Code\n  - Cosmos\n  - Docker\n  - Emmet\n  - I\n  - Kubernetes\n  - Linux\n  - macOS\n  - Marketplace\n  - MongoDB\n  - REPL\n  - Studio\n  - TypeScript\n  - URLs\n  - Visual\n  - VS\n  - Windows\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Hyphens.yml",
    "content": "extends: existence\nmessage: \"'%s' doesn't need a hyphen.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens\nlevel: warning\nignorecase: false\nnonword: true\naction:\n  name: edit\n  params:\n    - replace\n    - '-'\n    - ' '\ntokens:\n  - '\\s[^\\s-]+ly-'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Negative.yml",
    "content": "extends: existence\nmessage: \"Form a negative number with an en dash, not a hyphen.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers\nnonword: true\nlevel: error\naction:\n  name: edit\n  params:\n    - replace\n    - '-'\n    - '–'\ntokens:\n  - '\\s-\\d+\\s'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Ordinal.yml",
    "content": "extends: existence\nmessage: \"Don't add -ly to an ordinal number.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers\nlevel: error\naction:\n  name: edit\n  params:\n    - trim\n    - ly\ntokens:\n  - firstly\n  - secondly\n  - thirdly\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/OxfordComma.yml",
    "content": "extends: existence\nmessage: \"Use the Oxford comma in '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/commas\nscope: sentence\nlevel: suggestion\nnonword: true\ntokens:\n  - '(?:[^\\s,]+,){1,} \\w+ (?:and|or) \\w+[.?!]'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Passive.yml",
    "content": "extends: existence\nmessage: \"'%s' looks like passive voice.\"\nignorecase: true\nlevel: suggestion\nraw:\n  - \\b(am|are|were|being|is|been|was|be)\\b\\s*\ntokens:\n  - '[\\w]+ed'\n  - awoken\n  - beat\n  - become\n  - been\n  - begun\n  - bent\n  - beset\n  - bet\n  - bid\n  - bidden\n  - bitten\n  - bled\n  - blown\n  - born\n  - bought\n  - bound\n  - bred\n  - broadcast\n  - broken\n  - brought\n  - built\n  - burnt\n  - burst\n  - cast\n  - caught\n  - chosen\n  - clung\n  - come\n  - cost\n  - crept\n  - cut\n  - dealt\n  - dived\n  - done\n  - drawn\n  - dreamt\n  - driven\n  - drunk\n  - dug\n  - eaten\n  - fallen\n  - fed\n  - felt\n  - fit\n  - fled\n  - flown\n  - flung\n  - forbidden\n  - foregone\n  - forgiven\n  - forgotten\n  - forsaken\n  - fought\n  - found\n  - frozen\n  - given\n  - gone\n  - gotten\n  - ground\n  - grown\n  - heard\n  - held\n  - hidden\n  - hit\n  - hung\n  - hurt\n  - kept\n  - knelt\n  - knit\n  - known\n  - laid\n  - lain\n  - leapt\n  - learnt\n  - led\n  - left\n  - lent\n  - let\n  - lighted\n  - lost\n  - made\n  - meant\n  - met\n  - misspelt\n  - mistaken\n  - mown\n  - overcome\n  - overdone\n  - overtaken\n  - overthrown\n  - paid\n  - pled\n  - proven\n  - put\n  - quit\n  - read\n  - rid\n  - ridden\n  - risen\n  - run\n  - rung\n  - said\n  - sat\n  - sawn\n  - seen\n  - sent\n  - set\n  - sewn\n  - shaken\n  - shaven\n  - shed\n  - shod\n  - shone\n  - shorn\n  - shot\n  - shown\n  - shrunk\n  - shut\n  - slain\n  - slept\n  - slid\n  - slit\n  - slung\n  - smitten\n  - sold\n  - sought\n  - sown\n  - sped\n  - spent\n  - spilt\n  - spit\n  - split\n  - spoken\n  - spread\n  - sprung\n  - spun\n  - stolen\n  - stood\n  - stridden\n  - striven\n  - struck\n  - strung\n  - stuck\n  - stung\n  - stunk\n  - sung\n  - sunk\n  - swept\n  - swollen\n  - sworn\n  - swum\n  - swung\n  - taken\n  - taught\n  - thought\n  - thrived\n  - thrown\n  - thrust\n  - told\n  - torn\n  - trodden\n  - understood\n  - upheld\n  - upset\n  - wed\n  - wept\n  - withheld\n  - withstood\n  - woken\n  - won\n  - worn\n  - wound\n  - woven\n  - written\n  - wrung\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Percentages.yml",
    "content": "extends: existence\nmessage: \"Use a numeral plus the units.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers\nnonword: true\nlevel: error\ntokens:\n  - '\\b[a-zA-z]+\\spercent\\b'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Quotes.yml",
    "content": "extends: existence\nmessage: 'Punctuation should be inside the quotes.'\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks\nlevel: error\nnonword: true\ntokens:\n  - '[\"“][^\"”“]+[\"”][.,]'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/RangeFormat.yml",
    "content": "extends: existence\nmessage: \"Use an en dash in a range of numbers.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers\nnonword: true\nlevel: error\naction:\n  name: edit\n  params:\n    - replace\n    - '-'\n    - '–'\ntokens:\n  - '\\b\\d+\\s?[-]\\s?\\d+\\b'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/RangeTime.yml",
    "content": "extends: existence\nmessage: \"Use 'to' instead of a dash in '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/numbers\nnonword: true\nlevel: error\naction:\n  name: edit\n  params:\n    - replace\n    - '[-–]'\n    - 'to'\ntokens:\n  - '\\b(?:AM|PM)\\s?[-–]\\s?.+(?:AM|PM)\\b'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Ranges.yml",
    "content": "extends: existence\nmessage: \"In most cases, use 'from' or 'through' to describe a range of numbers.\"\nlink: 'https://docs.microsoft.com/en-us/style-guide/numbers'\nnonword: true\nlevel: warning\ntokens:\n  - '\\b\\d+\\s?[-–]\\s?\\d+\\b'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Semicolon.yml",
    "content": "extends: existence\nmessage: \"Try to simplify this sentence.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons\nnonword: true\nscope: sentence\nlevel: suggestion\ntokens:\n  - ';'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/SentenceLength.yml",
    "content": "extends: occurrence\nmessage: \"Try to keep sentences short (< 30 words).\"\nscope: sentence\nlevel: suggestion\nmax: 30\ntoken: \\b(\\w+)\\b\n\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Spacing.yml",
    "content": "extends: existence\nmessage: \"'%s' should have one space.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/periods\nlevel: error\nnonword: true\ntokens:\n  - '[a-z][.?!] {2,}[A-Z]'\n  - '[a-z][.?!][A-Z]'\nexceptions:\n  - "
  },
  {
    "path": "docs/.vale-styles/Microsoft/Suspended.yml",
    "content": "extends: existence\nmessage: \"Don't use '%s' unless space is limited.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens\nignorecase: true\nlevel: warning\ntokens:\n  - '\\w+- and \\w+-'\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Terms.yml",
    "content": "extends: substitution\nmessage: \"Prefer '%s' over '%s'.\"\nlevel: warning\nignorecase: true\naction:\n  name: replace\nswap:\n  '(?:agent|virtual assistant|intelligent personal assistant)': personal digital assistant\n  '(?:drive C:|drive C>|C: drive)': drive C\n  '(?:internet bot|web robot)s?': bot(s)\n  '(?:microsoft cloud|the cloud)': cloud\n  '(?:mobile|smart) ?phone': phone\n  '24/7': every day\n  'audio(?:-| )book': audiobook\n  'back(?:-| )light': backlight\n  'chat ?bots?': chatbot(s)\n  adaptor: adapter\n  administrate: administer\n  afterwards: afterward\n  alphabetic: alphabetical\n  alphanumerical: alphanumeric\n  anti-aliasing: antialiasing\n  anti-malware: antimalware\n  anti-spyware: antispyware\n  anti-virus: antivirus\n  appendixes: appendices\n  artificial intelligence: artificial intelligence\n  assembler: assembly language\n  bpp: bpp\n  bps: bps\n  caap: CaaP\n  conversation-as-a-platform: conversation as a platform\n  eb: EB\n  gb: GB\n  gbps: Gbps\n  kb: KB\n  keypress: keystroke\n  mb: MB\n  pb: PB\n  tb: TB\n  zb: ZB\n  viz: namely\n  ergo: therefore\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/URLFormat.yml",
    "content": "extends: substitution\nmessage: \"Use '%s' instead of '%s'.\"\nignorecase: true\nlevel: error\naction:\n  name: replace\nswap:\n  URL for: URL of\n  an URL: a URL\n\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Units.yml",
    "content": "extends: existence\nmessage: \"Don't spell out the number in '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms\nlevel: error\nraw:\n  - '[a-zA-Z]+\\s'\ntokens:\n  - '(?:centi|milli)?meters'\n  - '(?:kilo)?grams'\n  - '(?:kilo)?meters'\n  - '(?:mega)?pixels'\n  - cm\n  - inches\n  - lb\n  - miles\n  - pounds\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Vocab.yml",
    "content": "extends: existence\nmessage: \"Verify your use of '%s' with the A-Z word list.\"\nlink: 'https://docs.microsoft.com/en-us/style-guide'\nlevel: suggestion\nignorecase: true\ntokens:\n  - above\n  - accessible\n  - actionable\n  - against\n  - alarm\n  - alert\n  - alias\n  - allows?\n  - and/or\n  - as well as\n  - assure\n  - author\n  - avg\n  - beta\n  - ensure\n  - he\n  - insure\n  - sample\n  - she\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/We.yml",
    "content": "extends: existence\nmessage: \"Try to avoid using first-person plural like '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural\nlevel: warning\nignorecase: true\ntokens:\n  - we\n  - we'(?:ve|re)\n  - ours?\n  - us\n  - let's\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/Wordiness.yml",
    "content": "extends: substitution\nmessage: \"Consider using '%s' instead of '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences\nignorecase: true\nlevel: warning\naction:\n  name: replace\nswap:\n  (?:give|gave) rise to: lead to\n  (?:previous|prior) to: before\n  a (?:large)? majority of: most\n  a (?:large)? number of: many\n  a myriad of: myriad\n  adversely impact: hurt\n  all across: across\n  all of a sudden: suddenly\n  all of these: these\n  all of: all\n  all-time record: record\n  almost all: most\n  almost never: seldom\n  along the lines of: similar to\n  an adequate number of: enough\n  an appreciable number of: many\n  an estimated: about\n  any and all: all\n  are in agreement: agree\n  as a matter of fact: in fact\n  as a means of: to\n  as a result of: because of\n  as of yet: yet\n  as per: per\n  at a later date: later\n  at all times: always\n  at the present time: now\n  at this point in time: at this point\n  based in large part on: based on\n  based on the fact that: because\n  basic necessity: necessity\n  because of the fact that: because\n  came to a realization: realized\n  came to an abrupt end: ended abruptly\n  carry out an evaluation of: evaluate\n  close down: close\n  closed down: closed\n  complete stranger: stranger\n  completely separate: separate\n  concerning the matter of: regarding\n  conduct a review of: review\n  conduct an investigation: investigate\n  conduct experiments: experiment\n  continue on: continue\n  despite the fact that: although\n  disappear from sight: disappear\n  drag and drop: drag\n  drag-and-drop: drag\n  doomed to fail: doomed\n  due to the fact that: because\n  during the period of: during\n  during the time that: while\n  emergency situation: emergency\n  except when: unless\n  excessive number: too many\n  extend an invitation: invite\n  fall down: fall\n  fell down: fell\n  for the duration of: during\n  gather together: gather\n  has the ability to: can\n  has the capacity to: can\n  has the opportunity to: could\n  hold a meeting: meet\n  if this is not the case: if not\n  in a careful manner: carefully\n  in a thoughtful manner: thoughtfully\n  in a timely manner: timely\n  in an effort to: to\n  in between: between\n  in lieu of: instead of\n  in many cases: often\n  in most cases: usually\n  in order to: to\n  in some cases: sometimes\n  in spite of the fact that: although\n  in spite of: despite\n  in the (?:very)? near future: soon\n  in the event that: if\n  in the neighborhood of: roughly\n  in the vicinity of: close to\n  it would appear that: apparently\n  lift up: lift\n  made reference to: referred to\n  make reference to: refer to\n  mix together: mix\n  none at all: none\n  not in a position to: unable\n  not possible: impossible\n  of major importance: important\n  perform an assessment of: assess\n  pertaining to: about\n  place an order: order\n  plays a key role in: is essential to\n  present time: now\n  readily apparent: apparent\n  some of the: some\n  span across: span\n  subsequent to: after\n  successfully complete: complete\n  sufficient number (?:of)?: enough\n  take action: act\n  take into account: consider\n  the question as to whether: whether\n  there is no doubt but that: doubtless\n  this day and age: this age\n  this is a subject that: this subject\n  time (?:frame|period): time\n  under the provisions of: under\n  until such time as: until\n  used for fuel purposes: used for fuel\n  whether or not: whether\n  with regard to: regarding\n  with the exception of: except for\n"
  },
  {
    "path": "docs/.vale-styles/Microsoft/meta.json",
    "content": "{\n  \"feed\": \"https://github.com/errata-ai/Microsoft/releases.atom\",\n  \"vale_version\": \">=1.0.0\"\n}\n"
  },
  {
    "path": "docs/.vale.ini",
    "content": "# Core properties\n#----------------\n# Specify where to find styles\nStylesPath = .vale-styles\n\n# Specify the minimum alert level to report\n# Alerts are assigned a level of suggestion, warning, or error.\n# For local use it's good to see all the suggestions and warnings.\nMinAlertLevel = suggestion\n\n# Specify how to test a particular type of files\n#-----------------------------------------------\n[*.{adoc,md}]\n\n# Vale comes with three built-in styles: write-good, proselint, and Joblint.\n# You could enable all rules in the \"Microsoft\" style guide as follows:\n# BasedOnStyles = Microsoft\nBasedOnStyles = Microsoft\n\nMicrosoft.Headings = NO\n"
  },
  {
    "path": "docs/README.adoc",
    "content": "This project is used to manage docs displayed in the https://microsoft.github.io/spring-cloud-azure[GitHub Pages]"
  },
  {
    "path": "docs/generate-docs.sh",
    "content": "#!/bin/bash -x\n\n# This command regenerates the docs after editing.\n# You'll have to run this after editing the src/main/asciidoc/README.adoc\n\nmvn clean install -Pdocs\n"
  },
  {
    "path": "docs/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n  <modelVersion>4.0.0</modelVersion>\n\n  <parent>\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-aggregator</artifactId>\n    <version>4.4.1</version>\n    <relativePath>../pom.xml</relativePath>\n  </parent>\n\n  <artifactId>spring-cloud-azure-build-docs</artifactId>\n  <name>spring-cloud-azure-build-docs</name>\n  <packaging>jar</packaging>\n  <description>Spring Cloud Azure Build Docs</description>\n\n  <properties>\n    <main.basedir>${basedir}/..</main.basedir>\n    <release.to.gh.pages.enabled>true</release.to.gh.pages.enabled>\n    <release.to.gh.pages.target.floder>/</release.to.gh.pages.target.floder>\n    <configprops.inclusionPattern>spring.jms.servicebus.*|spring.cloud.azure.*</configprops.inclusionPattern>\n    <upload-docs-zip.phase>none</upload-docs-zip.phase>\n    <generated-docs-multipage-output.dir>${project.build.directory}/generated-docs/${project.version}/reference/html</generated-docs-multipage-output.dir>\n    <generated-docs-singlepage-output.dir>${project.build.directory}/generated-docs/${project.version}/reference/htmlsingle</generated-docs-singlepage-output.dir>\n    <generated-docs-pdf-output.dir>${project.build.directory}/generated-docs/${project.version}/reference/pdf</generated-docs-pdf-output.dir>\n  </properties>\n  <repositories>\n    <repository>\n      <id>spring-milestones</id>\n      <name>Spring Milestones</name>\n      <url>https://repo.spring.io/milestone</url>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </repository>\n    <repository>\n      <id>spring-releases</id>\n      <name>Spring Releases</name>\n      <url>https://repo.spring.io/release</url>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </repository>\n  </repositories>\n  <pluginRepositories>\n    <pluginRepository>\n      <id>spring-milestones</id>\n      <name>Spring Milestones</name>\n      <url>https://repo.spring.io/milestone</url>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </pluginRepository>\n    <pluginRepository>\n      <id>spring-releases</id>\n      <name>Spring Releases</name>\n      <url>https://repo.spring.io/release</url>\n      <snapshots>\n        <enabled>false</enabled>\n      </snapshots>\n    </pluginRepository>\n  </pluginRepositories>\n  <dependencies>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-starter</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-starter-stream-eventhubs</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-starter-stream-servicebus</artifactId>\n    </dependency>\n  </dependencies>\n  <build>\n    <plugins>\n      <plugin>\n        <artifactId>maven-deploy-plugin</artifactId>\n        <configuration>\n          <skip>true</skip>\n        </configuration>\n      </plugin>\n    </plugins>\n  </build>\n  <profiles>\n    <profile>\n      <id>docs</id>\n      <build>\n        <plugins>\n          <plugin>\n            <groupId>pl.project13.maven</groupId>\n            <artifactId>git-commit-id-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-dependency-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-resources-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.codehaus.mojo</groupId>\n            <artifactId>exec-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.asciidoctor</groupId>\n            <artifactId>asciidoctor-maven-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <groupId>org.apache.maven.plugins</groupId>\n            <artifactId>maven-antrun-plugin</artifactId>\n          </plugin>\n          <plugin>\n            <artifactId>maven-deploy-plugin</artifactId>\n          </plugin>\n        </plugins>\n      </build>\n    </profile>\n  </profiles>\n</project>\n"
  },
  {
    "path": "docs/src/main/.gitignore",
    "content": "META-INF/\norg/"
  },
  {
    "path": "docs/src/main/asciidoc/_attributes.adoc",
    "content": ":doctype: book\n:idprefix:\n:idseparator: -\n:toc: left\n:toclevels: 4\n:tabsize: 4\n:numbered:\n:sectanchors:\n:sectnums:\n:icons: font\n:hide-uri-scheme:\n:docinfo: shared,private\n\n:sc-ext: java\n:project-full-name: Spring Cloud Azure\n:all: {asterisk}{asterisk}\n\n:azure-sdk-java-issues: https://github.com/Azure/azure-sdk-for-java/issues\n:spring-boot-version: 2.6.6\n\n// Start for Spring Native Support\n:graalvm-version: 22.0.0\n:graalvm: https://www.graalvm.org/\n:graalvm-docs: {graalvm}/reference-manual\n:graalvm-native-docs: {graalvm-docs}/native-image\n:graalvm-native-buildtools: https://github.com/graalvm/native-build-tools\n:spring-native-version: 0.11.4\n:spring-cloud-azure-native-configuration: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring-experimental/spring-cloud-azure-native-configuration\n:spring-cloud-azure-native-configuration-version: 4.0.0-beta.1\n// End for Spring Native Support\n"
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-all.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.active-directory.app-id-uri |  | App ID URI which might be used in the \"aud\" claim of an id_token.\n|spring.cloud.azure.active-directory.application-type |  | Type of the Azure AD application.\n|spring.cloud.azure.active-directory.authenticate-additional-parameters |  | Add additional parameters to the Authorization URL.\n|spring.cloud.azure.active-directory.authorization-clients |  | The OAuth2 authorization clients.\n|spring.cloud.azure.active-directory.b2c.app-id-uri |  | App ID URI which might be used in the \"aud\" claim of a token.\n|spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters |  | Additional parameters for authentication.\n|spring.cloud.azure.active-directory.b2c.authorization-clients |  | Specify client configuration.\n|spring.cloud.azure.active-directory.b2c.base-uri |  | Azure AD B2C endpoint base uri.\n|spring.cloud.azure.active-directory.b2c.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.b2c.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.b2c.enabled | `false` | Whether to enable Azure Active Directory B2C related auto-configuration.\n|spring.cloud.azure.active-directory.b2c.jwt-connect-timeout |  | Connection Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.jwt-read-timeout |  | Read Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.jwt-size-limit |  | Size limit in Bytes of the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.login-flow | `sign-up-or-sign-in` | Specify the primary sign-in flow key.\n|spring.cloud.azure.active-directory.b2c.logout-success-url | `http://localhost:8080/login` | Redirect url after logout.\n|spring.cloud.azure.active-directory.b2c.profile.tenant-id |  | Azure Tenant ID.\n|spring.cloud.azure.active-directory.b2c.reply-url | `{baseUrl}/login/oauth2/code/` | Reply url after get authorization code.\n|spring.cloud.azure.active-directory.b2c.user-flows |  | User flows.\n|spring.cloud.azure.active-directory.b2c.user-name-attribute-name |  | User name attribute name.\n|spring.cloud.azure.active-directory.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.active-directory.credential.client-certificate-path |  | Path of a PFX or P12 certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.enabled | `false` | Whether to enable Azure Active Directory related auto-configuration.\n|spring.cloud.azure.active-directory.jwk-set-cache-lifespan | `5m` | The lifespan of the cached JWK set before it expires, default is 5 minutes.\n|spring.cloud.azure.active-directory.jwk-set-cache-refresh-time | `5m` | The refresh time of the cached JWK set before it expires, default is 5 minutes.\n|spring.cloud.azure.active-directory.jwt-connect-timeout |  | Connection Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.jwt-read-timeout |  | Read Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.jwt-size-limit |  | Size limit in Bytes of the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.post-logout-redirect-uri |  | The redirect uri after logout.\n|spring.cloud.azure.active-directory.profile.cloud-type |  | Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_GERMANY, AZURE_US_GOVERNMENT, OTHER.\n|spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint |  | Azure Active Directory endpoint. For example: https://login.microsoftonline.com/\n|spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint |  | Microsoft Graph endpoint. For example: https://graph.microsoft.com/\n|spring.cloud.azure.active-directory.profile.tenant-id |  | Azure Tenant ID.\n|spring.cloud.azure.active-directory.redirect-uri-template | `{baseUrl}/login/oauth2/code/` | Redirection Endpoint: Used by the authorization server to return responses containing authorization credentials to the client via the resource owner user-agent.\n|spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map |  | Configure which claim will be used to build GrantedAuthority, and prefix of the GrantedAuthority's string value. Default value is: \"scp\" -> \"SCOPE_\", \"roles\" -> \"APPROLE_\".\n|spring.cloud.azure.active-directory.resource-server.principal-claim-name |  | Configure which claim in access token be returned in AuthenticatedPrincipal#getName. Default value is \"sub\".\n|spring.cloud.azure.active-directory.session-stateless | `false` | If true activates the stateless auth filter AADAppRoleStatelessAuthenticationFilter. The default is false which activates AADAuthenticationFilter.\n|spring.cloud.azure.active-directory.user-group.allowed-group-ids |  | The group IDs can be used to construct GrantedAuthority.\n|spring.cloud.azure.active-directory.user-group.allowed-group-names |  | The group names can be used to construct GrantedAuthority.\n|spring.cloud.azure.active-directory.user-group.use-transitive-members | `false` | If \"true\", use \"v1.0/me/transitiveMemberOf\" to get members. Otherwise, use \"v1.0/me/memberOf\".\n|spring.cloud.azure.active-directory.user-name-attribute |  | Decide which claim to be principal's name.\n|spring.cloud.azure.appconfiguration.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.appconfiguration.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.appconfiguration.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.appconfiguration.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.appconfiguration.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.appconfiguration.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.appconfiguration.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.appconfiguration.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.appconfiguration.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.appconfiguration.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.appconfiguration.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.appconfiguration.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.appconfiguration.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.appconfiguration.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.appconfiguration.connection-string |  | Connection string of the Azure App Configuration instance.\n|spring.cloud.azure.appconfiguration.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.appconfiguration.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.appconfiguration.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.appconfiguration.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.appconfiguration.endpoint |  | Endpoint of the Azure App Configuration instance.\n|spring.cloud.azure.appconfiguration.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.appconfiguration.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.appconfiguration.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.appconfiguration.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.appconfiguration.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.appconfiguration.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.appconfiguration.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.appconfiguration.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.appconfiguration.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.appconfiguration.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.appconfiguration.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.appconfiguration.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.appconfiguration.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.appconfiguration.service-version |  | Version of the app configuration service to be used when making request.\n|spring.cloud.azure.auto-create-resources | `false` | Whether to create Azure resources automatically. This is a legacy property.\n|spring.cloud.azure.client-id |  | Client ID to use when performing service principal authentication with Azure. This is a legacy property.\n|spring.cloud.azure.client-secret |  | Client secret to use when performing service principal authentication with Azure. This is a legacy property.\n|spring.cloud.azure.client.amqp.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.client.http.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.client.http.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.client.http.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.client.http.headers[0].name |  | The name of the header.\n|spring.cloud.azure.client.http.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.client.http.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.client.http.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.client.http.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.client.http.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.client.http.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.client.http.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.client.http.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.client.http.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.compatibility-verifier.compatible-boot-versions |  | Comma-delimited list of Spring Boot versions that are compatible with current Spring Cloud Azure's version.\n|spring.cloud.azure.compatibility-verifier.enabled | `true` | Whether to enable the Spring Cloud Azure compatibility verifier.\n|spring.cloud.azure.cosmos.client-telemetry-enabled |  | Whether to enable client telemetry which will periodically collect database operations aggregation statistics, system information like cpu/memory and send it to cosmos monitoring service, which will be helpful during debugging.\n|spring.cloud.azure.cosmos.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.cosmos.connection-mode |  | Connection mode to be used by the client in the Azure Cosmos DB database service.\n|spring.cloud.azure.cosmos.connection-sharing-across-clients-enabled |  | Whether to enable connections sharing across multiple Cosmos Clients.\n|spring.cloud.azure.cosmos.consistency-level |  | Consistency level. The requested ConsistencyLevel must match or be weaker than that provisioned for the database account.\n|spring.cloud.azure.cosmos.content-response-on-write-enabled |  | Whether to only return the headers and status code in Cosmos DB response in case of Create, Update and Delete operations on CosmosItem.  If set to false, service doesn't return payload in the response.\n|spring.cloud.azure.cosmos.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.cosmos.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.cosmos.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.cosmos.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.cosmos.database |  | Database name of the Cosmos DB.\n|spring.cloud.azure.cosmos.direct-connection.connect-timeout |  | Connect timeout for direct client, represents timeout for establishing connections with an endpoint.\n|spring.cloud.azure.cosmos.direct-connection.connection-endpoint-rediscovery-enabled |  | Whether to enable the direct TCP connection endpoint rediscovery.\n|spring.cloud.azure.cosmos.direct-connection.idle-connection-timeout |  | Idle connection timeout for the direct client. Direct client doesn't close a single connection to an endpoint by default unless specified.\n|spring.cloud.azure.cosmos.direct-connection.idle-endpoint-timeout |  | Idle endpoint timeout for the direct client. If there are no requests to a specific endpoint for idle endpoint timeout duration, direct client closes all connections to that endpoint to save resources and I/O cost.\n|spring.cloud.azure.cosmos.direct-connection.max-connections-per-endpoint |  | Max connections per endpoint, represents the size of connection pool for a specific endpoint.\n|spring.cloud.azure.cosmos.direct-connection.max-requests-per-connection |  | Max requests per connection, represents the number of requests that will be queued on a single connection for a specific endpoint.\n|spring.cloud.azure.cosmos.direct-connection.network-request-timeout |  | Network request timeout interval (time to wait for response from network peer).\n|spring.cloud.azure.cosmos.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.cosmos.endpoint |  | Endpoint of the Cosmos DB.\n|spring.cloud.azure.cosmos.endpoint-discovery-enabled |  | Whether to enable endpoint discovery for geo-replicated database accounts.\n|spring.cloud.azure.cosmos.gateway-connection.idle-connection-timeout |  | Timeout for an idle connection. After that time, the connection will be automatically closed.\n|spring.cloud.azure.cosmos.gateway-connection.max-connection-pool-size |  | Size of the connection pool.\n|spring.cloud.azure.cosmos.key |  | Key to authenticate for accessing the Cosmos DB.\n|spring.cloud.azure.cosmos.multiple-write-regions-enabled |  | Whether to enable writes on any regions for geo-replicated database accounts in the Azure Cosmos DB service.\n|spring.cloud.azure.cosmos.populate-query-metrics | `false` | Whether to populate diagnostics strings and query metrics.\n|spring.cloud.azure.cosmos.preferred-regions |  | Preferred regions for geo-replicated database accounts. For example, \"East US\" as the preferred region.\n|spring.cloud.azure.cosmos.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.cosmos.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.cosmos.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.cosmos.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.cosmos.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.cosmos.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.cosmos.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.cosmos.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.cosmos.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.cosmos.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.cosmos.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.cosmos.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.cosmos.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.cosmos.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.cosmos.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.cosmos.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.cosmos.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.cosmos.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.cosmos.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.cosmos.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.cosmos.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.cosmos.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.cosmos.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.cosmos.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.cosmos.read-requests-fallback-enabled |  | Whether to allow for reads to go to multiple regions configured on an account of Azure Cosmos DB service.\n|spring.cloud.azure.cosmos.resource-token |  | Resource token to authenticate for accessing the Cosmos DB.\n|spring.cloud.azure.cosmos.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.cosmos.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.cosmos.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.cosmos.session-capturing-override-enabled |  | Whether to enable session capturing. Session capturing is enabled by default for SESSION consistency level.\n|spring.cloud.azure.cosmos.throttling-retry-options.max-retry-attempts-on-throttled-requests |  | Maximum number of retries in the case where the request fails because the service has applied rate limiting on the client.\n|spring.cloud.azure.cosmos.throttling-retry-options.max-retry-wait-time |  | Maximum retry time in seconds. When a request fails due to a throttle error, the service sends back a response that contains a value indicating the client should not retry before the time period has elapsed (Retry-After). The MaxRetryWaitTime flag allows the application to set a maximum wait time for all retry attempts. If the cumulative wait time exceeds the MaxRetryWaitTime, the SDK will stop retrying and return the error to the application.\n|spring.cloud.azure.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.environment |  | The Azure environment, such as global Azure or Azure China. This is a legacy property.\n|spring.cloud.azure.eventhub.checkpoint-access-key |  | Storage account access key. This is a legacy property.\n|spring.cloud.azure.eventhub.checkpoint-container |  | Name of the container. This is a legacy property.\n|spring.cloud.azure.eventhub.checkpoint-storage-account |  | Name for the storage account. This is a legacy property.\n|spring.cloud.azure.eventhub.connection-string |  | Connection string to connect to an event hub. This is a legacy property.\n|spring.cloud.azure.eventhub.namespace |  | The namespace of an event hub. This is a legacy property.\n|spring.cloud.azure.eventhubs.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.consumer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.consumer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.consumer.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.consumer.consumer-group |  | Name of the consumer group this consumer is associated with.\n|spring.cloud.azure.eventhubs.consumer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.consumer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.consumer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.consumer.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.consumer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.consumer.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.consumer.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.consumer.prefetch-count |  | The number of events the Event Hub consumer will actively receive and queue locally without regard to whether a receiving operation is currently active.\n|spring.cloud.azure.eventhubs.consumer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.consumer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.consumer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.consumer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.consumer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.processor.batch.max-size |  | The maximum number of events that will be in the batch.\n|spring.cloud.azure.eventhubs.processor.batch.max-wait-time |  | The max time duration to wait to receive an event before processing events.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |  | Storage account access key.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |  | Name for the storage account.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.blob-name |  | Name of the blob.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |  | Name of the container.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.create-container-if-not-exists | `false` | Whether to create the container if it does not exist.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.customer-provided-key |  | Customer provided key used to encrypt blob contents on the server.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.encryption-scope |  | Encryption scope used to encrypt blob contents on the server.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.service-version |  | Blob service version used when making API requests.\n|spring.cloud.azure.eventhubs.processor.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.processor.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.processor.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.processor.consumer-group |  | Name of the consumer group this consumer is associated with.\n|spring.cloud.azure.eventhubs.processor.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.processor.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.processor.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.processor.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.processor.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.processor.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.processor.initial-partition-event-position |  | Map event position to use for each partition if a checkpoint for the partition does not exist in CheckpointStore.\n|spring.cloud.azure.eventhubs.processor.load-balancing.partition-ownership-expiration-interval |  | The time duration after which the ownership of partition expires.\n|spring.cloud.azure.eventhubs.processor.load-balancing.strategy |  | The load balancing strategy for claiming partition ownership.\n|spring.cloud.azure.eventhubs.processor.load-balancing.update-interval |  | The time interval between load balancing update cycles.\n|spring.cloud.azure.eventhubs.processor.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.processor.prefetch-count |  | The number of events the Event Hub consumer will actively receive and queue locally without regard to whether a receiving operation is currently active.\n|spring.cloud.azure.eventhubs.processor.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.processor.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.processor.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.processor.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.processor.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.processor.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.processor.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.processor.track-last-enqueued-event-properties |  | Whether request information on the last enqueued event on its associated partition, and track that information as events are received.\n|spring.cloud.azure.eventhubs.producer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.producer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.producer.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.producer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.producer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.producer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.producer.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.producer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.producer.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.producer.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.producer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.producer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.producer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.producer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.producer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.producer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.producer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.producer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.producer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.producer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.producer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.resource.name |  | Namespace of the event hub.\n|spring.cloud.azure.eventhubs.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.shared-connection |  | Whether to share the same connection for producers or consumers.\n|spring.cloud.azure.keyvault.certificate.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.certificate.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.certificate.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.certificate.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.certificate.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.certificate.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.certificate.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.certificate.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.certificate.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.certificate.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.certificate.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.certificate.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.certificate.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.certificate.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.certificate.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.certificate.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.certificate.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.certificate.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.certificate.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.certificate.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.certificate.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.certificate.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.certificate.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.certificate.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.certificate.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.certificate.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.certificate.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.certificate.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.certificate.service-version |  | The version of Azure Key Vault Certificate Service.\n|spring.cloud.azure.keyvault.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.secret.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.secret.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.secret.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.secret.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.secret.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.secret.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.secret.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.secret.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.secret.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.secret.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.secret.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.secret.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.secret.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.secret.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.secret.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.secret.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.secret.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.secret.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.secret.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.secret.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.secret.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.secret.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.secret.property-source-enabled | `true` | Whether to enable the Key Vault property source.\n|spring.cloud.azure.keyvault.secret.property-sources |  | Azure Key Vault property sources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].case-sensitive |  | Defines the constant for the property that enables/disables case-sensitive keys.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.secret.property-sources[0].endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].name |  | Name of this property source.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.secret.property-sources[0].secret-keys |  | The secret keys supported for this property source.\n|spring.cloud.azure.keyvault.secret.property-sources[0].service-version |  | Secret service version used when making API requests.\n|spring.cloud.azure.keyvault.secret.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.secret.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.secret.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.secret.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.secret.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.secret.service-version |  | Secret service version used when making API requests.\n|spring.cloud.azure.msi-enabled | `false` | Whether managed identity is enabled. This is a legacy property.\n|spring.cloud.azure.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.proxy.amqp.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.proxy.http.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.redis.name |  | Name of the Azure Cache for Redis.\n|spring.cloud.azure.redis.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.redis.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.redis.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.region |  | The region of an Azure resource. This is a legacy property.\n|spring.cloud.azure.resource-group |  | The resource group holds an Azure resource. This is a legacy property.\n|spring.cloud.azure.retry.amqp.try-timeout |  | How long to wait until a timeout.\n|spring.cloud.azure.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.consumer.auto-complete | `true` | Whether to enable auto-complete.\n|spring.cloud.azure.servicebus.consumer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.consumer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.consumer.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.consumer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.consumer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.consumer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.consumer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.consumer.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.consumer.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.consumer.max-auto-lock-renew-duration |  | Amount of time to continue auto-renewing the lock.\n|spring.cloud.azure.servicebus.consumer.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.consumer.prefetch-count |  | Prefetch count of the consumer.\n|spring.cloud.azure.servicebus.consumer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.consumer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.consumer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.consumer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.consumer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.consumer.receive-mode |  | Mode for receiving messages.\n|spring.cloud.azure.servicebus.consumer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.consumer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.consumer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.consumer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.consumer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.consumer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.consumer.session-enabled |  | Whether to enable session for the consumer.\n|spring.cloud.azure.servicebus.consumer.sub-queue |  | Type of the SubQueue to connect to.\n|spring.cloud.azure.servicebus.consumer.subscription-name |  | Name for a topic subscription.\n|spring.cloud.azure.servicebus.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.cross-entity-transactions |  | Whether to enable cross entity transaction on the connection to Service bus.\n|spring.cloud.azure.servicebus.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.processor.auto-complete | `true` | Whether to enable auto-complete.\n|spring.cloud.azure.servicebus.processor.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.processor.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.processor.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.processor.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.processor.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.processor.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.processor.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.processor.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.processor.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.processor.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.processor.max-auto-lock-renew-duration |  | Amount of time to continue auto-renewing the lock.\n|spring.cloud.azure.servicebus.processor.max-concurrent-calls |  | Max concurrent messages to process.\n|spring.cloud.azure.servicebus.processor.max-concurrent-sessions |  | Maximum number of concurrent sessions to process at any given time.\n|spring.cloud.azure.servicebus.processor.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.processor.prefetch-count |  | Prefetch count of the consumer.\n|spring.cloud.azure.servicebus.processor.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.processor.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.processor.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.processor.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.processor.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.processor.receive-mode |  | Mode for receiving messages.\n|spring.cloud.azure.servicebus.processor.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.processor.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.processor.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.processor.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.processor.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.processor.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.processor.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.processor.session-enabled |  | Whether to enable session for the consumer.\n|spring.cloud.azure.servicebus.processor.sub-queue |  | Type of the SubQueue to connect to.\n|spring.cloud.azure.servicebus.processor.subscription-name |  | Name for a topic subscription.\n|spring.cloud.azure.servicebus.producer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.producer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.producer.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.producer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.producer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.producer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.producer.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.producer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.producer.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.producer.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.producer.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.producer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.producer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.producer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.producer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.producer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.producer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.producer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.producer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.producer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.producer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.producer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.producer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.resource.name |  | Namespace of the service bus.\n|spring.cloud.azure.servicebus.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.retry-options.delay |  | Amount of time to wait between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.max-delay |  | Maximum permissible amount of time between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.max-retries |  | The maximum number of attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.retry-mode |  | The type of approach to apply when calculating the delay between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.try-timeout |  | Amount of time to wait until a timeout. This is a legacy property.\n|spring.cloud.azure.servicebus.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.transport-type |  | Transport type for AMQP-based client. This is a legacy property.\n|spring.cloud.azure.storage.access-key |  | Storage account access key. This is a legacy property.\n|spring.cloud.azure.storage.account |  | Name for the storage account. This is a legacy property.\n|spring.cloud.azure.storage.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.blob.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.blob.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.blob.blob-name |  | Name of the blob.\n|spring.cloud.azure.storage.blob.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.blob.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.blob.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.blob.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.blob.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.blob.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.blob.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.blob.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.blob.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.blob.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.blob.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.blob.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.blob.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.blob.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.blob.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.blob.container-name |  | Name of the container.\n|spring.cloud.azure.storage.blob.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.blob.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.blob.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.blob.customer-provided-key |  | Customer provided key used to encrypt blob contents on the server.\n|spring.cloud.azure.storage.blob.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.blob.encryption-scope |  | Encryption scope used to encrypt blob contents on the server.\n|spring.cloud.azure.storage.blob.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.blob.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.blob.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.blob.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.blob.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.blob.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.blob.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.blob.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.blob.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.blob.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.blob.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.blob.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.blob.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.blob.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.blob.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.blob.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.blob.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.blob.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.blob.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.blob.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.blob.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.blob.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.blob.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.blob.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.blob.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.blob.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.blob.service-version |  | Blob service version used when making API requests.\n|spring.cloud.azure.storage.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.fileshare.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.fileshare.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.fileshare.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.fileshare.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.fileshare.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.fileshare.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.fileshare.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.fileshare.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.fileshare.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.fileshare.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.fileshare.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.fileshare.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.fileshare.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.fileshare.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.fileshare.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.fileshare.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.fileshare.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.fileshare.directory-path |  | Path to the directory. For instance, 'directory1/directory2'.\n|spring.cloud.azure.storage.fileshare.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.fileshare.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.fileshare.file-path |  | Path to the file. For instance, 'directory1/file1'.\n|spring.cloud.azure.storage.fileshare.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.fileshare.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.fileshare.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.fileshare.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.fileshare.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.fileshare.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.fileshare.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.fileshare.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.fileshare.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.fileshare.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.fileshare.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.fileshare.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.fileshare.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.fileshare.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.fileshare.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.fileshare.service-version |  | Share service version used when making API requests\n|spring.cloud.azure.storage.fileshare.share-name |  | Name of the share.\n|spring.cloud.azure.storage.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.queue.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.queue.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.queue.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.queue.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.queue.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.queue.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.queue.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.queue.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.queue.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.queue.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.queue.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.queue.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.queue.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.queue.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.queue.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.queue.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.queue.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.queue.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.queue.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.queue.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.queue.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.queue.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.queue.message-encoding |  | How queue message body is represented in HTTP requests and responses.\n|spring.cloud.azure.storage.queue.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.queue.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.queue.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.queue.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.queue.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.queue.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.queue.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.queue.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.queue.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.queue.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.queue.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.queue.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.queue.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.queue.queue-name |  | Name of the storage queue.\n|spring.cloud.azure.storage.queue.resource.name |  | Name of the storage account.\n|spring.cloud.azure.storage.queue.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.queue.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.queue.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.queue.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.queue.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.queue.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.queue.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.queue.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.queue.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.queue.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.queue.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.queue.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.queue.service-version |  | Queue service version used when making API requests.\n|spring.cloud.azure.storage.resource-group |  | Resource group the storage account belongs to. This is a legacy property.\n|spring.cloud.azure.storage.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.subscription-id |  | Subscription ID to use when connecting to Azure resources. This is a legacy property.\n|spring.cloud.azure.tenant-id |  | Tenant ID for Azure resources. This is a legacy property.\n|spring.jms.servicebus.connection-string |  | Connection string to connect to a Service Bus namespace.\n|spring.jms.servicebus.enabled | `true` | Whether to enable Servive Bus JMS autoconfiguration.\n|spring.jms.servicebus.idle-timeout | `30m` | Connection idle timeout duration.\n|spring.jms.servicebus.listener.phase |  | The phase in which this container should be started and stopped.\n|spring.jms.servicebus.listener.reply-pub-sub-domain |  | Whether the reply destination type is topic. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.listener.reply-qos-settings |  | The QosSettings to use when sending a reply.\n|spring.jms.servicebus.listener.subscription-durable | `true` | Whether to make the subscription durable. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.listener.subscription-shared |  | Whether to make the subscription shared. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.password |  | Login password of the AMQP broker.\n|spring.jms.servicebus.pool.block-if-full |  | Whether to block when a connection is requested and the pool is full. Set it to false to throw a 'JMSException' instead.\n|spring.jms.servicebus.pool.block-if-full-timeout |  | Blocking period before throwing an exception if the pool is still full.\n|spring.jms.servicebus.pool.enabled |  | Whether a JmsPoolConnectionFactory should be created, instead of a regular ConnectionFactory.\n|spring.jms.servicebus.pool.idle-timeout |  | Connection idle timeout.\n|spring.jms.servicebus.pool.max-connections |  | Maximum number of pooled connections.\n|spring.jms.servicebus.pool.max-sessions-per-connection |  | Maximum number of pooled sessions per connection in the pool.\n|spring.jms.servicebus.pool.time-between-expiration-check |  | Time to sleep between runs of the idle connection eviction thread. When negative, no idle connection eviction thread runs.\n|spring.jms.servicebus.pool.use-anonymous-producers |  | Whether to use only one anonymous 'MessageProducer' instance. Set it to false to create one 'MessageProducer' every time one is required.\n|spring.jms.servicebus.prefetch-policy.all | `0` | Fallback value for prefetch option in this Service Bus namespace.\n|spring.jms.servicebus.prefetch-policy.durable-topic-prefetch | `0` | The number of prefetch for durable topic.\n|spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | `0` | The number of prefetch for queue browser.\n|spring.jms.servicebus.prefetch-policy.queue-prefetch | `0` | The number of prefetch for queue.\n|spring.jms.servicebus.prefetch-policy.topic-prefetch | `0` | The number of prefetch for topic.\n|spring.jms.servicebus.pricing-tier |  | Pricing tier for a Service Bus namespace.\n|spring.jms.servicebus.remote-url | `amqp://localhost:5672` | URL of the AMQP broker. Auto-generated by default.\n|spring.jms.servicebus.topic-client-id |  | Service Bus topic client ID. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.username |  | Login user of the AMQP broker.\n\n|===\n"
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-active-directory-b2c.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.active-directory.b2c.app-id-uri |  | App ID URI which might be used in the \"aud\" claim of a token.\n|spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters |  | Additional parameters for authentication.\n|spring.cloud.azure.active-directory.b2c.authorization-clients |  | Specify client configuration.\n|spring.cloud.azure.active-directory.b2c.base-uri |  | Azure AD B2C endpoint base uri.\n|spring.cloud.azure.active-directory.b2c.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.b2c.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.b2c.enabled | `false` | Whether to enable Azure Active Directory B2C related auto-configuration.\n|spring.cloud.azure.active-directory.b2c.jwt-connect-timeout |  | Connection Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.jwt-read-timeout |  | Read Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.jwt-size-limit |  | Size limit in Bytes of the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.b2c.login-flow | `sign-up-or-sign-in` | Specify the primary sign-in flow key.\n|spring.cloud.azure.active-directory.b2c.logout-success-url | `http://localhost:8080/login` | Redirect url after logout.\n|spring.cloud.azure.active-directory.b2c.profile.tenant-id |  | Azure Tenant ID.\n|spring.cloud.azure.active-directory.b2c.reply-url | `{baseUrl}/login/oauth2/code/` | Reply url after get authorization code.\n|spring.cloud.azure.active-directory.b2c.user-flows |  | User flows.\n|spring.cloud.azure.active-directory.b2c.user-name-attribute-name |  | User name attribute name.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-active-directory.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.active-directory.app-id-uri |  | App ID URI which might be used in the \"aud\" claim of an id_token.\n|spring.cloud.azure.active-directory.application-type |  | Type of the Azure AD application.\n|spring.cloud.azure.active-directory.authenticate-additional-parameters |  | Add additional parameters to the Authorization URL.\n|spring.cloud.azure.active-directory.authorization-clients |  | The OAuth2 authorization clients.\n|spring.cloud.azure.active-directory.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.active-directory.credential.client-certificate-path |  | Path of a PFX or P12 certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.active-directory.enabled | `false` | Whether to enable Azure Active Directory related auto-configuration.\n|spring.cloud.azure.active-directory.jwk-set-cache-lifespan | `5m` | The lifespan of the cached JWK set before it expires, default is 5 minutes.\n|spring.cloud.azure.active-directory.jwk-set-cache-refresh-time | `5m` | The refresh time of the cached JWK set before it expires, default is 5 minutes.\n|spring.cloud.azure.active-directory.jwt-connect-timeout |  | Connection Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.jwt-read-timeout |  | Read Timeout for the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.jwt-size-limit |  | Size limit in Bytes of the JWKSet Remote URL call.\n|spring.cloud.azure.active-directory.post-logout-redirect-uri |  | The redirect uri after logout.\n|spring.cloud.azure.active-directory.profile.cloud-type |  | Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_GERMANY, AZURE_US_GOVERNMENT, OTHER.\n|spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint |  | Azure Active Directory endpoint. For example: https://login.microsoftonline.com/\n|spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint |  | Microsoft Graph endpoint. For example: https://graph.microsoft.com/\n|spring.cloud.azure.active-directory.profile.tenant-id |  | Azure Tenant ID.\n|spring.cloud.azure.active-directory.redirect-uri-template | `{baseUrl}/login/oauth2/code/` | Redirection Endpoint: Used by the authorization server to return responses containing authorization credentials to the client via the resource owner user-agent.\n|spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map |  | Configure which claim will be used to build GrantedAuthority, and prefix of the GrantedAuthority's string value. Default value is: \"scp\" -> \"SCOPE_\", \"roles\" -> \"APPROLE_\".\n|spring.cloud.azure.active-directory.resource-server.principal-claim-name |  | Configure which claim in access token be returned in AuthenticatedPrincipal#getName. Default value is \"sub\".\n|spring.cloud.azure.active-directory.session-stateless | `false` | If true activates the stateless auth filter AADAppRoleStatelessAuthenticationFilter. The default is false which activates AADAuthenticationFilter.\n|spring.cloud.azure.active-directory.user-group.allowed-group-ids |  | The group IDs can be used to construct GrantedAuthority.\n|spring.cloud.azure.active-directory.user-group.allowed-group-names |  | The group names can be used to construct GrantedAuthority.\n|spring.cloud.azure.active-directory.user-group.use-transitive-members | `false` | If \"true\", use \"v1.0/me/transitiveMemberOf\" to get members. Otherwise, use \"v1.0/me/memberOf\".\n|spring.cloud.azure.active-directory.user-name-attribute |  | Decide which claim to be principal's name.\n\n|===\n"
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-app-configuration.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.appconfiguration.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.appconfiguration.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.appconfiguration.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.appconfiguration.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.appconfiguration.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.appconfiguration.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.appconfiguration.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.appconfiguration.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.appconfiguration.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.appconfiguration.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.appconfiguration.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.appconfiguration.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.appconfiguration.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.appconfiguration.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.appconfiguration.connection-string |  | Connection string of the Azure App Configuration instance.\n|spring.cloud.azure.appconfiguration.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.appconfiguration.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.appconfiguration.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.appconfiguration.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.appconfiguration.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.appconfiguration.endpoint |  | Endpoint of the Azure App Configuration instance.\n|spring.cloud.azure.appconfiguration.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.appconfiguration.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.appconfiguration.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.appconfiguration.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.appconfiguration.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.appconfiguration.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.appconfiguration.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.appconfiguration.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.appconfiguration.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.appconfiguration.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.appconfiguration.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.appconfiguration.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.appconfiguration.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.appconfiguration.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.appconfiguration.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.appconfiguration.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.appconfiguration.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.appconfiguration.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.appconfiguration.service-version |  | Version of the app configuration service to be used when making request.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-cosmos-db.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.cosmos.client-telemetry-enabled |  | Whether to enable client telemetry which will periodically collect database operations aggregation statistics, system information like cpu/memory and send it to cosmos monitoring service, which will be helpful during debugging.\n|spring.cloud.azure.cosmos.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.cosmos.connection-mode |  | Connection mode to be used by the client in the Azure Cosmos DB database service.\n|spring.cloud.azure.cosmos.connection-sharing-across-clients-enabled |  | Whether to enable connections sharing across multiple Cosmos Clients.\n|spring.cloud.azure.cosmos.consistency-level |  | Consistency level. The requested ConsistencyLevel must match or be weaker than that provisioned for the database account.\n|spring.cloud.azure.cosmos.content-response-on-write-enabled |  | Whether to only return the headers and status code in Cosmos DB response in case of Create, Update and Delete operations on CosmosItem.  If set to false, service doesn't return payload in the response.\n|spring.cloud.azure.cosmos.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.cosmos.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.cosmos.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.cosmos.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.cosmos.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.cosmos.database |  | Database name of the Cosmos DB.\n|spring.cloud.azure.cosmos.direct-connection.connect-timeout |  | Connect timeout for direct client, represents timeout for establishing connections with an endpoint.\n|spring.cloud.azure.cosmos.direct-connection.connection-endpoint-rediscovery-enabled |  | Whether to enable the direct TCP connection endpoint rediscovery.\n|spring.cloud.azure.cosmos.direct-connection.idle-connection-timeout |  | Idle connection timeout for the direct client. Direct client doesn't close a single connection to an endpoint by default unless specified.\n|spring.cloud.azure.cosmos.direct-connection.idle-endpoint-timeout |  | Idle endpoint timeout for the direct client. If there are no requests to a specific endpoint for idle endpoint timeout duration, direct client closes all connections to that endpoint to save resources and I/O cost.\n|spring.cloud.azure.cosmos.direct-connection.max-connections-per-endpoint |  | Max connections per endpoint, represents the size of connection pool for a specific endpoint.\n|spring.cloud.azure.cosmos.direct-connection.max-requests-per-connection |  | Max requests per connection, represents the number of requests that will be queued on a single connection for a specific endpoint.\n|spring.cloud.azure.cosmos.direct-connection.network-request-timeout |  | Network request timeout interval (time to wait for response from network peer).\n|spring.cloud.azure.cosmos.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.cosmos.endpoint |  | Endpoint of the Cosmos DB.\n|spring.cloud.azure.cosmos.endpoint-discovery-enabled |  | Whether to enable endpoint discovery for geo-replicated database accounts.\n|spring.cloud.azure.cosmos.gateway-connection.idle-connection-timeout |  | Timeout for an idle connection. After that time, the connection will be automatically closed.\n|spring.cloud.azure.cosmos.gateway-connection.max-connection-pool-size |  | Size of the connection pool.\n|spring.cloud.azure.cosmos.key |  | Key to authenticate for accessing the Cosmos DB.\n|spring.cloud.azure.cosmos.multiple-write-regions-enabled |  | Whether to enable writes on any regions for geo-replicated database accounts in the Azure Cosmos DB service.\n|spring.cloud.azure.cosmos.populate-query-metrics | `false` | Whether to populate diagnostics strings and query metrics.\n|spring.cloud.azure.cosmos.preferred-regions |  | Preferred regions for geo-replicated database accounts. For example, \"East US\" as the preferred region.\n|spring.cloud.azure.cosmos.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.cosmos.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.cosmos.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.cosmos.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.cosmos.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.cosmos.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.cosmos.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.cosmos.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.cosmos.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.cosmos.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.cosmos.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.cosmos.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.cosmos.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.cosmos.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.cosmos.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.cosmos.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.cosmos.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.cosmos.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.cosmos.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.cosmos.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.cosmos.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.cosmos.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.cosmos.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.cosmos.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.cosmos.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.cosmos.read-requests-fallback-enabled |  | Whether to allow for reads to go to multiple regions configured on an account of Azure Cosmos DB service.\n|spring.cloud.azure.cosmos.resource-token |  | Resource token to authenticate for accessing the Cosmos DB.\n|spring.cloud.azure.cosmos.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.cosmos.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.cosmos.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.cosmos.session-capturing-override-enabled |  | Whether to enable session capturing. Session capturing is enabled by default for SESSION consistency level.\n|spring.cloud.azure.cosmos.throttling-retry-options.max-retry-attempts-on-throttled-requests |  | Maximum number of retries in the case where the request fails because the service has applied rate limiting on the client.\n|spring.cloud.azure.cosmos.throttling-retry-options.max-retry-wait-time |  | Maximum retry time in seconds. When a request fails due to a throttle error, the service sends back a response that contains a value indicating the client should not retry before the time period has elapsed (Retry-After). The MaxRetryWaitTime flag allows the application to set a maximum wait time for all retry attempts. If the cumulative wait time exceeds the MaxRetryWaitTime, the SDK will stop retrying and return the error to the application.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-event-hubs.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.eventhubs.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.consumer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.consumer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.consumer.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.consumer.consumer-group |  | Name of the consumer group this consumer is associated with.\n|spring.cloud.azure.eventhubs.consumer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.consumer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.consumer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.consumer.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.consumer.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.consumer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.consumer.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.consumer.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.consumer.prefetch-count |  | The number of events the Event Hub consumer will actively receive and queue locally without regard to whether a receiving operation is currently active.\n|spring.cloud.azure.eventhubs.consumer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.consumer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.consumer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.consumer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.consumer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.consumer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.consumer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.consumer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.processor.batch.max-size |  | The maximum number of events that will be in the batch.\n|spring.cloud.azure.eventhubs.processor.batch.max-wait-time |  | The max time duration to wait to receive an event before processing events.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |  | Storage account access key.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |  | Name for the storage account.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.blob-name |  | Name of the blob.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |  | Name of the container.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.create-container-if-not-exists | `false` | Whether to create the container if it does not exist.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.customer-provided-key |  | Customer provided key used to encrypt blob contents on the server.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.encryption-scope |  | Encryption scope used to encrypt blob contents on the server.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.eventhubs.processor.checkpoint-store.service-version |  | Blob service version used when making API requests.\n|spring.cloud.azure.eventhubs.processor.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.processor.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.processor.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.processor.consumer-group |  | Name of the consumer group this consumer is associated with.\n|spring.cloud.azure.eventhubs.processor.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.processor.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.processor.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.processor.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.processor.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.processor.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.processor.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.processor.initial-partition-event-position |  | Map event position to use for each partition if a checkpoint for the partition does not exist in CheckpointStore.\n|spring.cloud.azure.eventhubs.processor.load-balancing.partition-ownership-expiration-interval |  | The time duration after which the ownership of partition expires.\n|spring.cloud.azure.eventhubs.processor.load-balancing.strategy |  | The load balancing strategy for claiming partition ownership.\n|spring.cloud.azure.eventhubs.processor.load-balancing.update-interval |  | The time interval between load balancing update cycles.\n|spring.cloud.azure.eventhubs.processor.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.processor.prefetch-count |  | The number of events the Event Hub consumer will actively receive and queue locally without regard to whether a receiving operation is currently active.\n|spring.cloud.azure.eventhubs.processor.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.processor.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.processor.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.processor.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.processor.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.processor.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.processor.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.processor.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.processor.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.processor.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.processor.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.processor.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.processor.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.processor.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.processor.track-last-enqueued-event-properties |  | Whether request information on the last enqueued event on its associated partition, and track that information as events are received.\n|spring.cloud.azure.eventhubs.producer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.eventhubs.producer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.eventhubs.producer.connection-string |  | Connection string to connect to an event hub.\n|spring.cloud.azure.eventhubs.producer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.eventhubs.producer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.eventhubs.producer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.eventhubs.producer.custom-endpoint-address |  | A custom endpoint address when connecting to the Event Hubs service. This can be useful when your network does not allow connecting to the standard Azure Event Hubs endpoint address, but does allow connecting through an intermediary. For example: https://my.custom.endpoint.com:55300.\n|spring.cloud.azure.eventhubs.producer.domain-name | `servicebus.windows.net` | The domain name of an Event Hub namespace.\n|spring.cloud.azure.eventhubs.producer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.eventhubs.producer.event-hub-name |  | The name of an event hub.\n|spring.cloud.azure.eventhubs.producer.namespace |  | The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.eventhubs.producer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.producer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.producer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.producer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.producer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.producer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.producer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.producer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.producer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.producer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.producer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.producer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.producer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.producer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.producer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.producer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.eventhubs.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.eventhubs.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.eventhubs.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.eventhubs.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.eventhubs.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.eventhubs.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.eventhubs.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.eventhubs.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.eventhubs.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.eventhubs.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.eventhubs.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.eventhubs.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.eventhubs.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.eventhubs.resource.name |  | Namespace of the event hub.\n|spring.cloud.azure.eventhubs.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.eventhubs.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.eventhubs.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.eventhubs.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.eventhubs.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.eventhubs.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.eventhubs.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.eventhubs.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.eventhubs.shared-connection |  | Whether to share the same connection for producers or consumers.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-key-vault-certificates.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.keyvault.certificate.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.certificate.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.certificate.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.certificate.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.certificate.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.certificate.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.certificate.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.certificate.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.certificate.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.certificate.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.certificate.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.certificate.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.certificate.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.certificate.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.certificate.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.certificate.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.certificate.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.certificate.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.certificate.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.certificate.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.certificate.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.certificate.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.certificate.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.certificate.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.certificate.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.certificate.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.certificate.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.certificate.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.certificate.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.certificate.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.certificate.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.certificate.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.certificate.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.certificate.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.certificate.service-version |  | The version of Azure Key Vault Certificate Service.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-key-vault-secrets.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.keyvault.secret.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.secret.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.secret.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.secret.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.secret.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.secret.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.secret.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.secret.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.secret.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.secret.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.secret.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.secret.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.secret.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.secret.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.secret.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.secret.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.secret.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.secret.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.secret.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.secret.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.secret.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.secret.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.secret.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.secret.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.secret.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.secret.property-source-enabled | `true` | Whether to enable the Key Vault property source.\n|spring.cloud.azure.keyvault.secret.property-sources |  | Azure Key Vault property sources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].case-sensitive |  | Defines the constant for the property that enables/disables case-sensitive keys.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.secret.property-sources[0].client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.secret.property-sources[0].enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.secret.property-sources[0].endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].name |  | Name of this property source.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.property-sources[0].retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.secret.property-sources[0].secret-keys |  | The secret keys supported for this property source.\n|spring.cloud.azure.keyvault.secret.property-sources[0].service-version |  | Secret service version used when making API requests.\n|spring.cloud.azure.keyvault.secret.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.secret.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.secret.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.secret.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.secret.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.secret.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.secret.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.secret.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.secret.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.keyvault.secret.service-version |  | Secret service version used when making API requests.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-key-vault.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.keyvault.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.keyvault.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.keyvault.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.keyvault.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.keyvault.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.keyvault.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.keyvault.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.keyvault.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.keyvault.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.keyvault.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.keyvault.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.keyvault.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.keyvault.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.keyvault.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.keyvault.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.keyvault.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.keyvault.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.keyvault.endpoint |  | Azure Key Vault endpoint.\n|spring.cloud.azure.keyvault.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.keyvault.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.keyvault.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.keyvault.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.keyvault.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.keyvault.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.keyvault.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.keyvault.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.keyvault.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.keyvault.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.keyvault.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.keyvault.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.keyvault.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.keyvault.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.keyvault.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.keyvault.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.keyvault.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.keyvault.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.keyvault.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.keyvault.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.keyvault.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.keyvault.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.keyvault.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.keyvault.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.keyvault.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.keyvault.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.keyvault.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.keyvault.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.keyvault.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.keyvault.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.keyvault.retry.mode |  | Retry backoff mode.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-service-bus-jms.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.jms.servicebus.connection-string |  | Connection string to connect to a Service Bus namespace.\n|spring.jms.servicebus.enabled | `true` | Whether to enable Servive Bus JMS autoconfiguration.\n|spring.jms.servicebus.idle-timeout | `30m` | Connection idle timeout duration.\n|spring.jms.servicebus.listener.phase |  | The phase in which this container should be started and stopped.\n|spring.jms.servicebus.listener.reply-pub-sub-domain |  | Whether the reply destination type is topic. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.listener.reply-qos-settings |  | The QosSettings to use when sending a reply.\n|spring.jms.servicebus.listener.subscription-durable | `true` | Whether to make the subscription durable. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.listener.subscription-shared |  | Whether to make the subscription shared. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.password |  | Login password of the AMQP broker.\n|spring.jms.servicebus.pool.block-if-full |  | Whether to block when a connection is requested and the pool is full. Set it to false to throw a 'JMSException' instead.\n|spring.jms.servicebus.pool.block-if-full-timeout |  | Blocking period before throwing an exception if the pool is still full.\n|spring.jms.servicebus.pool.enabled |  | Whether a JmsPoolConnectionFactory should be created, instead of a regular ConnectionFactory.\n|spring.jms.servicebus.pool.idle-timeout |  | Connection idle timeout.\n|spring.jms.servicebus.pool.max-connections |  | Maximum number of pooled connections.\n|spring.jms.servicebus.pool.max-sessions-per-connection |  | Maximum number of pooled sessions per connection in the pool.\n|spring.jms.servicebus.pool.time-between-expiration-check |  | Time to sleep between runs of the idle connection eviction thread. When negative, no idle connection eviction thread runs.\n|spring.jms.servicebus.pool.use-anonymous-producers |  | Whether to use only one anonymous 'MessageProducer' instance. Set it to false to create one 'MessageProducer' every time one is required.\n|spring.jms.servicebus.prefetch-policy.all | `0` | Fallback value for prefetch option in this Service Bus namespace.\n|spring.jms.servicebus.prefetch-policy.durable-topic-prefetch | `0` | The number of prefetch for durable topic.\n|spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | `0` | The number of prefetch for queue browser.\n|spring.jms.servicebus.prefetch-policy.queue-prefetch | `0` | The number of prefetch for queue.\n|spring.jms.servicebus.prefetch-policy.topic-prefetch | `0` | The number of prefetch for topic.\n|spring.jms.servicebus.pricing-tier |  | Pricing tier for a Service Bus namespace.\n|spring.jms.servicebus.remote-url | `amqp://localhost:5672` | URL of the AMQP broker. Auto-generated by default.\n|spring.jms.servicebus.topic-client-id |  | Service Bus topic client ID. Only works for the bean of topicJmsListenerContainerFactory.\n|spring.jms.servicebus.username |  | Login user of the AMQP broker.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-service-bus.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.servicebus.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.consumer.auto-complete | `true` | Whether to enable auto-complete.\n|spring.cloud.azure.servicebus.consumer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.consumer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.consumer.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.consumer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.consumer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.consumer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.consumer.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.consumer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.consumer.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.consumer.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.consumer.max-auto-lock-renew-duration |  | Amount of time to continue auto-renewing the lock.\n|spring.cloud.azure.servicebus.consumer.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.consumer.prefetch-count |  | Prefetch count of the consumer.\n|spring.cloud.azure.servicebus.consumer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.consumer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.consumer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.consumer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.consumer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.consumer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.consumer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.consumer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.consumer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.consumer.receive-mode |  | Mode for receiving messages.\n|spring.cloud.azure.servicebus.consumer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.consumer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.consumer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.consumer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.consumer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.consumer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.consumer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.consumer.session-enabled |  | Whether to enable session for the consumer.\n|spring.cloud.azure.servicebus.consumer.sub-queue |  | Type of the SubQueue to connect to.\n|spring.cloud.azure.servicebus.consumer.subscription-name |  | Name for a topic subscription.\n|spring.cloud.azure.servicebus.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.cross-entity-transactions |  | Whether to enable cross entity transaction on the connection to Service bus.\n|spring.cloud.azure.servicebus.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.processor.auto-complete | `true` | Whether to enable auto-complete.\n|spring.cloud.azure.servicebus.processor.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.processor.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.processor.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.processor.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.processor.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.processor.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.processor.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.processor.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.processor.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.processor.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.processor.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.processor.max-auto-lock-renew-duration |  | Amount of time to continue auto-renewing the lock.\n|spring.cloud.azure.servicebus.processor.max-concurrent-calls |  | Max concurrent messages to process.\n|spring.cloud.azure.servicebus.processor.max-concurrent-sessions |  | Maximum number of concurrent sessions to process at any given time.\n|spring.cloud.azure.servicebus.processor.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.processor.prefetch-count |  | Prefetch count of the consumer.\n|spring.cloud.azure.servicebus.processor.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.processor.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.processor.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.processor.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.processor.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.processor.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.processor.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.processor.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.processor.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.processor.receive-mode |  | Mode for receiving messages.\n|spring.cloud.azure.servicebus.processor.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.processor.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.processor.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.processor.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.processor.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.processor.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.processor.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.processor.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.processor.session-enabled |  | Whether to enable session for the consumer.\n|spring.cloud.azure.servicebus.processor.sub-queue |  | Type of the SubQueue to connect to.\n|spring.cloud.azure.servicebus.processor.subscription-name |  | Name for a topic subscription.\n|spring.cloud.azure.servicebus.producer.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.servicebus.producer.client.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.servicebus.producer.connection-string |  | Connection string to connect to a service bus.\n|spring.cloud.azure.servicebus.producer.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.servicebus.producer.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.servicebus.producer.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.producer.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.servicebus.producer.domain-name | `servicebus.windows.net` | The domain name of a Service Bus namespace.\n|spring.cloud.azure.servicebus.producer.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.servicebus.producer.entity-name |  | The name of a Service Bus Queue or Topic.\n|spring.cloud.azure.servicebus.producer.entity-type |  | The type of Service Bus entity, which is a Queue or a Topic.\n|spring.cloud.azure.servicebus.producer.namespace |  | The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;\n|spring.cloud.azure.servicebus.producer.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.producer.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.producer.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.producer.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.producer.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.producer.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.producer.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.producer.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.producer.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.producer.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.producer.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.producer.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.producer.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.producer.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.producer.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.producer.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.producer.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.servicebus.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.servicebus.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.servicebus.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.servicebus.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.servicebus.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.servicebus.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.servicebus.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.servicebus.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.servicebus.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.servicebus.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.servicebus.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.servicebus.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.servicebus.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.servicebus.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.servicebus.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.servicebus.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.servicebus.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.servicebus.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.servicebus.proxy.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.servicebus.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.servicebus.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.servicebus.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.servicebus.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.servicebus.resource.name |  | Namespace of the service bus.\n|spring.cloud.azure.servicebus.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.servicebus.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.servicebus.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.servicebus.retry-options.delay |  | Amount of time to wait between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.max-delay |  | Maximum permissible amount of time between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.max-retries |  | The maximum number of attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.retry-mode |  | The type of approach to apply when calculating the delay between retry attempts. This is a legacy property.\n|spring.cloud.azure.servicebus.retry-options.try-timeout |  | Amount of time to wait until a timeout. This is a legacy property.\n|spring.cloud.azure.servicebus.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.servicebus.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.servicebus.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.servicebus.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.servicebus.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.servicebus.transport-type |  | Transport type for AMQP-based client. This is a legacy property.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-storage-blob.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.storage.blob.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.blob.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.blob.blob-name |  | Name of the blob.\n|spring.cloud.azure.storage.blob.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.blob.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.blob.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.blob.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.blob.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.blob.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.blob.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.blob.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.blob.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.blob.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.blob.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.blob.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.blob.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.blob.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.blob.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.blob.container-name |  | Name of the container.\n|spring.cloud.azure.storage.blob.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.blob.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.blob.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.blob.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.blob.customer-provided-key |  | Customer provided key used to encrypt blob contents on the server.\n|spring.cloud.azure.storage.blob.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.blob.encryption-scope |  | Encryption scope used to encrypt blob contents on the server.\n|spring.cloud.azure.storage.blob.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.blob.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.blob.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.blob.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.blob.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.blob.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.blob.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.blob.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.blob.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.blob.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.blob.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.blob.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.blob.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.blob.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.blob.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.blob.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.blob.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.blob.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.blob.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.blob.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.blob.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.blob.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.blob.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.blob.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.blob.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.blob.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.blob.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.blob.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.blob.service-version |  | Blob service version used when making API requests.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-storage-file-share.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.storage.fileshare.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.fileshare.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.fileshare.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.fileshare.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.fileshare.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.fileshare.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.fileshare.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.fileshare.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.fileshare.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.fileshare.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.fileshare.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.fileshare.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.fileshare.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.fileshare.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.fileshare.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.fileshare.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.fileshare.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.fileshare.directory-path |  | Path to the directory. For instance, 'directory1/directory2'.\n|spring.cloud.azure.storage.fileshare.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.fileshare.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.fileshare.file-path |  | Path to the file. For instance, 'directory1/file1'.\n|spring.cloud.azure.storage.fileshare.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.fileshare.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.fileshare.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.fileshare.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.fileshare.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.fileshare.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.fileshare.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.fileshare.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.fileshare.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.fileshare.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.fileshare.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.fileshare.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.fileshare.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.fileshare.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.fileshare.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.fileshare.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.fileshare.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.fileshare.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.fileshare.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.fileshare.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.fileshare.service-version |  | Share service version used when making API requests\n|spring.cloud.azure.storage.fileshare.share-name |  | Name of the share.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-storage-queue.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.storage.queue.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.queue.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.queue.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.queue.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.queue.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.queue.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.queue.client.headers[0].name |  | The name of the header.\n|spring.cloud.azure.storage.queue.client.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.storage.queue.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.queue.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.queue.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.queue.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.queue.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.queue.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.queue.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.queue.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.queue.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.queue.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.queue.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.queue.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.queue.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.queue.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.queue.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.queue.message-encoding |  | How queue message body is represented in HTTP requests and responses.\n|spring.cloud.azure.storage.queue.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.queue.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.queue.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.queue.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.queue.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.queue.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.queue.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.queue.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.queue.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.queue.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.queue.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.queue.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.queue.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.queue.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.queue.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.queue.queue-name |  | Name of the storage queue.\n|spring.cloud.azure.storage.queue.resource.name |  | Name of the storage account.\n|spring.cloud.azure.storage.queue.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.queue.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.queue.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.queue.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.queue.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.queue.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.queue.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.queue.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.queue.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.queue.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.queue.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.queue.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n|spring.cloud.azure.storage.queue.service-version |  | Queue service version used when making API requests.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-azure-storage.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.storage.access-key |  | Storage account access key. This is a legacy property.\n|spring.cloud.azure.storage.account |  | Name for the storage account. This is a legacy property.\n|spring.cloud.azure.storage.account-key |  | Storage account access key.\n|spring.cloud.azure.storage.account-name |  | Name for the storage account.\n|spring.cloud.azure.storage.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.storage.client.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.storage.client.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.storage.client.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.storage.client.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.storage.client.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.storage.client.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.storage.client.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.storage.client.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.storage.client.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.storage.client.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.storage.client.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.storage.connection-string |  | Connection string to connect to the service.\n|spring.cloud.azure.storage.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.storage.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.storage.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.storage.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.storage.enabled | `true` | Whether an Azure Service is enabled.\n|spring.cloud.azure.storage.endpoint |  | Endpoint for Azure Storage service.\n|spring.cloud.azure.storage.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.storage.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.storage.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.storage.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.storage.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.storage.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.storage.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.storage.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.storage.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.storage.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.storage.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.storage.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.storage.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.storage.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.storage.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.storage.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.storage.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.storage.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.storage.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.storage.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.storage.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.storage.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.storage.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.storage.proxy.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.storage.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.storage.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.storage.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.storage.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.storage.resource-group |  | Resource group the storage account belongs to. This is a legacy property.\n|spring.cloud.azure.storage.resource.region |  | The region of an Azure resource.\n|spring.cloud.azure.storage.resource.resource-group |  | The resource group holds an Azure resource.\n|spring.cloud.azure.storage.resource.resource-id |  | ID of an Azure resource.\n|spring.cloud.azure.storage.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.storage.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.storage.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.storage.retry.mode |  | Retry backoff mode.\n|spring.cloud.azure.storage.retry.secondary-host |  | Secondary Storage account to retry requests against.\n|spring.cloud.azure.storage.retry.try-timeout |  | Amount of time to wait until a timeout.\n|spring.cloud.azure.storage.sas-token |  | Shared access signatures (SAS) token used to authorize requests sent to the service.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_configuration-properties-global.adoc",
    "content": "|===\n|Name | Default | Description\n\n|spring.cloud.azure.client-id |  | Client ID to use when performing service principal authentication with Azure. This is a legacy property.\n|spring.cloud.azure.client-secret |  | Client secret to use when performing service principal authentication with Azure. This is a legacy property.\n|spring.cloud.azure.client.amqp.transport-type |  | Transport type for AMQP-based client.\n|spring.cloud.azure.client.application-id |  | Represents current application and is used for telemetry/monitoring purposes.\n|spring.cloud.azure.client.http.connect-timeout |  | Amount of time the request attempts to connect to the remote host and the connection is resolved.\n|spring.cloud.azure.client.http.connection-idle-timeout |  | Amount of time before an idle connection.\n|spring.cloud.azure.client.http.headers |  | List of headers applied to each request sent with client.\n|spring.cloud.azure.client.http.headers[0].name |  | The name of the header.\n|spring.cloud.azure.client.http.headers[0].values |  | List of values of the header.\n|spring.cloud.azure.client.http.logging.allowed-header-names |  | Comma-delimited list of allowlist headers that should be logged.\n|spring.cloud.azure.client.http.logging.allowed-query-param-names |  | Comma-delimited list of allowlist query parameters.\n|spring.cloud.azure.client.http.logging.level |  | The level of detail to log on HTTP messages.\n|spring.cloud.azure.client.http.logging.pretty-print-body |  | Whether to pretty print the message bodies.\n|spring.cloud.azure.client.http.maximum-connection-pool-size |  | Maximum connection pool size used by the underlying HTTP client.\n|spring.cloud.azure.client.http.read-timeout |  | Amount of time used when reading the server response.\n|spring.cloud.azure.client.http.response-timeout |  | Amount of time used when waiting for a server to reply.\n|spring.cloud.azure.client.http.write-timeout |  | Amount of time each request being sent over the wire.\n|spring.cloud.azure.credential.client-certificate-password |  | Password of the certificate file.\n|spring.cloud.azure.credential.client-certificate-path |  | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.client-id |  | Client ID to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.client-secret |  | Client secret to use when performing service principal authentication with Azure.\n|spring.cloud.azure.credential.managed-identity-enabled | `false` | Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.\n|spring.cloud.azure.credential.password |  | Password to use when performing username/password authentication with Azure.\n|spring.cloud.azure.credential.username |  | Username to use when performing username/password authentication with Azure.\n|spring.cloud.azure.profile.cloud-type |  | Name of the Azure cloud to connect to.\n|spring.cloud.azure.profile.environment.active-directory-endpoint |  | The Azure Active Directory endpoint to connect to.\n|spring.cloud.azure.profile.environment.active-directory-graph-api-version |  | The Azure Active Directory Graph API version.\n|spring.cloud.azure.profile.environment.active-directory-graph-endpoint |  | The Azure Active Directory Graph endpoint.\n|spring.cloud.azure.profile.environment.active-directory-resource-id |  | The Azure Active Directory resource ID.\n|spring.cloud.azure.profile.environment.azure-application-insights-endpoint |  | The Azure Application Insights endpoint.\n|spring.cloud.azure.profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix |  | The Data Lake analytics catalog and job endpoint suffix.\n|spring.cloud.azure.profile.environment.azure-data-lake-store-file-system-endpoint-suffix |  | The Data Lake storage file system endpoint suffix.\n|spring.cloud.azure.profile.environment.azure-log-analytics-endpoint |  | The Azure Log Analytics endpoint.\n|spring.cloud.azure.profile.environment.data-lake-endpoint-resource-id |  | The Data Lake endpoint.\n|spring.cloud.azure.profile.environment.gallery-endpoint |  | The gallery endpoint.\n|spring.cloud.azure.profile.environment.key-vault-dns-suffix |  | The Key Vault DNS suffix.\n|spring.cloud.azure.profile.environment.management-endpoint |  | The management service endpoint.\n|spring.cloud.azure.profile.environment.microsoft-graph-endpoint |  | The Microsoft Graph endpoint.\n|spring.cloud.azure.profile.environment.portal |  | The management portal URL.\n|spring.cloud.azure.profile.environment.publishing-profile |  | The publishing settings file URL.\n|spring.cloud.azure.profile.environment.resource-manager-endpoint |  | The resource management endpoint.\n|spring.cloud.azure.profile.environment.sql-management-endpoint |  | The SQL management endpoint.\n|spring.cloud.azure.profile.environment.sql-server-hostname-suffix |  | The SQL Server hostname suffix.\n|spring.cloud.azure.profile.environment.storage-endpoint-suffix |  | The Storage endpoint suffix.\n|spring.cloud.azure.profile.subscription-id |  | Subscription ID to use when connecting to Azure resources.\n|spring.cloud.azure.profile.tenant-id |  | Tenant ID for Azure resources.\n|spring.cloud.azure.proxy.amqp.authentication-type |  | Authentication type used against the proxy.\n|spring.cloud.azure.proxy.hostname |  | The host of the proxy.\n|spring.cloud.azure.proxy.http.non-proxy-hosts |  | A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through.\n|spring.cloud.azure.proxy.password |  | Password used to authenticate with the proxy.\n|spring.cloud.azure.proxy.port |  | The port of the proxy.\n|spring.cloud.azure.proxy.type |  | Type of the proxy.\n|spring.cloud.azure.proxy.username |  | Username used to authenticate with the proxy.\n|spring.cloud.azure.retry.amqp.try-timeout |  | How long to wait until a timeout.\n|spring.cloud.azure.retry.exponential.base-delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.retry.exponential.max-delay |  | Maximum permissible amount of time between retry attempts.\n|spring.cloud.azure.retry.exponential.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.retry.fixed.delay |  | Amount of time to wait between retry attempts.\n|spring.cloud.azure.retry.fixed.max-retries |  | The maximum number of attempts.\n|spring.cloud.azure.retry.mode |  | Retry backoff mode.\n\n|==="
  },
  {
    "path": "docs/src/main/asciidoc/_known-issues.adoc",
    "content": "== Known Issues\n\n\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/_migration-guide-for-4.0.adoc",
    "content": "\n[#migration-guide-for-4-0]\n== Migration Guide for 4.0\n\n[#migration-guide-introduction]\n=== Introduction\n\nThis guide assists in the migration to *Spring Cloud Azure 4.0* from legacy Azure Spring libraries.\n\nThis guide will call libraries whose group Id and artifact Id following pattern `com.azure.spring:spring-cloud-azure-\\*` the **modern** libraries,\nand those with pattern `com.azure.spring:azure-spring-boot-*`, `com.azure.spring:azure-spring-cloud-\\*` ,\nor `com.azure.spring:azure-spring-integration-*` the *legacy* ones.\n\nThis guide will focus the side-by-side comparisons for similar configurations between the modern and legacy libraries.\n\nFamiliarity with `com.azure.spring:azure-spring-boot-\\*`, `com.azure.spring:azure-spring-cloud-*`\nor `com.azure.spring:azure-spring-integration-*` package is assumed.\n\nFor those new to the Spring Cloud Azure 4.0 libraries, please refer to the link:index.html[Spring Cloud Azure 4.0 Reference Doc] rather than this guide.\n\n[#migration-guide-benefits]\n=== Migration Benefits\n\nA natural question to ask when considering whether to adopt a new version or library is its benefits. As Azure has\nmatured and been embraced by a more diverse group of developers, we've been focused on learning the patterns and\npractices to best support developer productivity and to understand the gaps that the Spring Cloud Azure libraries have.\n\nThere were several areas of consistent feedback expressed across the Spring Cloud Azure libraries. The most important is\nthat the libraries for different Azure services haven't enabled the complete set of configurations. Additionally, the\ninconsistency of project naming, artifact Ids, versions, configurations made the learning curve steep.\n\nTo improve the development experience across Spring Cloud Azure libraries, a set of design guidelines was introduced to\nensure that Spring Cloud Azure libraries have a natural and idiomatic feel with respect to the Spring ecosystem. Further\ndetails are available in the https://github.com/Azure/azure-sdk-for-java/wiki/Spring-Cloud-Azure-4.0-design[design document] for those interested.\n\nThe *Spring Cloud Azure 4.0* provides the shared experience across libraries integrating with different Spring\nprojects, for example Spring Boot, Spring Integration, Spring Cloud Stream, etc. The shared experience includes:\n\n* A unified BOM to include all Spring Cloud Azure 4.0 libraries.\n* A consistent naming convention for artifacts.\n* A unified way to configure credential, proxy, retry, cloud environment, and transport layer settings.\n* Supporting all the authenticating methods an Azure Service or Azure Service SDK supports.\n\n=== Overview\n\nThis migration guide will consist following sections:\n\n* Naming changes for Spring Cloud Azure 4.0\n* Artifact changes: renamed / added / deleted\n* Dependency changes\n* Authentication changes\n* Configuration properties\n* API breaking changes\n* Library changes\n\n[#migration-guide-naming]\n=== Naming Changes\n\nThere has never been a consistent or official name to call all the Spring Cloud Azure libraries, some of them were\ncalled `Azure Spring Boot` and some of them `Spring on Azure`, and all these names will make developers confused. Since\n4.0, we began to use the project name `Spring Cloud Azure` to represent all the Azure Spring libraries.\n\n[#migration-guide-bom]\n=== BOM\n\nWe used to ship two BOMs for Spring Cloud Azure libraries, the `azure-spring-boot-bom` and `azure-spring-cloud-dependencies`, but we\ncombined these two BOMs into one BOM since 4.0, the `spring-cloud-azure-dependencies`. Please add an entry in the\ndependencyManagement of your project to benefit from the dependency management.\n\n[source,xml,subs=\"attributes,verbatim\"]\n----\n<dependencyManagement>\n    <dependencies>\n        <dependency>\n            <groupId>com.azure.spring</groupId>\n            <artifactId>spring-cloud-azure-dependencies</artifactId>\n            <version>{project-version}</version>\n            <type>pom</type>\n            <scope>import</scope>\n        </dependency>\n    </dependencies>\n</dependencyManagement>\n----\n\nThe version for spring-cloud-azure-dependencies is {project-version}.\n\n=== Artifact Changes: Renamed / Added / Deleted\n\nGroup Ids are the same for modern and legacy Spring Cloud Azure libraries, they're all `com.azure.spring`. Artifact Ids\nfor the modern Spring Cloud Azure libraries have changed. And according to which Spring project it belongs, Spring Boot,\nSpring Integration or Spring Cloud Stream, the artifact ids pattern could be `spring-cloud-azure-starter-[service]`\n, `spring-integration-azure-[service]` and `spring-cloud-azure-stream-binder-[service]`. The legacy starters each has an\nartifact Id following the pattern `azure-spring-*`. This provides a quick and accessible means to help understand, at a\nglance, whether you are using modern or legacy starters.\n\nIn the process of developing Spring Cloud Azure 4.0, we renamed some artifacts to make them follow the new naming\nconventions, deleted some artifacts for its functionality could be put in a more appropriate artifact, and added some\nnew artifacts to better serve some scenarios.\n\n.Mapping of legacy artifact Id and modern artifact Id\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Legacy Artifact ID |Modern Artifact ID |Description\n|azure-spring-boot-starter |spring-cloud-azure-starter |Deleted this artifact with merging all functionalities into the new `spring-cloud-azure-starter` artifact.\n|azure-spring-boot-starter-active-directory |spring-cloud-azure-starter-active-directory | Renamed the artifact.\n|azure-spring-boot-starter-active-directory-b2c |spring-cloud-azure-starter-active-directory-b2c | Renamed the artifact.\n|azure-spring-boot-starter-cosmos |spring-cloud-azure-starter-data-cosmos | Renamed the artifact to add `data`, indicating using Spring Data Cosmos DB.\n|azure-spring-boot-starter-keyvault-certificates |N/A |Not included in this release, but will be supported in later version. \n|azure-spring-boot-starter-keyvault-secrets |spring-cloud-azure-starter-keyvault-secrets | Renamed the artifact.\n|azure-spring-boot-starter-servicebus-jms |spring-cloud-azure-starter-servicebus-jms | Renamed the artifact.\n|azure-spring-boot-starter-storage |spring-cloud-azure-starter-storage-blob +\nspring-cloud-azure-starter-storage-file-share |Split into two separate artifacts. The legacy artifact contains the functionality of both Storage Blob and File Share, which got split into spring-cloud-azure-starter-storage-blob and spring-cloud-azure-starter-storage-file-share in 4.0.\n|azure-spring-boot |N/A |Deleted this artifact with merging all functionalities into the new `spring-cloud-azure-autoconfigure` artifact. \n|azure-spring-cloud-autoconfigure |N/A |Deleted this artifact with merging all functionalities into the new `spring-cloud-azure-autoconfigure` artifact. \n|azure-spring-cloud-context |N/A |Deleted this artifact with merging all functionalities into the new `spring-cloud-azure-autoconfigure` and `spring-cloud-azure-resourcemanager` artifacts. \n|azure-spring-cloud-messaging |spring-messaging-azure | Deleted this artifact. The functionalities of messaging listener annotations are under refactoring and not ready in 4.0 yet.\n|azure-spring-cloud-starter-cache |N/A |Deleted this artifact. For using redis, just add spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager and spring-cloud-azure-starter. Please see <<redis-support.adoc#redis-support, Redis Support>> for more information about usage.\n|azure-spring-cloud-starter-eventhubs-kafka |N/A |Deleted this artifact. For using kafka, import the dependencies of spring-kafka, spring-cloud-azure-resourcemanager and spring-cloud-azure-starter. Please see <<kafka-support.adoc#kafka-support, Kafka Support>> for more information about usage.\n|azure-spring-cloud-starter-eventhubs |spring-cloud-azure-starter-integration-eventhubs |Renamed the artifact to add `integration`, indicating using Spring Integration with Event Hubs. Remove the functionalities of messaging listener annotations.\n|azure-spring-cloud-starter-servicebus |spring-cloud-azure-starter-integration-servicebus |Renamed the artifact to add `integration`, indicating using Spring Integration with Service Bus.\n|azure-spring-cloud-starter-storage-queue |spring-cloud-azure-starter-integration-storage-queue |Renamed the artifact to add `integration`, indicating using Spring Integration with Storage Queue.\n|azure-spring-cloud-storage |N/A |Deleted this artifact with merging all functionalities into the new `spring-cloud-azure-autoconfigure` artifact. \n|azure-spring-cloud-stream-binder-eventhubs |spring-cloud-azure-stream-binder-eventhubs |Renamed the artifact. This artifact has been refactored using new design, mainly `spring-cloud-azure-stream-binder-eventhubs` and `spring-cloud-azure-stream-binder-eventhubs-core`.\n|azure-spring-cloud-stream-binder-service-core |spring-cloud-azure-stream-binder-servicebus-core | Renamed the artifact.\n|azure-spring-cloud-stream-binder-servicebus-queue |spring-cloud-azure-stream-binder-servicebus |Deleted this artifact with merging all functionalities into the `spring-cloud-azure-stream-binder-servicebus` artifact.\n|azure-spring-cloud-stream-binder-servicebus-topic |spring-cloud-azure-stream-binder-servicebus |Deleted this artifact with merging all functionalities into the `spring-cloud-azure-stream-binder-servicebus` artifact.\n|azure-spring-integration-core |spring-integration-azure-core | Renamed the artifact.\n|azure-spring-integration-eventhubs |spring-integration-azure-eventhubs |  Renamed the artifact.\n|azure-spring-integration-servicebus |spring-integration-azure-servicebus |  Renamed the artifact.\n|azure-spring-integration-storage-queue |spring-integration-azure-storage-queue |  Renamed the artifact.\n|N/A |spring-cloud-azure-actuator |The newly added Spring Cloud Azure Actuator artifact. \n|N/A |spring-cloud-azure-actuator-autoconfigure |The newly added Spring Cloud Azure Actuator AutoConfigure artifact, including autoconfiguration for actuator. \n|N/A |spring-cloud-azure-autoconfigure |The newly added Spring Cloud Azure AutoConfigure artifact, including all autoconfiguration for SDK clients, Spring Security support, Spring Data support and Spring Integration support.\n|N/A |spring-cloud-azure-core | The newly added Spring Cloud Azure Core artifact, including all core functionality.\n|N/A |spring-cloud-azure-resourcemanager |The newly added Resource Manager artifact. It's the Core library using Azure Resource Manager to read metadata and create resources. \n|N/A |spring-cloud-azure-service | The newly added Spring Cloud Azure Service artifact, including abstractions for Azure services.\n|N/A |spring-cloud-azure-starter-appconfiguration | The newly added starter for using Azure App Configuration SDK client. \n|N/A |spring-cloud-azure-starter-cosmos | The newly added starter for using Azure Cosmos SDK client.\n|N/A |spring-cloud-azure-starter-eventhubs |The newly added starter for using Azure Event Hubs SDK client.\n|N/A |spring-cloud-azure-starter-servicebus |The newly added starter for using Azure Service Bus SDK client.\n|N/A |spring-cloud-azure-starter-storage-blob |The newly added starter for using Azure Storage Blob SDK client.\n|N/A |spring-cloud-azure-starter-storage-file-share |The newly added starter for using Azure Storage File Share  SDK client. \n|N/A |spring-cloud-azure-starter-storage-queue |The newly added starter for using Azure Storage Queue SDK client.\n|N/A |spring-cloud-azure-starter-stream-eventhubs |The newly added starter for using Azure Event Hubs Spring Cloud Stream Binder.\n|N/A |spring-cloud-azure-starter-stream-servicebus |The newly added starter for using Azure Service Bus Spring Cloud Stream Binder \n|N/A |spring-cloud-azure-stream-binder-eventhubs-core | The newly added Spring Cloud Stream core artifact for Azure Event Hubs.\n|===\n\n=== Dependency Changes\n\nSome unnecessary dependencies were included in the legacy artifacts, which we've removed in the modern Spring Cloud\nAzure 4.0 libraries. Please make sure add the removed dependencies manually to your project to prevent unintentionally\ncrash.\n\nLibraries that have dependency changes include:\n\n- <<dependency-spring-cloud-azure-starter, spring-cloud-azure-starter>>\n- <<dependency-spring-cloud-azure-starter-active-directory, spring-cloud-azure-starter-active-directory>>\n- <<dependency-spring-cloud-azure-starter-active-directory-b2c, spring-cloud-azure-starter-active-directory-b2c>>\n\n[#migration-guide-authentication]\n=== Authentication\n\nSpring Cloud Azure 4.0 supports all the authentication methods each Azure Service SDK supports. It allows configuring a\nglobal token credential and providing the token credential at each service level. But credential isn't required\nto configure in Spring Cloud Azure 4.0, it can leverage the credential stored in a local developing environment, or\nmanaged identity in Azure Services, just make sure the principal has been granted sufficient permission to access the\ntarget Azure resources.\n\nNOTE: When assign roles to the security principals to interact with Azure messaging services, the `Data` related roles are required to conduct messaging operations. For Spring Cloud Azure Stream Event Hubs / Service Bus Binder libraries, `Contributor` role is required when the function of auto creating resources is needed. See link:https://docs.microsoft.com/azure/role-based-access-control/built-in-roles[Azure built-in roles] for more details.\n\nA chained credential, the https://docs.microsoft.com/java/api/overview/azure/identity-readme?view=azure-java-stable#defaultazurecredential[DefaultAzureCredential] bean is autoconfigured by default and will be used by all components if no more authentication information is specified.\n\n=== Configuration Properties\n\n[#migration-guide-properties-migration]\n==== Properties migration\nWe've created an `additional-spring-configuration-metadata.json` file to smooth the property migration when using with `spring-boot-properties-migrator`. Before doing so, let’s add the property migrator to your application\n\n[source,xml]\n----\n<dependency>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-properties-migrator</artifactId>\n    <scope>runtime</scope>\n</dependency>\n----\nOr, if you’re using Gradle:\n\n[source,groovy]\n----\nruntime(\"org.springframework.boot:spring-boot-properties-migrator\")\n----\n\nIf you run the app, it will identify the properties that are no longer managed by Spring Cloud Azure. If there is a replacement it will temporarily remap the property for you with a warning. If there isn’t a replacement, an error report will give you more information. Either way, the configuration has to be updated and the dependency removed once you have updated the configuration.\n\nBefore you move on, it's a good idea to use the search feature of your IDE to double-check that you aren't using one of the properties you’ve migrated in an integration test.\n\nIMPORTANT: We've changed many configuration properties in this change, with using the `spring-boot-properties-migrator` will help smooth your migration.\n\n[#migration-guide-global-configurations]\n==== Global Configurations\n\nThe modern `spring-cloud-azure-starter` allows developers to define properties that apply to all Azure SDKs in the\nnamespace `spring.cloud.azure`. It wasn't supported in the legacy `azure-spring-boot-starter`. The global\nconfigurations can be divided into five categories:\n\n.Global configurations\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Prefix |Description\n|*spring.cloud.azure*.client |To configure the transport clients underneath each Azure SDK.\n|*spring.cloud.azure*.credential |To configure how to authenticate with Azure Active Directory.\n|*spring.cloud.azure*.profile |To configure the Azure cloud environment.\n|*spring.cloud.azure*.proxy |To configure the proxy options apply to all Azure SDK clients.\n|*spring.cloud.azure*.retry |To configure the retry options apply to all Azure SDK clients. The retry options have supported part of the SDKs, there's no `spring.cloud.azure.cosmos.retry`.\n|===\n\nCheck link:appendix.html#_global_properties[Global Properties] for a full list of global configurations.\n\n==== Each SDK Configurations\n\nFor the configuration options in SDK level, please refer to below links for details.\n\n- <<configuration-spring-cloud-azure-starter-active-directory, From azure-spring-boot-starter-active-directory to spring-cloud-azure-starter-active-directory>>\n- <<configuration-spring-cloud-azure-starter-active-directory-b2c, From azure-spring-boot-starter-active-directory-b2c to spring-cloud-azure-starter-active-directory-b2c>>\n- <<configuration-spring-cloud-azure-starter-data-cosmos, From azure-spring-boot-starter-cosmos to spring-cloud-azure-starter-data-cosmos>>\n- <<configuration-spring-cloud-azure-starter-keyvault-secrets, From azure-spring-boot-starter-keyvault-secrets to spring-cloud-azure-starter-keyvault-secrets>>\n- <<configuration-spring-cloud-azure-starter-servicebus-jms, From azure-spring-boot-starter-servicebus-jms to spring-cloud-azure-starter-servicebus-jms>>\n- <<configuration-spring-cloud-azure-starter-storage-blob, From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-blob>>\n- <<configuration-spring-cloud-azure-starter-storage-file-share, From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-file-share>>\n- <<configuration-spring-cloud-azure-starter-integration-eventhubs, From azure-spring-cloud-starter-eventhubs to spring-cloud-azure-starter-integration-eventhubs>>\n- <<configuration-spring-cloud-azure-starter-integration-servicebus, From azure-spring-cloud-starter-servicebus to spring-cloud-azure-starter-integration-servicebus>>\n- <<configuration-spring-cloud-azure-starter-integration-storage-queue, From azure-spring-cloud-starter-storage-queue to spring-cloud-azure-starter-integration-storage-queue>>\n- <<configuration-spring-cloud-azure-stream-binder-eventhubs, From azure-spring-cloud-stream-binder-eventhubs to spring-cloud-azure-stream-binder-eventhubs>>\n- <<configuration-spring-cloud-azure-stream-binder-servicebus, From azure-spring-cloud-stream-binder-servicebus-* to spring-cloud-azure-stream-binder-servicebus>>\n\n=== API Breaking Changes\n\nFor API breaking changes in each libraries, please refer to below links for details.\n\n- <<api-spring-cloud-azure-starter-active-directory, From azure-spring-boot-starter-active-directory to spring-cloud-azure-starter-active-directory>>\n- <<api-spring-cloud-azure-starter-active-directory-b2c, From azure-spring-boot-starter-active-directory-b2c to spring-cloud-azure-starter-active-directory-b2c>>\n- <<api-spring-cloud-azure-starter-storage-blob, From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-blob>>\n- <<api-spring-cloud-azure-starter-storage-file-share, From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-file-share>>\n- <<api-spring-cloud-azure-starter-integration-eventhubs, From azure-spring-cloud-starter-eventhubs to spring-cloud-azure-starter-integration-eventhubs>>\n- <<api-spring-integration-azure-eventhubs, From azure-spring-integration-eventhubs to spring-integration-azure-eventhubs>>\n- <<api-spring-cloud-azure-starter-integration-servicebus, From azure-spring-cloud-starter-servicebus to spring-cloud-azure-starter-integration-servicebus>>\n- <<api-spring-integration-azure-servicebus, From azure-spring-integration-servicebus to spring-integration-azure-servicebus>>\n- <<api-spring-cloud-azure-starter-integration-storage-queue, From azure-spring-cloud-starter-storage-queue to spring-cloud-azure-starter-integration-storage-queue>>\n- <<api-spring-integration-azure-storage-queue, From azure-spring-integration-storage-queue to spring-integration-azure-storage-queue>>\n- <<api-spring-cloud-azure-stream-binder-eventhubs, From azure-spring-cloud-stream-binder-eventhubs to spring-cloud-azure-stream-binder-eventhubs>>\n- <<api-spring-cloud-azure-stream-binder-servicebus, From azure-spring-cloud-stream-binder-servicebus-* to spring-cloud-azure-stream-binder-servicebus>>\n\n=== Library Changes\nBreaking changes in each library are introduced as follows.\n\n==== From azure-spring-boot-starter to spring-cloud-azure-starter\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter[spring-cloud-azure-starter] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter[azure-spring-boot-starter].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#dependency-spring-cloud-azure-starter]\n===== Dependency Changes\nSome unnecessary dependencies were included in the legacy artifacts, which we have removed in the modern Spring Cloud\nAzure 4.0 libraries. Please make sure add the removed dependencies manually to your project to prevent unintentionally\ncrash.\n\n.Removed dependencies of spring-cloud-starter\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Removed dependencies |Description\n|org.springframework.boot:spring-boot-starter-validation | Please include the validation starter if you want to use Hibernate Validator.\n|===\n\n==== From azure-spring-boot-starter-active-directory to spring-cloud-azure-starter-active-directory\n\nThis guide is intended to assist the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory[spring-cloud-azure-starter-active-directory] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-active-directory[azure-spring-boot-starter-active-directory].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#dependency-spring-cloud-azure-starter-active-directory]\n===== Dependency Changes\n\nSome unnecessary dependencies in the legacy artifact have been removed since the modern Spring Cloud\nAzure 4.0 library. Please add these removed dependencies to your project to prevent unintentional crash.\n\n.Removed Dependencies\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Removed Dependency |Description\n\n|com.fasterxml.jackson.core:jackson-databind\n|Please add this dependency to your project if needed.\n\n|io.projectreactor.netty:reactor-netty\n|Please add this dependency to your project if needed.\n\n|org.springframework.boot:spring-boot-starter-validation\n|Please add this dependency to your project if needed.\n\n|org.springframework.boot:spring-boot-starter-webflux\n|Please add this dependency to your project if needed.\n|===\n\n[#configuration-spring-cloud-azure-starter-active-directory]\n===== SDK Configuration Changes\nThis section includes the changes about the properties added, removed and changed.\n\n.The following two points are the main to pay your attention to:\n. All configuration property names' prefix is changed from `azure.activedirectory` to `spring.cloud.azure.active-directory`.\n. New property `spring.cloud.azure.active-directory.enabled` is added to enable/disable AAD related features. The default value is `false`.\n\n.Property mapping from azure-spring-boot-starter-active-directory to spring-cloud-azure-starter-active-directory\n[cols=\"<30,<~\", options=\"header\"]\n|===\n| Legacy properties     | Modern properties\n\n| *azure.activedirectory*.app-id-uri\n| *spring.cloud.azure.active-directory*.app-id-uri\n\n| *azure.activedirectory*.application-type\n| *spring.cloud.azure.active-directory*.application-type\n\n| *azure.activedirectory*.authorization-clients\n| *spring.cloud.azure.active-directory*.authorization-clients\n\n| *azure.activedirectory*.authorization-clients.<AZURE_CLIENT_NAME>.authorization-grant-type\n| *spring.cloud.azure.active-directory*.authorization-clients.<AZURE_CLIENT_NAME>.authorization-grant-type\n\n| *azure.activedirectory*.authorization-clients.<AZURE_CLIENT_NAME>.on-demand\n| *spring.cloud.azure.active-directory*.authorization-clients.<AZURE_CLIENT_NAME>.on-demand\n\n| *azure.activedirectory*.authorization-clients.<AZURE_CLIENT_NAME>.scopes\n| *spring.cloud.azure.active-directory*.authorization-clients.<AZURE_CLIENT_NAME>.scopes\n\n| *azure.activedirectory*.authenticate-additional-parameters\n| *spring.cloud.azure.active-directory*.authenticate-additional-parameters\n\n| *azure.activedirectory*.base-uri\n| *spring.cloud.azure.active-directory*.profile.environment.active-directory-endpoint\n\n| *azure.activedirectory*.client-id\n| *spring.cloud.azure.active-directory*.credential.client-id\n\n| *azure.activedirectory*.client-secret\n| *spring.cloud.azure.active-directory*.credential.client-secret\n\n| *azure.activedirectory*.graph-membership-uri\n| *spring.cloud.azure.active-directory*.graph-membership-uri\n\n| *azure.activedirectory*.jwt-connect-timeout\n| *spring.cloud.azure.active-directory*.jwt-connect-timeout\n\n| *azure.activedirectory*.jwt-read-timeout\n| *spring.cloud.azure.active-directory*.jwt-read-timeout\n\n| *azure.activedirectory*.jwt-size-limit\n| *spring.cloud.azure.active-directory*.jwt-size-limit\n\n| *azure.activedirectory*.jwk-set-cache-lifespan\n| *spring.cloud.azure.active-directory*.jwk-set-cache-lifespan\n\n| *azure.activedirectory*.jwk-set-cache-refresh-time\n| *spring.cloud.azure.active-directory*.jwk-set-cache-refresh-time\n\n| *azure.activedirectory*.post-logout-redirect-uri\n| *spring.cloud.azure.active-directory*.post-logout-redirect-uri\n\n| *azure.activedirectory*.session-stateless\n| *spring.cloud.azure.active-directory*.session-stateless\n\n| *azure.activedirectory*.redirect-uri-template\n| *spring.cloud.azure.active-directory*.redirect-uri-template\n\n| *azure.activedirectory*.resource-server.claim-to-authority-prefix-map\n| *spring.cloud.azure.active-directory*.resource-server.claim-to-authority-prefix-map\n\n| *azure.activedirectory*.resource-server.principal-claim-name\n| *spring.cloud.azure.active-directory*.resource-server.principal-claim-name\n\n| *azure.activedirectory*.tenant-id\n| *spring.cloud.azure.active-directory*.profile.tenant-id\n\n| *azure.activedirectory*.user-group.allowed-group-ids\n| *spring.cloud.azure.active-directory*.user-group.allowed-group-ids\n\n| *azure.activedirectory*.user-group.allowed-group-names\n| *spring.cloud.azure.active-directory*.user-group.allowed-group-names\n\n| *azure.activedirectory*.user-name-attribute\n| *spring.cloud.azure.active-directory*.user-name-attribute\n|===\n\n.The value type of the following properties is changed from `long` to `Duration`:\n* `jwt-connect-timeout`\n* `jwt-read-timeout`\n* `jwk-set-cache-lifespan`\n* `jwk-set-cache-refresh-time`.\n\n.The following properties are removed:\n* azure.activedirectory.allow-telemetry\n* azure.activedirectory.user-group.enable-full-list\n* azure.activedirectory.graph-base-uri\n* azure.activedirectory.graph-membership-uri\n\n.The following properties are added:\n* spring.cloud.azure.active-directory.enabled\n* spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint\n* spring.cloud.azure.active-directory.user-group.use-transitive-members\n\nNOTE: The function of `azure.activedirectory.graph-membership-uri` has been replaced by 2 properties: `spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint` and `spring.cloud.azure.active-directory.user-group.use-transitive-members`. The first property is used to specify the host name, and the second a flag for using the url path: `v1.0/me/memberOf` or `v1.0/me/transitiveMemberOf`.\n\nHere are some examples of migration:\n\n.Case 1\n====\n.For legacy:\nazure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf\n\n.For modern:\nspring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=`https://graph.microsoft.com/` +\nspring.cloud.azure.active-directory.user-group.use-transitive-members=`false`\n====\n\n.Case 2\n====\n.For legacy:\nazure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf\n\n.For modern:\nspring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=`https://graph.microsoft.com/` +\nspring.cloud.azure.active-directory.user-group.use-transitive-members=`true`\n====\n\n[#api-spring-cloud-azure-starter-active-directory]\n===== API Changes\n\n.Class mapping from azure-spring-boot-starter-active-directory to spring-cloud-azure-starter-active-directory\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n\n|com.azure.spring.aad.webapi.AADJwtBearerTokenAuthenticationConverter\n|com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter\n\n|com.azure.spring.aad.webapi.AADResourceServerProperties\n|com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties\n\n|com.azure.spring.aad.webapi.AADResourceServerWebSecurityConfigurerAdapter\n|com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter\n\n|com.azure.spring.aad.webapp.AADWebSecurityConfigurerAdapter\n|com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter\n\n|com.azure.spring.aad.webapp.AuthorizationClientProperties\n|com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties\n\n|com.azure.spring.aad.AADApplicationType\n|com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType\n\n|com.azure.spring.aad.AADAuthorizationGrantType\n|com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationGrantType\n\n|com.azure.spring.aad.AADAuthorizationServerEndpoints\n|com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints\n\n|com.azure.spring.aad.AADClientRegistrationRepository\n|com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository\n\n|com.azure.spring.aad.AADTrustedIssuerRepository\n|com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository\n\n|com.azure.spring.autoconfigure.aad.AADAppRoleStatelessAuthenticationFilter\n|com.azure.spring.cloud.autoconfigure.aad.filter.AadAppRoleStatelessAuthenticationFilter\n\n|com.azure.spring.autoconfigure.aad.AADAuthenticationFilter\n|com.azure.spring.cloud.autoconfigure.aad.filter.AadAuthenticationFilter\n\n|com.azure.spring.autoconfigure.aad.AADAuthenticationProperties\n|com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties\n\n|com.azure.spring.autoconfigure.aad.UserPrincipal\n|com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal\n\n|com.azure.spring.autoconfigure.aad.UserPrincipalManager\n|com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipalManager\n|===\n\n\nThis section lists the removed classes from azure-spring-boot-starter-active-directory +\n\n.Removed legacy class\n* com.azure.spring.aad.webapp.AADHandleConditionalAccessFilter\n* com.azure.spring.aad.webapi.validator.AADJwtAudienceValidator\n* com.azure.spring.aad.webapi.validator.AADJwtClaimValidator\n\n==== From azure-spring-boot-starter-active-directory-b2c to spring-cloud-azure-starter-active-directory-b2c\n\nThis guide is intended to assist the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory-b2c[spring-cloud-azure-starter-active-directory-b2c] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-active-directory-b2c[azure-spring-boot-starter-active-directory-b2c].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#dependency-spring-cloud-azure-starter-active-directory-b2c]\n===== Dependency Changes\n\nSome unnecessary dependencies in the legacy artifact have been removed since the modern Spring Cloud\nAzure 4.0 library. Please add these removed dependencies to your project to prevent unintentional crash.\n\n.Removed Dependencies\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Removed Dependency |Description\n|org.springframework.boot:spring-boot-starter-validation |Please include the validation starter if you want to use Hibernate Validator.\n|===\n\n[#configuration-spring-cloud-azure-starter-active-directory-b2c]\n===== SDK Configuration Changes\n\nThis section includes the changes about the properties added, removed and changed.\n\n.The following two points are the main to pay your attention to:\n. All configuration property names' prefix is changed from `azure.activedirectory.b2c` to `spring.cloud.azure.active-directory.b2c`.\n. New property `spring.cloud.azure.active-directory.b2c.enabled` is added to enable/disable AAD B2C related features. The default value is false.\n\n.Property mapping from azure-spring-boot-starter-active-directory-b2c to spring-cloud-azure-starter-active-directory-b2c\n[cols=\"<30,<~\", options=\"header\"]\n|===\n| Legacy properties  | Modern properties\n\n| *azure.activedirectory.b2c*.authenticate-additional-parameters\n| *spring.cloud.azure.active-directory.b2c*.authenticate-additional-parameters\n\n| *azure.activedirectory.b2c*.authorization-clients\n| *spring.cloud.azure.active-directory.b2c*.authorization-clients\n\n| *azure.activedirectory.b2c*.authorization-clients.<AZURE_CLIENT_NAME>.authorization-grant-type\n| *spring.cloud.azure.active-directory.b2c*.authorization-clients.<AZURE_CLIENT_NAME>.authorization-grant-type\n\n| *azure.activedirectory.b2c*.authorization-clients.<AZURE_CLIENT_NAME>.scopes\n| *spring.cloud.azure.active-directory.b2c*.authorization-clients.<AZURE_CLIENT_NAME>.scopes\n\n| *azure.activedirectory.b2c*.app-id-uri\n| *spring.cloud.azure.active-directory.b2c*.app-id-uri\n\n| *azure.activedirectory.b2c*.base-uri\n| *spring.cloud.azure.active-directory.b2c*.base-uri\n\n| *azure.activedirectory.b2c*.client-id\n| *spring.cloud.azure.active-directory.b2c*.credential.client-id\n\n| *azure.activedirectory.b2c*.client-secret\n| *spring.cloud.azure.active-directory.b2c*.credential.client-secret\n\n| *azure.activedirectory.b2c*.jwt-connect-timeout\n| *spring.cloud.azure.active-directory.b2c*.jwt-connect-timeout\n\n| *azure.activedirectory.b2c*.jwt-read-timeout\n| *spring.cloud.azure.active-directory.b2c*.jwt-read-timeout\n\n| *azure.activedirectory.b2c*.jwt-size-limit\n| *spring.cloud.azure.active-directory.b2c*.jwt-size-limit\n\n| *azure.activedirectory.b2c*.login-flow\n| *spring.cloud.azure.active-directory.b2c*.login-flow\n\n| *azure.activedirectory.b2c*.logout-success-url\n| *spring.cloud.azure.active-directory.b2c*.logout-success-url\n\n| *azure.activedirectory.b2c*.reply-url\n| *spring.cloud.azure.active-directory.b2c*.reply-url\n\n| *azure.activedirectory.b2c*.tenant-id\n| *spring.cloud.azure.active-directory.b2c*.profile.tenant-id\n\n| *azure.activedirectory.b2c*.user-flows\n| *spring.cloud.azure.active-directory.b2c*.user-flows\n\n| *azure.activedirectory.b2c*.user-name-attribute-name\n| *spring.cloud.azure.active-directory.b2c*.user-name-attribute-name\n|===\n\n.Removed properties from azure-spring-boot-starter-active-directory-b2c:\n* azure.activedirectory.b2c.allow-telemetry\n* azure.activedirectory.b2c.tenant\n\n.The value type of the following properties is changed from `long` to `Duration`:\n* `jwt-connect-timeout`\n* `jwt-read-timeout`\n\n[#api-spring-cloud-azure-starter-active-directory-b2c]\n===== API Changes\n\n.Class mapping from azure-spring-boot-starter-active-directory-b2c to spring-cloud-azure-starter-active-directory-b2c\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n\n|com.azure.spring.autoconfigure.b2c.AADB2CAuthorizationRequestResolver\n|com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver\n\n|com.azure.spring.autoconfigure.b2c.AADB2CJwtBearerTokenAuthenticationConverter\n|com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter\n\n|com.azure.spring.autoconfigure.b2c.AADB2CLogoutSuccessHandler\n|com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler\n\n|com.azure.spring.autoconfigure.b2c.AADB2COidcLoginConfigurer\n|com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cOidcLoginConfigurer\n\n|com.azure.spring.autoconfigure.b2c.AADB2CProperties\n|com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties\n\n|com.azure.spring.autoconfigure.b2c.AADB2CTrustedIssuerRepository\n|com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cTrustedIssuerRepository\n\n|com.azure.spring.autoconfigure.b2c.AuthorizationClientProperties\n|com.azure.spring.cloud.autoconfigure.aadb2c.properties.AuthorizationClientProperties\n|===\n\n==== From azure-spring-boot-starter-cosmos to spring-cloud-azure-starter-data-cosmos\n\nThis guide is intended to assist the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-data-cosmos[spring-cloud-azure-starter-data-cosmos] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-cosmos[azure-spring-boot-starter-cosmos].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.Please refer to the <<migration-guide-global-configurations, global configurations>> section for the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-data-cosmos]\n===== SDK Configuration Changes\n\nAll configuration property names' prefix is changed from `azure.cosmos` to `spring.cloud.azure.cosmos`.\n\n.Property mapping from azure-spring-boot-starter-cosmos to spring-cloud-azure-starter-data-cosmos\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Morden properties\n\n|*azure.cosmos*.connection-mode\n|*spring.cloud.azure.cosmos*.connection-mode\n\n|*azure.cosmos*.consistency-level\n|*spring.cloud.azure.cosmos*.consistency-level\n\n|*azure.cosmos*.database\n|*spring.cloud.azure.cosmos*.database\n\n|*azure.cosmos*.key\n|*spring.cloud.azure.cosmos*.key\n\n|*azure.cosmos*.populate-query-metrics\n|*spring.cloud.azure.cosmos*.populate-query-metrics\n\n|*azure.cosmos*.uri\n|*spring.cloud.azure.cosmos*.endpoint\n|===\n\n==== From azure-spring-boot-starter-keyvault-secrets to spring-cloud-azure-starter-keyvault-secrets\n\nThis guide is intended to assist the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-secrets[spring-cloud-azure-starter-keyvault-secrets] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-keyvault-secrets[azure-spring-boot-starter-keyvault-secrets].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-keyvault-secrets]\n===== SDK Configuration Changes\n\nThis section includes the changes about the properties added, removed and changed.\n\n.Property mapping from azure-spring-boot-starter-keyvault-secrets to spring-cloud-azure-starter-keyvault-secrets\n[cols=\"<30,<~\", options=\"header\"]\n|===\n| Legacy properties                        | Modern properties\n\n| *azure.keyvault*.case-sensitive-keys\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].case-sensitive\n\n| *azure.keyvault*.certificate-password\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].credential.client-certificate-password\n\n| *azure.keyvault*.certificate-path\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].credential.client-certificate-path\n\n| *azure.keyvault*.client-id\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].credential.client-id\n\n| *azure.keyvault*.client-key\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].credential.client-secret\n\n| *azure.keyvault*.enabled\n| *spring.cloud.azure.keyvault.secret*.enabled and *spring.cloud.azure.keyvault.secret*.property-source-enabled\n\n| *azure.keyvault*.refresh-interval\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].refresh-interval\n\n| *azure.keyvault*.secret-keys\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].secret-keys\n\n| *azure.keyvault*.tenant-id\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].profile.tenant-id\n\n| *azure.keyvault*.uri\n| *spring.cloud.azure.keyvault.secret*.property-sources[n].endpoint\n|===\n\n.Removed properties from spring-cloud-azure-starter-keyvault-secrets\n* azure.keyvault.allow-telemetry\n* azure.keyvault.order\n\n\n.The following points you should pay your attention to:\n. All configuration property names changed the prefix from `azure.keyvault` to `spring.cloud.azure.keyvault.secret`.\n. `spring.cloud.azure.keyvault.secret.enabled` is used to enable the feature of configuring Key Vault secret client beans(like SecretClient and SecretAsyncClient).\n. `spring.cloud.azure.keyvault.secret.property-source-enabled` is used to enable all `KeyVaultPropertySource`.\n. For Azure common properties(like `client`, `proxy`, `retry`, `credential`, `profile`) and Key Vault properties(like `endpoint`, `service-version`). If `spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME` isn't configured, `spring.cloud.azure.keyvault.secret.PROPERTY_NAME` will be used.\n. `spring.cloud.azure.keyvault.secret.property-sources[n].resource` is specific to a unique Azure resource, so if it's not configured, it won't get value from other places.\n\n==== From azure-spring-boot-starter-servicebus-jms to spring-cloud-azure-starter-servicebus-jms\n\nThis guide is intended to assist the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-servicebus-jms[spring-cloud-azure-starter-servicebus-jms] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-servicebus-jms[azure-spring-boot-starter-servicebus-jms].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-servicebus-jms]\n===== SDK Configuration Changes\n\nThe value type for `spring.jms.servicebus.idle-timeout` is changed from `long`(milliseconds) to `Duration` for ease of readability.\n\n==== From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-blob\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-blob[spring-cloud-azure-starter-storage-blob] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-storage[azure-spring-boot-starter-storage].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-storage-blob]\n===== SDK Configuration Changes\n\nAll configuration property names changed the prefix from `azure.storage` to `spring.cloud.azure.storage.blob`.\n\n.Property mapping from azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-blob\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*azure.storage*.account-name |*spring.cloud.azure.storage.blob*.account-name\n|*azure.storage*.account-key |*spring.cloud.azure.storage.blob*.account-key\n|*azure.storage*.blob-endpoint |*spring.cloud.azure.storage.blob*.endpoint\n|===\n\n[#api-spring-cloud-azure-starter-storage-blob]\n===== API Changes\n\n.Class mapping from azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-blob\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |com.azure.spring.cloud.core.resource.AzureStorageBlobProtocolResolver\n|com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver|com.azure.spring.cloud.core.resource.AzureStorageBlobProtocolResolver\n|com.azure.spring.autoconfigure.storage.resource.BlobStorageResource|com.azure.spring.cloud.core.resource.StorageBlobResource\n|===\n\n==== From azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-file-share\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-file-share[spring-cloud-azure-starter-storage-file-share] from\nversion 3 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-boot-starter-storage[azure-spring-boot-starter-storage].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-storage-file-share]\n===== SDK Configuration Changes\n\nAll configuration property names changed the prefix from `azure.storage` to `spring.cloud.azure.storage.fileshare`.\n\n.Property mapping from azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-file-share\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*azure.storage*.account-name |*spring.cloud.azure.storage.fileshare*.account-name\n|*azure.storage*.account-key |*spring.cloud.azure.storage.fileshare*.account-key\n|*azure.storage*.file-endpoint |*spring.cloud.azure.storage.fileshare*.endpoint\n|===\n\n[#api-spring-cloud-azure-starter-storage-file-share]\n===== API Changes\n.Class mapping from azure-spring-boot-starter-storage to spring-cloud-azure-starter-storage-file-share\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |com.azure.spring.cloud.core.resource.AzureStorageFileProtocolResolver\n|com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver|com.azure.spring.cloud.core.resource.AzureStorageFileProtocolResolver\n|com.azure.spring.autoconfigure.storage.resource.FileStorageResource|com.azure.spring.cloud.core.resource.StorageFileResource\n|===\n\n==== From azure-spring-cloud-starter-eventhubs to spring-cloud-azure-starter-integration-eventhubs\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-eventhubs[spring-cloud-azure-starter-integration-eventhubs] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-starter-eventhubs[azure-spring-cloud-starter-eventhubs].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-integration-eventhubs]\n===== SDK Configuration Changes\n\nIMPORTANT: Configuration prefix has been changed from `spring.cloud.azure.eventhub` to `spring.cloud.azure.eventhubs.`\n\nChanges for the child entries for this prefix, please refer the following tables:\n\n.Property mapping from azure-spring-cloud-starter-eventhubs to spring-cloud-azure-starter-integration-eventhubs\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties | Modern properties\n|*spring.cloud.azure*.resource-group|*spring.cloud.azure.eventhubs*.resource.resource-group\n|*spring.cloud.azure.eventhub*.namespace|*spring.cloud.azure.eventhubs*.namespace\n|*spring.cloud.azure.eventhub*.connection-string|*spring.cloud.azure.eventhubs*.connection-string\n|*spring.cloud.azure.eventhub*.checkpoint-storage-account|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.account-name\n|*spring.cloud.azure.eventhub*.checkpoint-access-key|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.account-key\n|*spring.cloud.azure.eventhub*.checkpoint-container|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.container-name\n|===\n\nFor example, change from:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhub:\n        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}\n        checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}\n        checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}\n        checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}\n----\n\nto:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhubs:\n        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}\n        processor:\n          checkpoint-store:\n            container-name: ${AZURE_STORAGE_CONTAINER_NAME}\n            account-name:  ${AZURE_STORAGE_ACCOUNT_NAME}\n            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}\n----\n\n[#api-spring-cloud-azure-starter-integration-eventhubs]\n===== API Changes\n\n* Please refer to the migration guide of <<migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> library for the changes of listener annotations.\n* Drop `EventHubOperation` with the subscribing function moved to class `EventHubsMessageListenerContainer` and the sending function moved to `EventHubsTemplate`.\n* Rename `EventHubInboundChannelAdapter` as `EventHubsInboundChannelAdapter` to keep consistent with the service of Azure\nEvent Hubs.\n* Change the constructor from `EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)` and `EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)`.\n* Change `CheckpointConfig` instantiation style to the simple constructor instead of build style.\n* Drop API `EventHubOperation#setCheckpointConfig`. To set the checkpoint configuration for the inbound channel adapter, users can call the method `EventHubsContainerProperties#setCheckpointConfig`.\n* Drop API `EventHubOperation#setBatchConsumerConfig`. To set the batch-consuming configuration for the inbound channel adapter, users can call the two methods `EventHubsContainerProperties#getBatch#setMaxSize` and `EventHubsContainerProperties#getBatch#setMaxWaitTime` meanwhile.\n* For the batch consuming mode, change the message header names converted from batched messages.\n    - Change message header from `azure_eventhub_enqueued_time` to `azure_eventhubs_batch_converted_enqueued_time`.\n    - Change message header from `azure_eventhub_offset` to `azure_eventhubs_batch_converted_offset`.\n    - Change message header from `azure_eventhub_sequence_number` to `azure_eventhubs_batch_converted_sequence_number`.\n    - Change message header from `azure_partition_key` to `azure_batch_converted_partition_key`.\n* When publishing messages to Event Hubs, ignore all message headers converted from batched messages. Headers include:\n    - azure_batch_converted_partition_key\n    - azure_eventhubs_batch_converted_enqueued_time\n    - azure_eventhubs_batch_converted_offset\n    - azure_eventhubs_batch_converted_sequence_number\n    - azure_eventhubs_batch_converted_system_properties\n    - azure_eventhubs_batch_converted_application_properties\n* The `BATCH` checkpoint mode only works in the batch-consuming mode now, which can be enabled by passing `ListenerMode.BATCH` to EventHubsInboundChannelAdapter constructor.\n\n.Class mapping from azure-spring-cloud-starter-eventhubs to spring-cloud-azure-starter-integration-eventhubs\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.core.EventHubHeaders |com.azure.spring.messaging.eventhubs.support.EventHubsHeaders\n|com.azure.spring.integration.core.api.CheckpointConfig |com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig\n|com.azure.spring.integration.core.api.CheckpointMode |com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode\n|com.azure.spring.integration.core.api.reactor.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter\n|===\n\n====== Sample Code Snippet\n\n1.EventHubsInboundChannelAdapter sample code:\n\nLegacy code:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    public EventHubInboundChannelAdapter messageChannelAdapter(\n        @Qualifier(\"INPUT_CHANNEL\") MessageChannel inputChannel, EventHubOperation eventhubOperation) {\n        eventhubOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build());\n        EventHubInboundChannelAdapter adapter = new EventHubInboundChannelAdapter(\"EVENTHUB_NAME\",\n            eventhubOperation, \"CONSUMER_GROUP\");\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n}\n----\n\nModern code:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) {\n        EventHubsContainerProperties containerProperties = new EventHubsContainerProperties();\n        containerProperties.setEventHubName(\"EVENTHUB_NAME\");\n        containerProperties.setConsumerGroup(\"CONSUMER_GROUP\");\n        CheckpointConfig config = new CheckpointConfig(CheckpointMode.MANUAL);\n        containerProperties.setCheckpointConfig(config);\n        return new EventHubsMessageListenerContainer(processorFactory, containerProperties);\n    }\n\n    @Bean\n    public EventHubsInboundChannelAdapter messageChannelAdapter(@Qualifier(\"INPUT_CHANNEL\") MessageChannel inputChannel,\n                                                                EventHubsMessageListenerContainer listenerContainer) {\n        EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(listenerContainer);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n}\n----\n\n2.DefaultMessageHandler sample code:\n\nLegacy code:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    @ServiceActivator(inputChannel = \"OUTPUT_CHANNEL\")\n    public MessageHandler messageSender(EventHubOperation eventhubOperation) {\n        DefaultMessageHandler handler = new DefaultMessageHandler(\"EVENTHUB_NAME\", eventhubOperation);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.error(\"There was an error sending the message.\", ex);\n            }\n        });\n        return handler;\n    }\n}\n----\n\nModern code:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    @ServiceActivator(inputChannel = \"OUTPUT_CHANNEL\")\n    public MessageHandler messageSender(EventHubsTemplate eventhubOperation) {\n        DefaultMessageHandler handler = new DefaultMessageHandler(\"EVENTHUB_NAME\", eventhubOperation);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.error(\"There was an error sending the message.\", ex);\n            }\n        });\n\n        return handler;\n    }\n}\n----\n\n==== From azure-spring-integration-eventhubs to spring-integration-azure-eventhubs\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-eventhubs[spring-integration-azure-eventhubs] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-integration-eventhubs[azure-spring-integration-eventhubs].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n\n[#api-spring-integration-azure-eventhubs]\n===== API Changes\n\n* Drop `EventHubOperation` with the subscribing function moved to class `EventHubsMessageListenerContainer` and the sending function moved to `EventHubsTemplate`.\n* Rename `EventHubInboundChannelAdapter` as `EventHubsInboundChannelAdapter` to keep consistent with the service of Azure\nEvent Hubs.\n* Change the constructor from `EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)` and `EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)`.\n* Change `CheckpointConfig` instantiation style to the simple constructor instead of build style.\n* Drop API `EventHubOperation#setCheckpointConfig`. To set the checkpoint configuration for the inbound channel adapter, users can call the method `EventHubsContainerProperties#setCheckpointConfig`.\n* Drop API `EventHubOperation#setBatchConsumerConfig`. To set the batch-consuming configuration for the inbound channel adapter, users can call the two methods `EventHubsContainerProperties#getBatch#setMaxSize` and `EventHubsContainerProperties#getBatch#setMaxWaitTime` meanwhile.\n* For the batch consuming mode, change the message header names converted from batched messages.\n    - Change message header from `azure_eventhub_enqueued_time` to `azure_eventhubs_batch_converted_enqueued_time`.\n    - Change message header from `azure_eventhub_offset` to `azure_eventhubs_batch_converted_offset`.\n    - Change message header from `azure_eventhub_sequence_number` to `azure_eventhubs_batch_converted_sequence_number`.\n    - Change message header from `azure_partition_key` to `azure_batch_converted_partition_key`.\n* When publishing messages to Event Hubs, ignore all message headers converted from batched messages. Headers include:\n    - azure_batch_converted_partition_key\n    - azure_eventhubs_batch_converted_enqueued_time\n    - azure_eventhubs_batch_converted_offset\n    - azure_eventhubs_batch_converted_sequence_number\n    - azure_eventhubs_batch_converted_system_properties\n    - azure_eventhubs_batch_converted_application_properties\n* The `BATCH` checkpoint mode only works in the batch-consuming mode now, which can be enabled by passing `ListenerMode.BATCH` to EventHubsInboundChannelAdapter constructor.\n\n.Class mapping from azure-spring-integration-eventhubs to spring-integration-azure-eventhubs\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.core.EventHubHeaders |com.azure.spring.messaging.eventhubs.support.EventHubsHeaders\n|com.azure.spring.integration.core.api.CheckpointConfig |com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig\n|com.azure.spring.integration.core.api.CheckpointMode |com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode\n|com.azure.spring.integration.core.api.reactor.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter\n|===\n\n==== From azure-spring-cloud-starter-servicebus to spring-cloud-azure-starter-integration-servicebus\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-servicebus[spring-cloud-azure-starter-integration-servicebus] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-starter-servicebus[azure-spring-cloud-starter-servicebus].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-integration-servicebus]\n===== SDK Configuration Changes\n\nFor all configuration options supported in spring-cloud-azure-starter-integration-servicebus,\nthe prefix remains to be as `spring.cloud.azure.servicebus`.\n\n.Property mapping from azure-spring-cloud-starter-servicebus to spring-cloud-azure-starter-integration-servicebus\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*spring.cloud.azure*.resource-group|*spring.cloud.azure.servicebus*.resource.resource-group\n|*spring.cloud.azure.servicebus*.transport-type |*spring.cloud.azure.servicebus*.client.transport-type\n|*spring.cloud.azure.servicebus*.retry-options.retry-mode |*spring.cloud.azure.servicebus*.retry.mode\n|*spring.cloud.azure.servicebus*.retry-options.max-retries |*spring.cloud.azure.servicebus*.retry.exponential.max-retries or *spring.cloud.azure.servicebus*.retry.fixed.max-retries, should be configured depending on *spring.cloud.azure.servicebus*.retry.mode=*fixed* or *exponential*\n|*spring.cloud.azure.servicebus*.retry-options.delay |*spring.cloud.azure.servicebus*.retry.exponential.base-delay or *spring.cloud.azure.servicebus*.retry.fixed.delay, should be configured depending on *spring.cloud.azure.servicebus*.retry.mode=*fixed* or *exponential*\n|*spring.cloud.azure.servicebus*.retry-options.max-delay |*spring.cloud.azure.servicebus*.retry.exponential.max-delay\n|*spring.cloud.azure.servicebus*.retry-options.try-timeout |*spring.cloud.azure.servicebus*.retry.try-timeout\n|===\n\n[#api-spring-cloud-azure-starter-integration-servicebus]\n===== API Changes\n* Drop `ServiceBusQueueOperation` and `ServiceBusTopicOperation` with the subscribing function moved to class `ServiceBusMessageListenerContainer` and the sending function moved to `ServiceBusTemplate`.\n* Drop `ServiceBusQueueInboundChannelAdapter` and `ServiceBusTopicInboundChannelAdapter`, and move the functionality to listen to a Service Bus queue/topic entity to ServiceBusInboundChannelAdapter.\n* Change the constructor from `ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)` and `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)`.\n* Change the constructor from `ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)` and `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)`.\n* Drop APIs `ServiceBusQueueOperation#setCheckpointConfig` and `ServiceBusTopicOperation#setCheckpointConfig`. To set the checkpoint configuration for the inbound channel adapter, users can call the method `ServiceBusContainerProperties#setAutoComplete` instead. To disable the auto-complete mode is equivalent to `MANUAL` checkpoint mode and to enable it will trigger the `RECORD` mode.\n* Drop APIs `ServiceBusQueueOperatio#setClientConfig` and `ServiceBusTopicOperation#setClientConfig`. To configure the underlying `ServiceBusProcessorClient` used by the inbound channel adapter, users can use `ServiceBusContainerProperties` instead.\n* Drop `CompletableFuture` support in `ServiceBusTemplate` and `DefaultMessageHandler`, support `Reactor` instead.\n* Add new API of `ServiceBusTemplate#setDefaultEntityType` to specify the entity type, which is required when no bean of `PropertiesSupplier&lt;String, ProducerProperties&gt;` is provided for the `ProducerProperties#entityType`.\n* Drop message header `AzureHeaders.RAW_ID`. Please use `ServiceBusMessageHeaders.MESSAGE_ID` instead.\n\n.Class mapping from azure-spring-cloud-starter-servicebus to spring-cloud-azure-starter-integration-servicebus\n[cols=\"<,<\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders\n|com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter\n|com.azure.spring.integration.core.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter\n|com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter\n|===\n\n====== Sample Code Snippet\n\n1.ServiceBusInboundChannelAdapter sample code:\n\nLegacy code of using `ServiceBusQueueInboundChannelAdapter` or `ServiceBusTopicInboundChannelAdapter`:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    public ServiceBusQueueInboundChannelAdapter queueMessageChannelAdapter(\n        @Qualifier(\"INPUT_CHANNEL_NAME\") MessageChannel inputChannel, ServiceBusQueueOperation queueOperation) {\n        queueOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build());\n        ServiceBusQueueInboundChannelAdapter adapter = new ServiceBusQueueInboundChannelAdapter(\"QUEUE_NAME\",\n            queueOperation);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n\n    @Bean\n    public ServiceBusTopicInboundChannelAdapter topicMessageChannelAdapter(\n        @Qualifier(\"INPUT_CHANNEL_NAME\") MessageChannel inputChannel, ServiceBusTopicOperation topicOperation) {\n        topicOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build());\n        ServiceBusTopicInboundChannelAdapter adapter = new ServiceBusTopicInboundChannelAdapter(\"TOPIC_NAME\",\n            topicOperation, \"SUBSCRIPTION_NAME\");\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n\n}\n----\n\nModern code:\n\n[source,java]\n----\npublic class Demo {\n    @Bean(\"queue-listener-container\")\n    public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) {\n        ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties();\n        containerProperties.setEntityName(\"QUEUE_NAME\");\n        containerProperties.setAutoComplete(false);\n        return new ServiceBusMessageListenerContainer(processorFactory, containerProperties);\n    }\n\n    @Bean\n    public ServiceBusInboundChannelAdapter queueMessageChannelAdapter(\n        @Qualifier(\"INPUT_CHANNEL\") MessageChannel inputChannel,\n        @Qualifier(\"queue-listener-container\") ServiceBusMessageListenerContainer listenerContainer) {\n        ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n\n    @Bean(\"topic-listener-container\")\n    public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) {\n        ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties();\n        containerProperties.setEntityName(\"TOPIC_NAME\");\n        containerProperties.setSubscriptionName(\"SUBSCRIPTION_NAME\");\n        containerProperties.setAutoComplete(false);\n        return new ServiceBusMessageListenerContainer(processorFactory, containerProperties);\n    }\n\n    @Bean\n    public ServiceBusInboundChannelAdapter topicMessageChannelAdapter(\n        @Qualifier(\"INPUT_CHANNEL\") MessageChannel inputChannel,\n        @Qualifier(\"topic-listener-container\") ServiceBusMessageListenerContainer listenerContainer) {\n        ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n}\n----\n\n2.DefaultMessageHandler sample code:\n\nLegacy code, taking queue as example:\n\n[source,java]\n----\npublic class Demo {\n    @Bean\n    @ServiceActivator(inputChannel = \"OUTPUT_CHANNEL_NAME\")\n    public MessageHandler queueMessageSender(ServiceBusQueueOperation queueOperation) {\n        DefaultMessageHandler handler = new DefaultMessageHandler(\"QUEUE_NAME\", queueOperation);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.info(\"There was an error sending the message.\");\n            }\n        });\n        return handler;\n    }\n}\n----\n\nModern code:\n\n[source,java]\n----\npublic class Demo {\n\n    @Bean\n    @ServiceActivator(inputChannel = \"OUTPUT_CHANNEL_NAME\")\n    public MessageHandler queueMessageSender(ServiceBusTemplate serviceBusTemplate) {\n        serviceBusTemplate.setDefaultEntityType(ServiceBusEntityType.QUEUE);\n        DefaultMessageHandler handler = new DefaultMessageHandler(\"QUEUE_NAME\", serviceBusTemplate);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully for {}.\", \"QUEUE_NAME\");\n            }\n\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.info(\"There was an error sending the message.\");\n            }\n        });\n\n        return handler;\n    }\n}\n----\n\n==== From azure-spring-integration-servicebus to spring-integration-azure-servicebus\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-servicebus[spring-integration-azure-servicebus] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-integration-servicebus[azure-spring-integration-servicebus].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n\n[#api-spring-integration-azure-servicebus]\n===== API Changes\n* Drop `ServiceBusQueueOperation` and `ServiceBusTopicOperation` with the subscribing function moved to class `ServiceBusMessageListenerContainer` and the sending function moved to `ServiceBusTemplate`.\n* Drop `ServiceBusQueueInboundChannelAdapter` and `ServiceBusTopicInboundChannelAdapter`, and move the functionality to listen to a Service Bus queue/topic entity to ServiceBusInboundChannelAdapter.\n* Change the constructor from `ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)` and `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)`.\n* Change the constructor from `ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)` to `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)` and `ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)`.\n* Drop APIs `ServiceBusQueueOperation#setCheckpointConfig` and `ServiceBusTopicOperation#setCheckpointConfig`. To set the checkpoint configuration for the inbound channel adapter, users can call the method `ServiceBusContainerProperties#setAutoComplete` instead. To disable the auto-complete mode is equivalent to `MANUAL` checkpoint mode and to enable it will trigger the `RECORD` mode.\n* Drop APIs `ServiceBusQueueOperation#setClientConfig` and `ServiceBusTopicOperation#setClientConfig`. To configure the underlying `ServiceBusProcessorClient` used by the inbound channel adapter, users can use `ServiceBusContainerProperties` instead.\n* Drop `CompletableFuture` support in `ServiceBusTemplate` and `DefaultMessageHandler`, support `Reactor` instead.\n* Add new API of `ServiceBusTemplate#setDefaultEntityType` to specify the entity type, which is required when no bean of `PropertiesSupplier&lt;String, ProducerProperties&gt;` is provided for the `ProducerProperties#entityType`.\n* Drop message header `AzureHeaders.RAW_ID`. Please use `ServiceBusMessageHeaders.MESSAGE_ID` instead.\n\n.Class mapping from azure-spring-integration-servicebus to spring-integration-azure-servicebus\n[cols=\"<,<\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders\n|com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter\n|com.azure.spring.integration.core.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter\n|com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter\n|===\n\n==== From azure-spring-cloud-starter-storage-queue to spring-cloud-azure-starter-integration-storage-queue\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-storage-queue[spring-cloud-azure-starter-integration-storage-queue] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-starter-storage-queue[azure-spring-cloud-starter-storage-queue].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-starter-integration-storage-queue]\n===== SDK Configuration Changes\n\nAll configuration property names changed the prefix from `spring.cloud.azure.storage` to `spring.cloud.azure.storage.queue`.\n\n.Property mapping from azure-spring-cloud-starter-storage-queue to spring-cloud-azure-starter-integration-storage-queue\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*spring.cloud.azure.storage*.account |*spring.cloud.azure.storage.queue*.account-name\n|*spring.cloud.azure.storage*.access-key |*spring.cloud.azure.storage.queue*.account-key\n|*spring.cloud.azure.storage*.resource-group |*spring.cloud.azure.storage.queue*.resource.resource-group\n|===\n\n[#api-spring-cloud-azure-starter-integration-storage-queue]\n===== API Changes\n\n* Drop `StorageQueueOperation` and provide `StorageQueueTemplate` instead.\n* Drop `checkpoint-mode` configuration in `StorageQueueTemplate`, only support the `MANUAL` mode.\n\n.Class mapping from azure-spring-cloud-starter-storage-queue to spring-cloud-azure-starter-integration-storage-queue\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter\n|com.azure.spring.integration.core.api.reactor.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|com.azure.spring.integration.storage.queue.StorageQueueTemplate |com.azure.spring.messaging.storage.queue.core.StorageQueueTemplate\n|com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource\n|===\n\n==== From azure-spring-integration-storage-queue to spring-integration-azure-storage-queue\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-storage-queue[spring-integration-azure-storage-queue] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-integration-storage-queue[azure-spring-integration-storage-queue].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n\n[#api-spring-integration-azure-storage-queue]\n===== API Changes\n\n* Drop `StorageQueueOperation` and provide `StorageQueueTemplate` instead.\n* Drop `checkpoint-mode` configuration in `StorageQueueTemplate`, only support the `MANUAL` mode.\n\n.Class mapping from azure-spring-integration-storage-queue to spring-integration-azure-storage-queue\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter\n|com.azure.spring.integration.core.api.reactor.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|com.azure.spring.integration.storage.queue.StorageQueueTemplate |com.azure.spring.messaging.storage.queue.core.StorageQueueTemplate\n|com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |com.azure.spring.integration.core.handler.DefaultMessageHandler\n|com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource\n|===\n\n==== From azure-spring-cloud-stream-binder-eventhubs to spring-cloud-azure-stream-binder-eventhubs\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-eventhubs[spring-cloud-azure-stream-binder-eventhubs] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-stream-binder-eventhubs[azure-spring-cloud-stream-binder-eventhubs].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-stream-binder-eventhubs]\n===== SDK Configuration Changes\nIMPORTANT: Configuration prefix has been changed from `spring.cloud.azure.eventhub` to `spring.cloud.azure.eventhubs.`\n\nIMPORTANT: The binder type is renamed from: `eventhub` to `eventhubs`.\n\nChanges for the child entries for following prefix, please refer the following table:\n\n.Property mapping from azure-spring-cloud-stream-binder-eventhubs to spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*spring.cloud.azure*.resource-group|*spring.cloud.azure.eventhubs*.resource.resource-group\n|*spring.cloud.azure.eventhub*.namespace|*spring.cloud.azure.eventhubs*.namespace\n|*spring.cloud.azure.eventhub*.connection-string|*spring.cloud.azure.eventhubs*.connection-string\n|*spring.cloud.azure.eventhub*.checkpoint-storage-account|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.account-name\n|*spring.cloud.azure.eventhub*.checkpoint-access-key|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.account-key\n|*spring.cloud.azure.eventhub*.checkpoint-container|*spring.cloud.azure.eventhubs.processor*.checkpoint-store.container-name\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.max-batch-size |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.batch.max-size\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.max-wait-time |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.batch.max-wait-time\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.checkpoint-mode |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.mode\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.checkpoint-count |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.count\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.checkpoint-interval |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.interval\n|*spring.cloud.stream.eventhub.bindings.<binding-name>.consumer*.start-position |*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.initial-partition-event-position\n|===\n\nNOTE: The value type of the `start-position` configuration is also changed from an enum of `com.azure.spring.integration.core.api.StartPosition` to a `map` of `StartPositionProperties` for each partition. Thus, the key is the partition id, and the value is of `com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties` which includes properties of offset, sequence number, enqueued date time and whether inclusive.\n\n====== Configuration migration examples\nTo use the connection string for authentication and migrate the above mentioned properties, configuration changes are listed the follows:\n\nLegacy configuration:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhub:\n        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}\n        checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}\n        checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}\n        checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}\n    stream:\n      eventhub:\n        bindings:\n          <binding-name>:\n            consumer:\n              max-batch-size: ${AZURE_MAX_BATCH_SIZE}\n              max-wait-time: ${AZURE_MAX_WAIT_TIME}\n              checkpoint-mode: ${AZURE_CHECKPOINT_MODE}\n              checkpoint-count: ${AZURE_CHECKPOINT_COUNT}\n              checkpoint-interval: ${AZURE_CHECKPOINT_INTERVAL}\n              start-position: EARLIEST\n\n----\n\nModern configuration:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhubs:\n        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}\n        processor:\n          checkpoint-store:\n            container-name: ${AZURE_STORAGE_CONTAINER_NAME}\n            account-name:  ${AZURE_STORAGE_ACCOUNT_NAME}\n            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}\n    stream:\n      eventhubs:\n        bindings:\n          <binding-name>:\n            consumer:\n              batch:\n                max-size: ${AZURE_MAX_BATCH_SIZE}\n                max-wait-time: ${AZURE_MAX_WAIT_TIME}\n              checkpoint:\n                mode: ${AZURE_CHECKPOINT_MODE}\n                count: ${AZURE_CHECKPOINT_COUNT}\n                interval: ${AZURE_CHECKPOINT_INTERVAL}\n              initial-partition-event-position:\n                0:\n                  offset: earliest\n                1:\n                  sequence-number: 100\n                2:\n                  enqueued-date-time: 2022-01-12T13:32:47.650005Z\n                4:\n                  inclusive: false\n----\n\nIf you use security principals instead of connection strings, in versions before 4.0 the application will firstly connect to Azure Resource Manager (ARM) with the provided security principal, and then\nretrieve the connection string of the specified namespace with ARM. In the end the application uses the retrieved connection string to connect to Azure Event Hubs. In this way\nthe provided security principal should be granted with the link:https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#contributor[Contributor] role to retrieve of the associated Azure Event Hubs namespace.\n\nFor Azure Spring Cloud 4.0, we provide two ways of leveraging security principals for authentication. One is still using the principals to connect to ARM and retrieve the connection strings where the `Contributor` role is required for the principals.\nThe other leverages security principals to authenticate to Azure Active Directory (Azure AD) and then connect to Azure Event Hubs directly, in this case the `Contributor` role is not necessary anymore\nwhile other `Data` related roles are required for messaging operations, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nFor authentication based on ARM, taking service principal as example, configuration migration is listed the follows, where the assigned role should not change:\n\nLegacy configuration:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      client-id: ${AZURE_CLIENT_ID}\n      client-secret: ${AZURE_CLIENT_SECRET}\n      tenant-id: ${AZURE_TENANT_ID}\n      resource-group: ${EVENTHUB_RESOURCE_GROUP}\n      eventhub:\n        namespace: ${EVENTHUB_NAMESPACE}\n----\n\nModern configuration, properties for Azure subscription ID and resource group are required:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      eventhubs:\n        namespace: ${EVENTHUB_NAMESPACE}\n        resource:\n          resource-group: ${RESOURCE_GROUP}\n----\n\nYou can also migrate to authenticate and authorize with Azure AD directly without making a detour to ARM. Make sure to grant the security principal necessary `Data` roles for messaging operations. The configuration examples of the service principal and the managed identity are listed the follows:\n\n* With a service principal\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      eventhubs:\n        namespace: ${EVENTHUB_NAMESPACE}\n----\n\n* With a managed identity\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity\n      eventhubs:\n        namespace: ${EVENTHUB_NAMESPACE}\n----\n\n[#api-spring-cloud-azure-stream-binder-eventhubs]\n===== API Changes\n\n.Class mapping from azure-spring-cloud-stream-binder-eventhubs to spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.api.reactor.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.core.EventHubHeaders |com.azure.spring.messaging.eventhubs.support.EventHubsHeaders\n|===\n\n==== From azure-spring-cloud-stream-binder-servicebus-* to spring-cloud-azure-stream-binder-servicebus\nThis guide is intended to assist in the migration to\nlink:https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-servicebus[spring-cloud-azure-stream-binder-servicebus] from\nversion 2 of link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-stream-binder-servicebus-queue[azure-spring-cloud-stream-binder-servicebus-queue]\nor link:https://search.maven.org/artifact/com.azure.spring/azure-spring-cloud-stream-binder-servicebus-topic[azure-spring-cloud-stream-binder-servicebus-topic].\n\n* Please refer to <<migration-guide-introduction, introduction>> and <<migration-guide-benefits, migration benefits>> to get a whole picture of the changes in 4.0.\n* Please refer to <<migration-guide-naming, naming changes>> to learn more about the strategy changes in the project naming.\n* Please refer to <<migration-guide-bom, bom>> to learn how to using one BOM for all Spring Cloud Azure libraries.\n* Please refer to <<migration-guide-authentication, authentication>> to learn how to handle authentication in Spring Cloud Azure 4.0.\n* Please refer to <<migration-guide-properties-migration, properties migration>> to learn how to leverage `spring-boot-properties-migrator` during migration.\n* Please refer to <<migration-guide-global-configurations, global configurations>> to learn more about the global and common configuration changes.\n\n[#configuration-spring-cloud-azure-stream-binder-servicebus]\n===== SDK Configuration changes\nIMPORTANT: Legacy binder libraries are `azure-spring-cloud-stream-binder-servicebus-queue` and `azure-spring-cloud-stream-binder-servicebus-topic`, and now they're merged into one `spring-cloud-azure-stream-binder-servicebus`\nto support both Service Bus Queue and Topic.\n\nIMPORTANT: The binder type is combined from `servicebus-queue` and `servicebus-topic` as `servicebus`.\n\n.New configuration properties of spring-cloud-azure-stream-binder-servicebus\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Modern properties |description\n|*spring.cloud.stream.servicebus*.bindings.<binding-name>.producer.entity-type |If you use the sending function, the entity-type property is required, which can be set to topic or queue.\n|===\n\n.Property mapping from azure-spring-cloud-stream-binder-servicebus-* to spring-cloud-azure-stream-binder-servicebus\n[cols=\"<30,<~\", options=\"header\"]\n|===\n|Legacy properties |Modern properties\n|*spring.cloud.azure*.resource-group|*spring.cloud.azure.servicebus*.resource.resource-group\n|*spring.cloud.azure.servicebus*.transport-type |*spring.cloud.azure.servicebus*.client.transport-type\n|*spring.cloud.azure.servicebus*.retry-options.retry-mode |*spring.cloud.azure.servicebus*.retry.mode\n|*spring.cloud.azure.servicebus*.retry-options.max-retries |*spring.cloud.azure.servicebus*.retry.exponential.max-retries or *spring.cloud.azure.servicebus*.retry.fixed.max-retries, should be configured depending on *spring.cloud.azure.servicebus*.retry.mode=*fixed* or *exponential*\n|*spring.cloud.azure.servicebus*.retry-options.delay |*spring.cloud.azure.servicebus*.retry.exponential.base-delay or *spring.cloud.azure.servicebus*.retry.fixed.delay, should be configured depending on *spring.cloud.azure.servicebus*.retry.mode=*fixed* or *exponential*\n|*spring.cloud.azure.servicebus*.retry-options.max-delay |*spring.cloud.azure.servicebus*.retry.exponential.max-delay\n|*spring.cloud.azure.servicebus*.retry-options.try-timeout |*spring.cloud.azure.servicebus*.retry.try-timeout\n|*spring.cloud.stream.servicebus.queue*.bindings.* |*spring.cloud.stream.servicebus*.bindings.*\n|*spring.cloud.stream.servicebus.queue*.bindings.<binding-name>.consumer.*concurrency* |*spring.cloud.stream.servicebus*.bindings.<binding-name>.consumer.max-concurrent-sessions/max-concurrent-calls\n|*spring.cloud.stream.servicebus.queue*.bindings.<binding-name>.consumer.*checkpoint-mode* |*spring.cloud.stream.servicebus*.bindings.<binding-name>.consumer.*auto-complete*\n|*spring.cloud.stream.servicebus.topic*.bindings.* |*spring.cloud.stream.servicebus*.bindings.*\n|*spring.cloud.stream.servicebus.topic*.bindings.<binding-name>.consumer.*concurrency* |*spring.cloud.stream.servicebus*.bindings.<binding-name>.consumer.max-concurrent-sessions/max-concurrent-calls\n|*spring.cloud.stream.servicebus.topic*.bindings.<binding-name>.consumer.*checkpoint-mode* |*spring.cloud.stream.servicebus*.bindings.<binding-name>.consumer.*auto-complete*\n|===\n\nNOTE: The concurrency property will be replaced by the maxConcurrentSessions when sessionsEnabled is `true` and the maxConcurrentCalls when sessionsEnabled is `false`.\n\nNOTE: Enabling auto-complete is equal to `RECORD` checkpoint mode, and oppositely the `MANUAL` mode.\n\n====== Configuration migration examples\n\nLegacy configuration, taking queue as example:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      servicebus:\n        connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}\n        supply-out-0:\n          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}\n      servicebus:\n        queue:\n          bindings:\n            consume-in-0:\n              consumer:\n                checkpoint-mode: MANUAL\n----\n\nModern configuration:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      servicebus:\n        connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}\n        supply-out-0:\n          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}\n      servicebus:\n        bindings:\n          consume-in-0:\n            consumer:\n              auto-complete: false\n          supply-out-0:\n            producer:\n              entity-type: queue #set as topic if needed\n----\n\nIf you use security principals instead of connection strings, in versions before 4.0 the application will firstly connect to Azure Resource Manager (ARM) with the provided security principal, and then\nretrieve the connection string of the specified namespace with ARM. In the end the application uses the retrieved connection string to connect to Azure Service Bus. In this way\nthe provided security principal should be granted with the link:https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#contributor[Contributor] role to retrieve of the associated Azure Service Bus namespace.\n\nFor Azure Spring Cloud 4.0, we provide two ways of leveraging security principals for authentication. One is still using the principals to connect to ARM and retrieve the connection strings where the `Contributor` role is required for the principals.\nThe other leverages security principals to authenticate to Azure Active Directory (Azure AD) and then connect to the Azure Service Bus directly, in this case the `Contributor` role is not necessary anymore\nwhile other `Data` related roles are required for messaging operations, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nFor authentication based on ARM, taking service principal as example, configuration migration is listed the follows, where the assigned role should not change:\n\nLegacy configuration:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      client-id: ${AZURE_CLIENT_ID}\n      client-secret: ${AZURE_CLIENT_SECRET}\n      tenant-id: ${AZURE_TENANT_ID}\n      resource-group: ${SERVICEBUS_RESOURCE_GROUP}\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n----\n\nModern configuration, properties for Azure subscription ID and resource group are required:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n        resource:\n          resource-group: ${SERVICEBUS_RESOURCE_GROUP}\n----\n\nYou can also migrate to authenticate and authorize with Azure AD directly without making a detour to ARM. Make sure to grant the security principal necessary `Data` roles for messaging operations. The configuration examples of the service principal and the managed identity are listed the follows:\n\n* With a service principal\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n----\n\n* With a managed identity\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n----\n\n[#api-spring-cloud-azure-stream-binder-servicebus]\n===== API Changes\n\n* Drop message header `AzureHeaders.RAW_ID`. Please use `ServiceBusMessageHeaders.MESSAGE_ID` instead.\n\n.Class mapping from azure-spring-cloud-stream-binder-servicebus to spring-cloud-azure-stream-binder-servicebus\n[cols=\"<~,<~\", options=\"header\"]\n|===\n|Legacy class |Modern class\n|com.azure.spring.integration.core.AzureHeaders |com.azure.spring.messaging.AzureHeaders\n|com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders\n|com.azure.spring.integration.core.api.Checkpointer |com.azure.spring.messaging.checkpoint.Checkpointer\n|===\n\n[#migration-azure-spring-cloud-messaging]\n==== azure-spring-cloud-messaging\n\nLibrary of `com.azure.spring:azure-spring-cloud-messaging` is not ready for 4.0. The function of listener annotations is under redesign,\nso annotations of `@AzureMessageListener`, `@AzureMessageListeners` and `@EnableAzureMessaging` are not supported now.\n"
  },
  {
    "path": "docs/src/main/asciidoc/appendix.adoc",
    "content": "\n[appendix]\n== Configuration Properties\n[#global_proeprties]\n=== Global Properties\ninclude::_configuration-properties-global.adoc[]\n=== Azure Active Directory Properties\ninclude::_configuration-properties-azure-active-directory.adoc[]\n=== Azure Active Directory B2C Properties\ninclude::_configuration-properties-azure-active-directory-b2c.adoc[]\n[#azure_app_configuration_proeprties]\n=== Azure App Configuration Properties\ninclude::_configuration-properties-azure-app-configuration.adoc[]\n[#azure_cosmos_proeprties]\n=== Azure Cosmos Properties\ninclude::_configuration-properties-azure-cosmos-db.adoc[]\n[#azure_event_hubs_proeprties]\n=== Azure Event Hubs Properties\ninclude::_configuration-properties-azure-event-hubs.adoc[]\n=== Azure Key Vault Properties\ninclude::_configuration-properties-azure-key-vault.adoc[]\n[#azure_key_vault_secrets_proeprties]\n=== Azure Key Vault Secrets Properties\ninclude::_configuration-properties-azure-key-vault-secrets.adoc[]\n[#azure_key_vault_certificates_proeprties]\n=== Azure Key Vault Certificates Properties\ninclude::_configuration-properties-azure-key-vault-certificates.adoc[]\n[#azure_service_bus_proeprties]\n=== Azure Service Bus Properties\ninclude::_configuration-properties-azure-service-bus.adoc[]\n=== Azure Service Bus JMS Properties\ninclude::_configuration-properties-azure-service-bus-jms.adoc[]\n=== Azure Storage Properties\ninclude::_configuration-properties-azure-storage.adoc[]\n[#azure_storage_blob_proeprties]\n=== Azure Storage Blob Properties\ninclude::_configuration-properties-azure-storage-blob.adoc[]\n[#azure_storage_file_share_proeprties]\n=== Azure Storage File Share Properties\ninclude::_configuration-properties-azure-storage-file-share.adoc[]\n[#azure_storage_queue_proeprties]\n=== Azure Storage Queue Properties\ninclude::_configuration-properties-azure-storage-queue.adoc[]\n=== All Configuration Properties\ninclude::_configuration-properties-all.adoc[]\n\n[appendix]\ninclude::_migration-guide-for-4.0.adoc[]\n\n[appendix]\ninclude::create-and-configure-managed-identity.adoc[]\n\n[appendix]\ninclude::deploy-applications-to-azure-hosting-environments.adoc[]\n\n[appendix]\ninclude::_known-issues.adoc[]\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/authentication.adoc",
    "content": ":azure-built-in-roles: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles\n:app-configuration-data-owner: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#app-configuration-data-owner\n:app-configuration-data-reader: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#app-configuration-data-reader\n:azure-event-hubs-data-owner: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-event-hubs-data-owner\n:azure-event-hubs-data-receiver: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-event-hubs-data-receiver\n:azure-event-hubs-data-sender: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-event-hubs-data-send\n:azure-service-bus-data-owner: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-service-bus-data-owner\n:azure-service-bus-data-receiver: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-service-bus-data-receiver\n:azure-service-bus-data-sender: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#azure-service-bus-data-sender\n:azure-storage-blob-data-owner: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#storage-blob-data-owner\n:azure-storage-blob-data-reader: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#storage-blob-data-reader\n:azure-storage-queue-data-reader: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#storage-queue-data-reader\n:azure-redis-cache-contributor: https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#redis-cache-contributor\n:key-vault-access-policy: https://docs.microsoft.com/azure/key-vault/general/assign-access-policy\n:cosmos-db-rbac: https://docs.microsoft.com/azure/cosmos-db/how-to-setup-rbac\n:managed-identity: https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview\n[#authentication]\n== Authentication\n\n=== DefaultAzureCredential\n\nThe `DefaultAzureCredential` is appropriate for most scenarios where the application is intended to be run in the Azure Cloud. This is because the DefaultAzureCredential combines credentials commonly used to authenticate when deployed, with credentials used to authenticate in a development environment.\n\nNOTE: DefaultAzureCredential is intended to simplify getting started with the SDK by handling common scenarios with reasonable default behaviors. Developers who want more control or whose scenario isn't served by the default settings should use other credential types.\n\nThe `DefaultAzureCredential` will attempt to authenticate via the following mechanisms in order.\n\nimage::https://user-images.githubusercontent.com/13167207/143148654-f3a37180-85e2-4360-a47d-c1af2da8fada.png[DefaultAzureCredential]\n\n- Environment - The `DefaultAzureCredential` will read account information specified via environment variables and use it to authenticate.\n- Managed Identity - If the application is deployed to an Azure host with Managed Identity enabled, the `DefaultAzureCredential` will authenticate with that account.\n- IntelliJ - If the developer has authenticated via Azure Toolkit for IntelliJ, the `DefaultAzureCredential` will authenticate with that account.\n- Visual Studio Code - If the developer has authenticated via the Visual Studio Code Azure Account plugin, the `DefaultAzureCredential` will authenticate with that account.\n- Azure CLI - If the developer has authenticated an account via the Azure CLI az login command, the `DefaultAzureCredential` will authenticate with that account.\n\n\nTIP: Please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nNOTE: Since Spring Cloud Azure AutoConfigure 4.1.0, a `ThreadPoolTaskExecutor` bean named `springCloudAzureCredentialTaskExecutor` will be automatically registered by default and will manage all threads created by Azure Identity. The name of each thread managed by this thread pool is prefixed with `az-identity-`. This `ThreadPoolTaskExecutor` bean is independent of the `Executor` bean provided by Spring Boot.\n\n=== Managed Identities\n\nA common challenge for developers is the management of secrets and credentials used to secure communication between different components making up a solution. Managed identities eliminate the need for developers to manage credentials. Managed identities provide an identity for applications to use when connecting to resources that support Azure Active Directory (Azure AD) authentication. Applications may use the managed identity to obtain Azure AD tokens. For example, an application may use a managed identity to access resources like Azure Key Vault where developers can store credentials in a secure manner or to access storage accounts.\n\nWe encourage using managed identity instead of using connection string or key in your application for it's more secure and will save the trouble of managing secrets and credentials. In this case, `DefaultAzureCredential` could better serve the scenario of developing locally using account information stored locally and deploying the application to Azure Cloud and using Managed Identity.\n\n==== Managed Identity Types\nThere are two types of managed identities:\n\n- *System-assigned* Some Azure services allow you to enable a managed identity directly on a service instance. When you enable a system-assigned managed identity an identity is created in Azure AD that's tied to the lifecycle of that service instance. So when the resource is deleted, Azure automatically deletes the identity for you. By design, only that Azure resource can use this identity to request tokens from Azure AD.\n- *User-assigned* You may also create a managed identity as a standalone Azure resource. You can create a user-assigned managed identity and assign it to one or more instances of an Azure service. In the case of user-assigned managed identities, the identity is managed separately from the resources that use it.\n\nNOTE: When using a user-assigned managed identity, you can specify the client ID by `spring.cloud.azure.credential.client-id` or `spring.cloud.azure.<azure-service>.credential.client-id`.\n\nTIP: Please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nTIP: Please refer to link:{managed-identity}[What are managed identities for Azure resources?] for more details about managed identity.\n\n=== Other Credential Types\n\nDevelopers who want more control or whose scenario isn't served by the `DefaultAzureCredential` or whose scenario isn't served by the default settings should use other credential types.\n\n==== Authentication and Authorization with Azure Active Directory\nWith Azure AD, you can use Azure role-based access control (Azure RBAC) to grant permissions to a security principal, which may be a user or an application service principal. When a security principal (a user, or an application) attempts to access an Azure resource, for example, an Event Hubs resource, the request must be authorized. With Azure AD, access to a resource is a two-step process.\n\n1. First, the security principal's identity is authenticated, and an OAuth 2.0 token is returned.\n2. Next, the token is passed as part of a request to the Azure service to authorize access to the specified resource.\n\n===== Authenticate with Azure Active Directory\nFor applications want to connect to resources that support Azure AD authentication, below configurations could be set with prefix `spring.cloud.azure.credential` or `spring.cloud.azure.<azure-service>.credential`.\n\n.Authentication properties\n[cols=\"1,3\", options=\"header\"]\n|===\n|Property |Description\n\n|client-id\n|Client id to use when performing service principal authentication with Azure.\n\n|client-secret\n|Client secret to use when performing service principal authentication with Azure.\n\n|client-certificate-path\n|Path of a PEM certificate file to use when performing service principal authentication with Azure.\n\n|client-certificate-password\n|Password of the certificate file.\n\n|username\n|Username to use when performing username/password authentication with Azure.\n\n|password\n|Password to use when performing username/password authentication with Azure.\n\n|managed-identity-enabled\n|Whether to enable managed identity.\n|===\n\nTIP: To see the list of all Spring Cloud Azure related configuration properties please check link:appendix.html[the Appendix page].\n\nThe application will look in several places to find an available credential, and will use `DefaultAzureCredential` if no credential properties are configured. If you want to use specific credential, see the following examples for guidance.\n\nThe following example shows you how to authenticate using a system-assigned managed identity:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    managed-identity-enabled: true\n----\n\nThe following example shows you how to authenticate using a user-assigned managed identity:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    managed-identity-enabled: true\n    client-id: ${AZURE_CLIENT_ID}\n----\n\nThe following example shows you how to authenticate using a service principal with a client secret:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    client-id: ${AZURE_CLIENT_ID}\n    client-secret: ${AZURE_CLIENT_SECRET}\n  profile:\n    tenant-id: ${AZURE_TENANT_ID}\n----\n\nThe following example shows you how to authenticate using a service principal with a client PFX certificate:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    client-id: ${AZURE_CLIENT_ID}\n    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}\n    client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}\n  profile:\n    tenant-id: ${AZURE_TENANT_ID}\n----\n\nThe following example shows you how to authenticate using a service principal with client PEM certificate:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    client-id: ${AZURE_CLIENT_ID}\n    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}\n  profile:\n    tenant-id: ${AZURE_TENANT_ID}\n----\n\nThe following example shows you how to authenticate using a user credential:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    client-id: ${AZURE_CLIENT_ID}\n    username: ${AZURE_USER_USERNAME}\n    password: ${AZURE_USER_PASSWORD}\n----\n\nThe following example shows you how to authenticate with Key Vault using a different service principal. This example configures the application with two credentials: one system-assigned managed identity and one service principal. The Key Vault Secret client will use the service principal, but any other components will use managed identity instead.\n\n[source,yaml]\n----\nspring.cloud.azure:\n  credential:\n    managed-identity-enabled: true\n  keyvault.secret:\n    credential:\n      client-id: ${AZURE_CLIENT_ID}\n      client-secret: ${AZURE_CLIENT_SECRET}\n    profile:\n      tenant-id: ${AZURE_TENANT_ID}\n----\n\n[#authorize-access-with-azure-active-directory]\n===== Authorize Access with Azure Active Directory\n\nThe authorization step requires that one or more Azure roles be assigned to the security principal. The roles that are assigned to a security principal decide the permissions that the principal will have.\n\nTIP: To see the list of all Azure built-in roles please check {azure-built-in-roles}[Azure built-in roles].\n\nFollowing are the Azure built-in roles for authorizing access to Azure services supported in Spring Cloud Azure:\n\n.Azure built-in roles\n[cols=\"<50,<50\",options=\"header\"]\n|===\n|Role |Description\n\n|link:{app-configuration-data-owner}[App Configuration Data Owner]\n|Allows full access to App Configuration data.\n\n|link:{app-configuration-data-reader}[App Configuration Data Reader]\n|Allows read access to App Configuration data.\n\n|link:{azure-event-hubs-data-owner}[Azure Event Hubs Data Owner]\n|Allows for full access to Azure Event Hubs resources.\n\n|link:{azure-event-hubs-data-receiver}[Azure Event Hubs Data Receiver]\n|Allows receive access to Azure Event Hubs resources.\n\n|link:{azure-event-hubs-data-sender}[Azure Event Hubs Data Sender]\n|Allows send access to Azure Event Hubs resources.\n\n|link:{azure-service-bus-data-owner}[Azure Service Bus Data Owner]\n|Allows for full access to Azure Service Bus resources.\n\n|link:{azure-service-bus-data-receiver}[Azure Service Bus Data Receiver]\n|Allows for receive access to Azure Service Bus resources.\n\n|link:{azure-service-bus-data-sender}[Azure Service Bus Data Sender]\n|Allows for send access to Azure Service Bus resources.\n\n|link:{azure-storage-blob-data-owner}[Storage Blob Data Owner]\n|Provides full access to Azure Storage blob containers and data, including assigning POSIX access control.\n\n|link:{azure-storage-blob-data-reader}[Storage Blob Data Reader]\n|Read and list Azure Storage containers and blobs.\n\n|link:{azure-storage-queue-data-reader}[Storage Queue Data Reader]\n|Read and list Azure Storage queues and queue messages.\n\n|link:{azure-redis-cache-contributor}[Redis Cache Contributor]\n|Manage Redis caches.\n\n|===\n\nNOTE: When using Spring Cloud Azure Resource Manager to get the connection strings of Event Hubs, Service Bus, and Storage Queue, or properties of Cache for Redis, assign the Azure built-in role `Contributor`. Azure Cache for Redis is special, and you can also assign the `Redis Cache Contributor` role to get the Redis properties.\n\nNOTE: A Key Vault access policy determines whether a given security principal, namely a user, application or user group, can perform different operations on Key Vault secrets, keys, and certificates. You can assign access policies using the Azure portal, the Azure CLI, or Azure PowerShell. Check {key-vault-access-policy}[here] for more details.\n\nIMPORTANT: Azure Cosmos DB exposes 2 built-in role definitions: `Cosmos DB Built-in Data Reader` and `Cosmos DB Built-in Data Contributor`. However, Azure portal support for role management isn't available yet. Check {cosmos-db-rbac}[here] for more details about the permission model, role definitions, and role assignment.\n\n==== SAS tokens\nIt's also configurable for services support authenticating with Shared Access Signature (SAS). `spring.cloud.azure.<azure-service>.sas-token` is the property to configure. For example, using `spring.cloud.azure.storage.blob.sas-token` to authenticate to Storage Blob service.\n\n\n==== Connection Strings\n\nConnection strings are supported by some Azure services to provide connection information as well as credentials. To connect to those Azure services using a connection string, just configure `spring.cloud.azure.<azure-service>.connection-string` will do. For example, `spring.cloud.azure.eventhubs.connection-string` to connect to Event Hubs service.\n\n\n\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/auto-configure-azure-sdk-clients.adoc",
    "content": "== Autoconfigure Azure SDK Clients\n\nSpring Boot simplifies the Spring Cloud Azure development experience. Spring Cloud Azure starters are a set of convenient dependency descriptors to include in your application. They handle the object instantiation and configuration logic, so you don’t have to. Every starter depends on the `spring-cloud-azure-starter` to provide critical bits of configuration, like the Azure cloud environment and authentication information. You can configure these as properties in, for example, a yaml file:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n        cloud-type: Azure # <1>\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n----\n<1> `cloud-type` is optional for it has default value set to `Azure`.\n\nThese properties are optional and, if not specified, Spring Boot will try to automatically find them for you. For details on how Spring Boot finds these properties, refer to the documentation.\n\n\n=== Dependency Setup\nThere are two ways to use Spring Cloud Azure starters. One is using Azure SDKs with this `spring-cloud-azure-starter` dependency. For example with Cosmos DB:\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure</groupId>\n\t<artifactId>azure-cosmos</artifactId>\n</dependency>\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter</artifactId>\n</dependency>\n----\n\nOr including the Spring Cloud Azure starter directly without adding Azure SDK dependencies. For example with Cosmos DB:\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-cosmos</artifactId>\n</dependency>\n----\n\nTIP: Please refer to link:index.html#starter-dependencies[Starter Dependencies] for the list of starters Spring Cloud Azure supports.\n\n=== Configuration\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nConfiguration properties for each Azure service are under prefix `spring.cloud.azure.<azure-service>`.\n\nTIP: To see the list of all Spring Cloud Azure related configuration properties please check link:appendix.html[the Appendix page].\n\n=== Basic Usage\n\nAdding below properties to your `application.yaml` will autoconfigure the Cosmos clients for you, both `CosmosClient` and `CosmosAsyncClient` are available in the context and could be autowired.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      cosmos:\n        database: ${AZURE_COSMOS_DATABASE_NAME}\n        endpoint: ${AZURE_COSMOS_ENDPOINT}\n        consistency-level: eventual\n        connection-mode: direct\n----\n\n[source,java]\n----\nclass Demo {\n    @Autowired\n    private CosmosClient cosmosClient;\n\n    @Override\n    public void run() {\n        User item = User.randomUser();\n        CosmosContainer container = cosmosClient.getDatabase(databaseName).getContainer(containerName);\n        container.createItem(item);\n    }\n}\n----\n\n=== Samples\n\nPlease refer to link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] for more details.\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/configuration-properties.adoc",
    "content": "== Configuration Properties\nTo see the list of all Spring Cloud Azure related configuration properties please check link:appendix.html[the Appendix page].\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/configuration.adoc",
    "content": "[#configuration]\n== Configuration\n\n=== Configuration for each Azure Service SDK\n\nMost of Azure SDKs could be divided into two categories by transport type, HTTP-based and AMQP-based. There are properties that are common to all SDKs such as authentication principals and Azure environment settings. Or common to HTTP-based clients, such as logging level to log HTTP requests and responses. Spring Cloud Azure 4.0 provides five common categories of configuration properties, which could be specified to each Azure service.\n\n.Service common properties\n[cols=\"2,3\", options=\"header\"]\n|===\n|Property |Description\n\n|spring.cloud.azure.*_<azure-service>_.client*\n|To configure the transport clients underneath one Azure service SDK. \n\n|spring.cloud.azure.*_<azure-service>_.credential*\n|To configure how to authenticate with Azure Active Directory for one Azure service SDK.\n\n|spring.cloud.azure.*_<azure-service>_.profile*\n|To configure the Azure cloud environment for one Azure service SDK. \n\n|spring.cloud.azure.*_<azure-service>_.proxy*\n|To configure the proxy options for one Azure service SDK. \n\n|spring.cloud.azure.*_<azure-service>_.retry*\n|To configure the retry options apply to one Azure service SDK. The retry options has supported part of the SDKs, there's no `spring.cloud.azure.cosmos.retry`.\n|=== \n\n\nThere are some properties that could be shared among different Azure services, for example using the same service principal to access Azure Cosmos DB and Azure Event Hubs. Spring Cloud Azure 4.0 allows application developers to specify properties that apply to all Azure SDKs with the prefix `spring.cloud.azure`.\n\n.Global properties\n[cols=\"1,3\", options=\"header\"]\n|===\n|Property  |Description\n\n|spring.cloud.azure.*client*\n|To configure the transport clients apply to all Azure SDKs by default. \n\n|spring.cloud.azure.*credential*\n|To configure how to authenticate with Azure Active Directory for all Azure SDKs by default. \n\n|spring.cloud.azure.*profile*\n|To configure the Azure cloud environment for all Azure SDKs by default. \n\n|spring.cloud.azure.*proxy*\n|To configure the proxy options apply to all Azure SDK clients by default. \n\n|spring.cloud.azure.*retry*\n|To configure the retry options apply to all Azure SDK clients by default. \n|===\n\n\nNOTE: Properties configured under each Azure service will override the global configurations.\n\n=== Global configuration for Azure Service SDKs\n\nSpring Cloud Azure unifies configuration properties' prefixes to `spring.cloud.azure` since 4.0, which will make configuration properties more consistent and more intuitive. Here's a quick review of the serivce specific properties.\n\n.Service specific properties\n[cols=\"<3,<3,<3\", options=\"header\"]\n|===\n|Azure Service |Configuration Property Prefix | Configuration Properties Link\n\n|Azure App Configuration \n|spring.cloud.azure.*appconfiguration*\n|link:appendix.html#azure_app_configuration_proeprties[App Configuration Properties]\n\n|Azure Cosmos DB \n|spring.cloud.azure.*cosmos*\n|link:appendix.html#azure_cosmos_proeprties[Cosmos Properties]\n\n|Azure Event Hubs \n|spring.cloud.azure.*eventhubs*\n|link:appendix.html#azure_event_hubs_proeprties[Event Hubs Properties]\n\n|Azure Key Vault Certificates\n|spring.cloud.azure.*keyvault.certificate*\n|link:appendix.html#azure_key_vault_certificates_proeprties[Key Vault Certificates Properties]\n\n|Azure Key Vault Secrets \n|spring.cloud.azure.*keyvault.secret*\n|link:appendix.html#azure_key_vault_secrets_proeprties[Key Vault Secrets Properties]\n\n|Azure Service Bus \n|spring.cloud.azure.*servicebus*\n|link:appendix.html#azure_service_bus_proeprties[Service Bus Properties]\n\n|Azure Storage Blob\n|spring.cloud.azure.*storage.blob*\n|link:appendix.html#azure_storage_blob_proeprties[Storage Blob Properties]\n\n|Azure Storage File Share \n|spring.cloud.azure.*storage.fileshare*\n|link:appendix.html#azure_storage_file_share_proeprties[Storage File Share Properties]\n\n|Azure Storage Queue\n|spring.cloud.azure.*storage.queue*\n|link:appendix.html#azure_storage_queue_proeprties[Storage Queue Properties]\n|===\n\n=== Configuration examples\n\n==== Global retry configuration for Azure Service SDKs\n\n[source,yaml]\n----\nspring.cloud.azure:\n  retry:\n    mode: exponential\n    exponential:\n      max-retries: 4\n      base-delay: PT0.0801S\n      max-delay: PT9S\n----\n\n==== Retry configuration for Key Vault property source\n\nThe following configuration example shows you how to configure the retry behavior for the Azure Key Vault Secret client:\n\n[source,yaml]\n----\nspring.cloud.azure:\n  keyvault:\n    secret:\n      credential:\n        client-id: <your-client-ID>\n        client-secret: <your client key>\n      profile:\n        tenant-id: <your-tenant-ID>\n      property-source-enabled: true\n      property-sources:\n        - endpoint: <your-Azure-Key-Vault-endpoint>\n          retry:\n            mode: exponential\n            exponential:\n              max-retries: 4\n              base-delay: PT0.0801S\n              max-delay: PT9S\n----\n"
  },
  {
    "path": "docs/src/main/asciidoc/create-and-configure-managed-identity.adoc",
    "content": "[#create-and-configure-a-managed-identity-on-azure-hosting-services]\n== Create and configure a managed identity on Azure hosting services\n\nThere are two types of managed identities: **system-assigned** and **user-assigned**.\n\nFor more information about Azure managed identities, see link:https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/[Azure AD-managed identities for Azure resources].\n\nFor more information about Azure Active Directory, see link:https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-whatis[What is Azure Active Directory].\n\n=== Create and configure a system-assigned managed identity\n\nThe following list provides references on how to create and configure system-assigned managed identity on various Azure hosting services.\n\n- Azure VM. For more information, see link:https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vm[Configure managed identities for Azure resources on a VM using the Azure portal].\n- Azure App Service and Azure Functions. For more information, see link:https://docs.microsoft.com/azure/app-service/overview-managed-identity[How to use managed identities for App Service and Azure Functions].\n- Azure Containers Instances. For more information, see link:https://docs.microsoft.com/azure/container-instances/container-instances-managed-identity[How to use managed identities with Azure Container Instances].\n- Azure Kubernetes Service(AKS). For more information, see link:https://docs.microsoft.com/azure/aks/use-managed-identity[Use a managed identity in Azure Kubernetes Service].\n- Azure Spring Apps. For more information, see link:https://docs.microsoft.com/azure/spring-cloud/how-to-enable-system-assigned-managed-identity?tabs=azure-portal&pivots=sc-standard-tier[Enable system-assigned managed identity for an application in Azure Spring Apps].\n\n=== Create and configure a user-assigned managed identity\n\nFor instructions on how to create a user-assigned managed identity, see link:https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-manage-user-assigned-managed-identities?pivots=identity-mi-methods-azp[Manage user-assigned managed identities].\n\nThe following list provides references on how to configure a user-assigned managed identity on various Azure hosting services.\n\n- Azure VM. For more information, see link:https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vm[Configure managed identities for Azure resources on a VM using the Azure portal].\n- Azure App Service and Azure Functions. For more information, see link:https://docs.microsoft.com/azure/app-service/overview-managed-identity[How to use managed identities for App Service and Azure Functions].\n- Azure Containers instances. For more information, see link:https://docs.microsoft.com/azure/container-instances/container-instances-managed-identity[How to use managed identities with Azure Container Instances].\n- Azure Kubernetes Service(AKS). For more information, see link:https://docs.microsoft.com/azure/aks/use-managed-identity#bring-your-own-control-plane-mi[Use a managed identity in Azure Kubernetes Service].\n- Azure Spring Apps. For more information, see link:https://docs.microsoft.com/azure/spring-cloud/how-to-manage-user-assigned-managed-identities?tabs=azure-portal&pivots=sc-standard-tier[Manage user-assigned managed identities for an application in Azure Spring Apps].\n"
  },
  {
    "path": "docs/src/main/asciidoc/deploy-applications-to-azure-hosting-environments.adoc",
    "content": "[#deploy-application-to-azure-hosting-services]\n== Deploy application to Azure hosting services\n\nThe following list provides references on how to deploy applications to various Azure hosting services.\n\n- Azure Virtual Machines (VMs). For more information, see the link:https://docs.microsoft.com/azure/virtual-machines/linux/tutorial-manage-vm#connect-to-vm[Connect to VM] section of link:https://docs.microsoft.com/azure/virtual-machines/linux/tutorial-manage-vm[Tutorial: Create and Manage Linux VMs with the Azure CLI]. After you connect to the VM, you have to install and configure your applications yourself.\n\n- Azure App Service. For more information, see link:https://docs.microsoft.com/azure/app-service/deploy-best-practices[Azure App Service deployment].\n\n- Azure Functions. For more information, see link:https://docs.microsoft.com/azure/azure-functions/functions-deployment-technologies[Deployment technologies in Azure Functions].\n\n- Azure Containers Instances. For more information, see link:https://docs.microsoft.com/azure/container-instances/container-instances-quickstart[Quickstart: Deploy a container instance in Azure using the Azure CLI].\n\n- Azure Kubernetes Service (AKS). For more information, see link:https://docs.microsoft.com/azure/developer/java/spring-framework/deploy-spring-boot-java-app-on-kubernetes[Deploy Spring Boot Application to the Azure Kubernetes Service].\n\n- Azure Spring Apps. For more information, see link:https://docs.microsoft.com/azure/spring-cloud/quickstart-deploy-apps?tabs=Azure-CLI&pivots=programming-language-java[Quickstart: Build and deploy apps to Azure Spring Apps].\n"
  },
  {
    "path": "docs/src/main/asciidoc/docinfo.html",
    "content": "<script type=\"text/javascript\"> (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, \"clarity\", \"script\", \"b9g1q6wz23\"); </script>\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/getting-help.adoc",
    "content": "\n== Getting Help\n\nIf you have any questions about this document, please ask by creating GitHub issues. And Pull Request is welcome.\n\n.GitHub repositories\n[%autowidth.stretch]\n[cols=\"<30,<70\", options=\"header\"]\n|===\n|GitHub repositories | Description\n\n|https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure-dependencies_{project-version}/sdk/spring[Azure/azure-sdk-for-java]\n|This repository used to hold the source code.\n\n|https://github.com/microsoft/spring-cloud-azure[microsoft/spring-cloud-azure]\n|This repository used to hold the document which is displaying in current page.\n\n|===\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/getting-started.adoc",
    "content": "== Getting Started\n\n=== Setting up Dependencies\n\n==== Bill of Material (BOM)\n\n[source,xml,indent=0,subs=\"attributes,verbatim\"]\n----\n<dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-dependencies</artifactId>\n      <version>{project-version}</version>\n      <type>pom</type>\n      <scope>import</scope>\n    </dependency>\n  </dependencies>\n</dependencyManagement>\n----\n\n[#starter-dependencies]\n==== Starter Dependencies\n\nSpring Cloud Azure Starters are a set of convenient dependency descriptors to include in your application. Each starter includes all the dependencies and transitive dependencies needed to begin using its corresponding Spring Cloud Azure module. They boost your Spring Boot application development with Azure services.\n\nFor example, if you want to get started using Azure Cosmos DB for data persistence, include the `spring-cloud-azure-starter-cosmos` dependency in your project.\n\nSpring Cloud Azure provides the following starters under the `com.azure.spring` group:\n\n.Spring Cloud Azure starters\n[cols=\"<50,<50\",options=\"header\"]\n|===\n|Name |Description\n|spring-cloud-azure-starter\n|Core starter, including autoconfiguration support\n\n|spring-cloud-azure-starter-active-directory\n|Starter for using Azure Active Directory with Spring Security\n\n|spring-cloud-azure-starter-active-directory-b2c\n|Starter for using Azure Active Directory B2C with Spring Security\n\n|spring-cloud-azure-starter-appconfiguration\n|Starter for using Azure App Configuration\n\n|spring-cloud-azure-starter-cosmos\n|Starter for using Azure Cosmos DB\n\n|spring-cloud-azure-starter-eventhubs\n|Starter for using Azure Event Hubs\n\n|spring-cloud-azure-starter-keyvault\n|Starter for using Azure Key Vault\n\n|spring-cloud-azure-starter-keyvault-certificates\n|Starter for using Azure Key Vault Certificates\n\n|spring-cloud-azure-starter-keyvault-secrets\n|Starter for using Azure Key Vault Secrets\n\n|spring-cloud-azure-starter-servicebus\n|Starter for using Azure Service Bus\n\n|spring-cloud-azure-starter-servicebus-jms\n|Starter for using Azure Service Bus and JMS\n\n|spring-cloud-azure-starter-storage\n|Starter for using Azure Storage\n\n|spring-cloud-azure-starter-storage-blob\n|Starter for using Azure Storage Blob\n\n|spring-cloud-azure-starter-storage-file-share\n|Starter for using Azure Storage File Share\n\n|spring-cloud-azure-starter-storage-queue\n|Starter for using Azure Storage Queue\n\n|spring-cloud-azure-starter-actuator\n|Starter for using Spring Boot’s Actuator which provides production ready features\n|===\n\nBelow are starters for **Spring Data** support:\n\n.Spring Data related starters\n[cols=\"<50,<50\", options=\"header\"]\n|===\n|Name |Description\n|spring-cloud-azure-starter-data-cosmos\n|Starter for using Azure Cosmos DB and Spring Data Cosmos DB\n|===\n\nBelow are starters for **Spring Integration** support:\n\n.Spring Integration related starters\n[cols=\"<50,<50\", options=\"header\"]\n|===\n|Name |Description \n|spring-cloud-azure-starter-integration-eventhubs\n|Starter for using Azure Event Hubs and Spring Integration\n|spring-cloud-azure-starter-integration-servicebus\n|Starter for using Azure Service Bus and Spring Integration\n|spring-cloud-azure-starter-integration-storage-queue\n|Starter for using Azure Storage Queue and Spring Integration\n|===\n\nBelow are starters for **Spring Cloud Stream** support:\n\n.Spring Cloud Stream related starters\n[cols=\"<50,<50\", options=\"header\"]\n|===\n|Name |Description\n|spring-cloud-azure-starter-stream-eventhubs\n|Starters for using Azure Event Hubs and Spring Cloud Stream Binder\n|spring-cloud-azure-starter-stream-servicebus\n|Starter for using Azure Service Bus and Spring Cloud Stream Binder\n|===\n\n=== Learning Spring Cloud Azure\n\nWe prepared a full list of samples to show the usages, can be found at https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[Spring Cloud Azure Samples].\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/ghpages.sh",
    "content": "#!/bin/bash -x\n\nset -e\n\n# Set default props like MAVEN_PATH, ROOT_FOLDER etc.\nfunction set_default_props() {\n    # The script should be executed from the root folder\n    ROOT_FOLDER=`pwd`\n    echo \"Current folder is ${ROOT_FOLDER}\"\n\n    if [[ ! -e \"${ROOT_FOLDER}/.git\" ]]; then\n        echo \"You're not in the root folder of the project!\"\n        exit 1\n    fi\n\n    # Prop that will let commit the changes\n    COMMIT_CHANGES=\"no\"\n    MAVEN_PATH=${MAVEN_PATH:-}\n    echo \"Path to Maven is [${MAVEN_PATH}]\"\n    REPO_NAME=${PWD##*/}\n    echo \"Repo name is [${REPO_NAME}]\"\n    SPRING_CLOUD_STATIC_REPO=${SPRING_CLOUD_STATIC_REPO:-git@github.com:spring-cloud/spring-cloud-static.git}\n    echo \"Spring Cloud Static repo is [${SPRING_CLOUD_STATIC_REPO}\"\n}\n\n# Check if gh-pages exists and docs have been built\nfunction check_if_anything_to_sync() {\n    git remote set-url --push origin `git config remote.origin.url | sed -e 's/^git:/https:/'`\n\n    if ! (git remote set-branches --add origin gh-pages && git fetch -q); then\n        echo \"No gh-pages, so not syncing\"\n        exit 0\n    fi\n\n    if ! [ -d docs/target/generated-docs ] && ! [ \"${BUILD}\" == \"yes\" ]; then\n        echo \"No gh-pages sources in docs/target/generated-docs, so not syncing\"\n        exit 0\n    fi\n}\n\nfunction retrieve_current_branch() {\n    # Code getting the name of the current branch. For main we want to publish as we did until now\n    # https://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch\n    # If there is a branch already passed will reuse it - otherwise will try to find it\n    CURRENT_BRANCH=${BRANCH}\n    if [[ -z \"${CURRENT_BRANCH}\" ]] ; then\n      CURRENT_BRANCH=$(git symbolic-ref -q HEAD)\n      CURRENT_BRANCH=${CURRENT_BRANCH##refs/heads/}\n      CURRENT_BRANCH=${CURRENT_BRANCH:-HEAD}\n    fi\n    echo \"Current branch is [${CURRENT_BRANCH}]\"\n    git checkout ${CURRENT_BRANCH} || echo \"Failed to check the branch... continuing with the script\"\n}\n\n# Switches to the provided value of the release version. We always prefix it with `v`\nfunction switch_to_tag() {\n    git checkout v${VERSION}\n}\n\n# Build the docs if switch is on\nfunction build_docs_if_applicable() {\n    if [[ \"${BUILD}\" == \"yes\" ]] ; then\n        ./mvnw clean install -P docs -pl docs -DskipTests\n    fi\n}\n\n# Get the name of the `docs.main` property\n# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile\nfunction retrieve_doc_properties() {\n    RELEASE_TO_GH_PAGES_ENABLED_PROPERTY=${RELEASE_TO_GH_PAGES_ENABLED_PROPERTY:-\"release.to.gh.pages.enabled\"}\n    RELEASE_TO_GH_PAGES_ENABLED_VALUE=$(\"${MAVEN_PATH}\"mvn -q \\\n        -Dexec.executable=\"echo\" \\\n        -Dexec.args=\"\\${${RELEASE_TO_GH_PAGES_ENABLED_PROPERTY}}\" \\\n        org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \\\n        -P docs \\\n        -pl docs)\n    echo \"Extracted '${RELEASE_TO_GH_PAGES_ENABLED_PROPERTY}' from Maven build [${RELEASE_TO_GH_PAGES_ENABLED_VALUE}]\"\n\n    RELEASE_TO_GH_PAGES_TARGET_FLODER_PROPERTY=${RELEASE_TO_GH_PAGES_TARGET_FLODER_PROPERTY:-\"release.to.gh.pages.target.floder\"}\n    RELEASE_TO_GH_PAGES_TARGET_FLODER_VALUE=$(\"${MAVEN_PATH}\"mvn -q \\\n        -Dexec.executable=\"echo\" \\\n        -Dexec.args=\"\\${${RELEASE_TO_GH_PAGES_TARGET_FLODER_PROPERTY}}\" \\\n        org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \\\n        -P docs \\\n        -pl docs)\n    echo \"Extracted '${RELEASE_TO_GH_PAGES_TARGET_FLODER_PROPERTY}' from Maven build [${RELEASE_TO_GH_PAGES_TARGET_FLODER_VALUE}]\"\n}\n\n# Stash any outstanding changes\nfunction stash_changes() {\n    git diff-index --quiet HEAD && dirty=$? || (echo \"Failed to check if the current repo is dirty. Assuming that it is.\" && dirty=\"1\")\n    if [ \"$dirty\" != \"0\" ]; then git stash; fi\n}\n\n# Switch to gh-pages branch to sync it with current branch\nfunction add_docs_from_target() {\n    local DESTINATION_REPO_FOLDER\n    if [[ -z \"${DESTINATION}\" && -z \"${CLONE}\" ]] ; then\n        DESTINATION_REPO_FOLDER=${ROOT_FOLDER}\n    elif [[ \"${CLONE}\" == \"yes\" ]]; then\n        mkdir -p ${ROOT_FOLDER}/target\n        local clonedStatic=${ROOT_FOLDER}/target/spring-cloud-static\n        if [[ ! -e \"${clonedStatic}/.git\" ]]; then\n            echo \"Cloning Spring Cloud Static to target\"\n            git clone ${SPRING_CLOUD_STATIC_REPO} ${clonedStatic} && git checkout gh-pages\n        else\n            echo \"Spring Cloud Static already cloned - will pull changes\"\n            cd ${clonedStatic} && git checkout gh-pages && git pull origin gh-pages\n        fi\n        DESTINATION_REPO_FOLDER=${clonedStatic}/${REPO_NAME}\n        mkdir -p ${DESTINATION_REPO_FOLDER}\n    else\n        if [[ ! -e \"${DESTINATION}/.git\" ]]; then\n            echo \"[${DESTINATION}] is not a git repository\"\n            exit 1\n        fi\n        DESTINATION_REPO_FOLDER=${DESTINATION}/${REPO_NAME}\n        mkdir -p ${DESTINATION_REPO_FOLDER}\n        echo \"Destination was provided [${DESTINATION}]\"\n    fi\n    cd ${DESTINATION_REPO_FOLDER}\n    git checkout gh-pages\n    git pull origin gh-pages\n\n    # Add git branches\n    ###################################################################\n    if [[ -z \"${VERSION}\" ]] ; then\n        copy_docs_for_current_version\n    else\n        copy_docs_for_provided_version\n    fi\n    commit_changes_if_applicable\n}\n\n\n# Copies the docs by using the retrieved properties from Maven build\nfunction copy_docs_for_current_version() {\n    if [[ \"${RELEASE_TO_GH_PAGES_ENABLED_VALUE}\" == \"true\" ]] ; then\n        echo -e \"Need to release - Will copy the all files from docs/target/generated-docs/ to ${ROOT_FOLDER}${RELEASE_TO_GH_PAGES_TARGET_FLODER_VALUE}\"\n        for f in docs/target/generated-docs/*; do\n            file=${f#docs/target/generated-docs/*}\n            if ! git ls-files -i -o --exclude-standard --directory | grep -q ^$file$; then\n                # Not ignored...\n                cp -rf $f ${ROOT_FOLDER}${RELEASE_TO_GH_PAGES_TARGET_FLODER_VALUE}\n                git add -A ${ROOT_FOLDER}${RELEASE_TO_GH_PAGES_TARGET_FLODER_VALUE}$file\n            fi\n        done\n        COMMIT_CHANGES=\"yes\"\n    fi\n}\n\n# Copies the docs by using the explicitly provided version\nfunction copy_docs_for_provided_version() {\n    local FOLDER=${DESTINATION_REPO_FOLDER}/${VERSION}\n    mkdir -p ${FOLDER}\n    echo -e \"Current tag is [v${VERSION}] Will copy the current docs to the [${FOLDER}] folder\"\n    for f in ${ROOT_FOLDER}/docs/target/generated-docs/*; do\n        file=${f#${ROOT_FOLDER}/docs/target/generated-docs/*}\n        copy_docs_for_branch ${file} ${FOLDER}\n    done\n    COMMIT_CHANGES=\"yes\"\n    CURRENT_BRANCH=\"v${VERSION}\"\n}\n\n# Copies the docs from target to the provided destination\n# Params:\n# $1 - file from target\n# $2 - destination to which copy the files\nfunction copy_docs_for_branch() {\n    local file=$1\n    local destination=$2\n    if ! git ls-files -i -o --exclude-standard --directory | grep -q ^${file}$; then\n        # Not ignored...\n        # We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html\n        if [[ (\"${file}\" == \"${MAIN_ADOC_VALUE}.html\") || (\"${file}\" == \"${REPO_NAME}.html\") ]] ; then\n            # We don't want to copy the spring-cloud-sleuth.html\n            # we want it to be converted to index.html\n            cp -rf $f ${destination}/index.html\n            git add -A ${destination}/index.html\n        else\n            cp -rf $f ${destination}\n            git add -A ${destination}/$file\n        fi\n    fi\n}\n\nfunction commit_changes_if_applicable() {\n    if [[ \"${COMMIT_CHANGES}\" == \"yes\" ]] ; then\n        COMMIT_SUCCESSFUL=\"no\"\n        git commit -a -m \"Sync docs from ${CURRENT_BRANCH} to gh-pages\" && COMMIT_SUCCESSFUL=\"yes\" || echo \"Failed to commit changes\"\n\n        # Uncomment the following push if you want to auto push to\n        # the gh-pages branch whenever you commit to main locally.\n        # This is a little extreme. Use with care!\n        ###################################################################\n        if [[ \"${COMMIT_SUCCESSFUL}\" == \"yes\" ]] ; then\n            git push origin gh-pages\n        fi\n    fi\n}\n\n# Switch back to the previous branch and exit block\nfunction checkout_previous_branch() {\n    # If -version was provided we need to come back to root project\n    cd ${ROOT_FOLDER}\n    git checkout ${CURRENT_BRANCH} || echo \"Failed to check the branch... continuing with the script\"\n    if [ \"$dirty\" != \"0\" ]; then git stash pop; fi\n    exit 0\n}\n\n# Assert if properties have been properly passed\nfunction assert_properties() {\necho \"VERSION [${VERSION}], DESTINATION [${DESTINATION}], CLONE [${CLONE}]\"\nif [[ \"${VERSION}\" != \"\" && (-z \"${DESTINATION}\" && -z \"${CLONE}\") ]] ; then echo \"Version was set but destination / clone was not!\"; exit 1;fi\nif [[ (\"${DESTINATION}\" != \"\" && \"${CLONE}\" != \"\") && -z \"${VERSION}\" ]] ; then echo \"Destination / clone was set but version was not!\"; exit 1;fi\nif [[ \"${DESTINATION}\" != \"\" && \"${CLONE}\" == \"yes\" ]] ; then echo \"Destination and clone was set. Pick one!\"; exit 1;fi\n}\n\n# Prints the usage\nfunction print_usage() {\ncat <<EOF\nThe idea of this script is to update gh-pages branch with the generated docs. Without any options\nthe script will work in the following manner:\n\n- if there's no gh-pages / target for docs module then the script ends\n- for main branch the generated docs are copied to the root of gh-pages branch\n- for any other branch (if that branch is whitelisted) a subfolder with branch name is created\n    and docs are copied there\n- if the version switch is passed (-v) then a tag with (v) prefix will be retrieved and a folder\n    with that version number will be created in the gh-pages branch. WARNING! No whitelist verification will take place\n- if the destination switch is passed (-d) then the script will check if the provided dir is a git repo and then will\n    switch to gh-pages of that repo and copy the generated docs to `docs/<project-name>/<version>`\n- if the destination switch is passed (-d) then the script will check if the provided dir is a git repo and then will\n    switch to gh-pages of that repo and copy the generated docs to `docs/<project-name>/<version>`\n\nUSAGE:\n\nYou can use the following options:\n\n-v|--version        - the script will apply the whole procedure for a particular library version\n-d|--destination    - the root of destination folder where the docs should be copied. You have to use the full path.\n                        E.g. point to spring-cloud-static folder. Can't be used with (-c)\n-b|--build          - will run the standard build process after checking out the branch\n-c|--clone          - will automatically clone the spring-cloud-static repo instead of providing the destination.\n                        Obviously can't be used with (-d)\n\nEOF\n}\n\n\n# ==========================================\n#    ____   ____ _____  _____ _____ _______\n#  / ____|/ ____|  __ \\|_   _|  __ \\__   __|\n# | (___ | |    | |__) | | | | |__) | | |\n#  \\___ \\| |    |  _  /  | | |  ___/  | |\n#  ____) | |____| | \\ \\ _| |_| |      | |\n# |_____/ \\_____|_|  \\_\\_____|_|      |_|\n#\n# ==========================================\n\nwhile [[ $# > 0 ]]\ndo\nkey=\"$1\"\ncase ${key} in\n    -v|--version)\n    VERSION=\"$2\"\n    shift # past argument\n    ;;\n    -d|--destination)\n    DESTINATION=\"$2\"\n    shift # past argument\n    ;;\n    -b|--build)\n    BUILD=\"yes\"\n    ;;\n    -c|--clone)\n    CLONE=\"yes\"\n    ;;\n    -h|--help)\n    print_usage\n    exit 0\n    ;;\n    *)\n    echo \"Invalid option: [$1]\"\n    print_usage\n    exit 1\n    ;;\nesac\nshift # past argument or value\ndone\n\nassert_properties\nset_default_props\ncheck_if_anything_to_sync\nif [[ -z \"${VERSION}\" ]] ; then\n    retrieve_current_branch\nelse\n    switch_to_tag\nfi\nbuild_docs_if_applicable\nretrieve_doc_properties\nstash_changes\nadd_docs_from_target\ncheckout_previous_branch"
  },
  {
    "path": "docs/src/main/asciidoc/index.adoc",
    "content": "= Spring Cloud Azure - Reference Documentation\n\ninclude::_attributes.adoc[]\ninclude::version-information.adoc[]\ninclude::legal.adoc[]\ninclude::intro.adoc[]\n\ninclude::getting-help.adoc[]\ninclude::whats-new-4.0.adoc[]\ninclude::migration-guide-for-4.0.adoc[]\ninclude::getting-started.adoc[]\ninclude::configuration.adoc[]\ninclude::authentication.adoc[]\ninclude::production-ready.adoc[]\ninclude::auto-configure-azure-sdk-clients.adoc[]\ninclude::resource-handling.adoc[]\ninclude::secret-management.adoc[]\ninclude::spring-data-support.adoc[]\ninclude::spring-security-support.adoc[]\ninclude::spring-integration-support.adoc[]\ninclude::spring-cloud-stream-support.adoc[]\ninclude::spring-jms-support.adoc[]\ninclude::spring-native-support.adoc[]\ninclude::kafka-support.adoc[]\ninclude::redis-support.adoc[]\ninclude::resource-manager.adoc[]\ninclude::configuration-properties.adoc[]\n\n== Appendix\n=== link:appendix.html##configuration-properties[Configuration properties]\n=== link:appendix.html#migration-guide-for-4-0[Migration guide for 4.0]\n=== link:appendix.html#known-issues[Known issues]\n=== link:appendix.html#create-and-configure-a-managed-identity-on-azure-hosting-services[Create and configure a managed identity on Azure hosting services]\n=== link:appendix.html#deploy-application-to-azure-hosting-services[Deploy application to Azure hosting services]\n"
  },
  {
    "path": "docs/src/main/asciidoc/intro.adoc",
    "content": "\nSpring is an open-source application framework developed by VMware that provides a simplified, modular approach for creating Java applications. Spring Cloud Azure is an open-source project that provides seamless Spring integration with Azure services.\n"
  },
  {
    "path": "docs/src/main/asciidoc/kafka-support.adoc",
    "content": "[#kafka-support]\n== Kafka Support\n\nFrom version 4.3.0, Spring Cloud Azure for Kafka supports various types of credentials to authenticate and connect to Azure Event Hubs.\n\n=== Supported Kafka version\n\nThe current version of the starter should be compatible with Apache Kafka Clients 2.0.0 using Java 8 or above.\n\n=== Supported authentication types\n\nThe following authentication types are supported:\n\n* Plain connection string authentication\n** Direct connection string authentication\n** ARM-based connection string authentication\n* OAuth credential authentication\n** Managed identity authentication\n** Username/password authentication\n** Service principal authentication\n** DefautlAzureCredential authentication\n\n=== How it works\n\n==== OAuth credential authentication\n\nThis section describes the overall workflow of Spring Cloud Azure OAuth authentication.\n\nSpring Cloud Azure will first build one of the following types of credentials depending on the application authentication configuration:\n\n- `ClientSecretCredential`\n- `ClientCertificateCredential`\n- `UsernamePasswordCredential`\n- `ManagedIdentityCredential`\n\nIf none of these types of credentials are found, the credential chain via `DefaultAzureTokenCredential` will be used to obtain credentials from application properties, environment variables, managed identity, or IDEs. For detailed information, see the link:index.html#authentication[Authentication] section.\n\n==== Plain connection string authentication\n\nFor the connection string authentication mode, you can use connection string authentication directly or use the Azure Resource Manager to retrieve the connection string. For more information about the usage, see the link:#basic-usage-connection-string[Basic usage for connection string authentication] section.\n\nNOTE: Since version of 4.3.0, connection string authentication is deprecated in favor of OAuth authentications.\n\n=== Configuration\n\n==== Configurable properties when using Kafka support with OAuth authentication\n\nSpring Cloud Azure for Kafka supports the following two levels of configuration options:\n\n1. Spring Cloud Azure for Event Hubs Kafka properties.\n\n2. The global authentication configuration options of `credential` and `profile` with prefixes of `spring.cloud.azure`.\n\n3. Kafka-specific level configurations. The Kafka-level configurations are also available for Spring Boot and Spring Cloud Stream binders for `common`, `consumer`, `producer`, or `admin` scopes, which have different prefixes.\n\nThe global properties are exposed via `com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties`. The Kafka-specific properties are exposed via `org.springframework.boot.autoconfigure.kafka.KafkaProperties` (Spring Boot) and `org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties` (Spring Cloud Stream binder).\n\nThe following list shows all supported configuration options.\n\n* The Spring Cloud Azure global authentication configuration options\n\n** Prefix: `spring.cloud.azure`\n** Supported options: `spring.cloud.azure.credential.*`, `spring.cloud.azure.profile.*`\n\nFor the full list of global configuration options, see the link:appendix.html#global_proeprties[Global properties] section.\n\n* Spring Boot Kafka common configuration\n\n** Prefix: `spring.kafka.properties.azure`\n** Example: `spring.kafka.properties.azure`.credential.*\n\n* Spring Kafka consumer configuration options\n\n** Prefix: `spring.kafka.consumer.properties.azure`\n** Example: `spring.kafka.consumer.properties.azure`.credential.*\n\n* Spring Kafka producer configuration options\n\n** Prefix: `spring.kafka.producer.properties.azure`\n** Example: `spring.kafka.producer.properties.azure`.credential.*\n\n* Spring Kafka admin configuration options\n\n** Prefix: `spring.kafka.admin.properties.azure`\n** Example: `spring.kafka.admin.properties.azure`.credential.*\n\n* Spring Cloud Stream Kafka Binder common configuration\n\n** Prefix: `spring.cloud.stream.kafka.binder.configuration.azure`\n** Example: `spring.cloud.stream.kafka.binder.configuration.azure`.credential.*\n\n* Spring Cloud Stream Kafka Binder consumer configuration\n\n** Prefix: `spring.cloud.stream.kafka.binder.consumer-properties.azure`\n** Example: `spring.cloud.stream.kafka.binder.consumer-properties.azure`.credential.*\n\n* Spring Cloud Stream Kafka Binder producer configuration\n\n** Prefix: `spring.cloud.stream.kafka.binder.producer-properties.azure`\n** Example: `spring.cloud.stream.kafka.binder.producer-properties.azure`.credential.*\n\n* Spring Cloud Stream Kafka Binder admin configuration\n\n** Prefix: Not supported, should use Spring Boot Kafka common or admin configuration.\n\n.Spring Boot Kafka common configuration options\n[cols=\"2*\", options=\"header\"]\n|===\n|Property\n|Description\n| spring.kafka.properties.azure.credential.client-certificate-password                                         | Password of the certificate file.\n| spring.kafka.properties.azure.credential.client-certificate-path                                             | Path of a PEM certificate file to use when performing service principal authentication with Azure.\n| spring.kafka.properties.azure.credential.client-id                                                           | Client ID to use when performing service principal authentication with Azure. This is a legacy property.\n| spring.kafka.properties.azure.credential.client-secret                                                       | Client secret to use when performing service principal authentication with Azure. This is a legacy property.\n| spring.kafka.properties.azure.credential.managed-identity-enabled                                            | Whether to enable managed identity to authenticate with Azure. If *true* and the `client-id` is set, will use the client ID as user assigned managed identity client ID. The default value is *false*.\n| spring.kafka.properties.azure.credential.password                                                            | Password to use when performing username/password authentication with Azure.\n| spring.kafka.properties.azure.credential.username                                                            | Username to use when performing username/password authentication with Azure.\n| spring.kafka.properties.azure.profile.environment.active-directory-endpoint                                  | The Azure Active Directory endpoint to connect to.\n| spring.kafka.properties.azure.profile.tenant-id                                                              | Tenant ID for Azure resources.\n|===\n\n[NOTE]\n====\nThe configuration options in different levels apply the following rules. The more specific configuration options have higher priority than the common ones. For example:\n\n - Spring Kafka common configuration options supersede the global options.\n - Spring Kafka consumer configuration options supersede the common options.\n - Spring Kafka producer configuration options supersede the common options.\n - Spring Kafka admin configuration options supersede the common options.\n - The Spring Cloud Stream Kafka Binder options are just like the above.\n====\n\n==== Configurable properties when using Kafka support with plain connection string authentication\n\n\n.Spring Boot Event Hubs for Kafka common configuration options\n[cols=\"2*\", options=\"header\"]\n|===\n|Property\n|Description\n| **spring.cloud.azure.eventhubs**.kafka.enabled           | Whether to enable the Azure Event Hubs Kafka support. The default value is *true*.\n| **spring.cloud.azure.eventhubs**.connection-string       | Azure Event Hubs connection string. Provide this value when you want to provide the connection string directly.\n| **spring.cloud.azure.eventhubs**.namespace               | Azure Event Hubs namespace. Provide this value when you want to retrieve the connection information through Azure Resource Manager.\n| **spring.cloud.azure.eventhubs**.resource.resource-group | The resource group of Azure Event Hubs namespace. Provide this value when you want to retrieve the connection information through Azure Resource Manager.\n| **spring.cloud.azure**.profile.subscription-id           | The subscription ID. Provide this value when you want to retrieve the connection information through Azure Resource Manager.\n|===\n\n=== Dependency Setup\n\nAdd the following dependency to your project. This will automatically include the `spring-boot-starter` dependency in your project transitively.\n\n[source,xml]\n----\n<dependency>\n  <groupId>com.azure.spring</groupId>\n  <artifactId>spring-cloud-azure-starter</artifactId>\n</dependency>\n----\n\nNOTE: Remember to add the BOM `spring-cloud-azure-dependencies` along with the above dependency. For details, see the link:index.html#starter-dependencies[Getting started] section.\n\n=== Basic usage\n\nThe following sections show the classic Spring Boot application usage scenarios.\n\n==== Use OAuth authentication\n\nWhen you use the OAuth authentication provided by Spring Cloud Azure for Kafka, you can configure the specific credentials using the above configurations. Alternatively, you can choose to configure nothing about credentials, in which case Spring Cloud Azure will load the credentials from the environment. This section describes the usages that load the credentials from the Azure CLI environment or the Azure Spring Apps hosting environment.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see the link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure Active Directory] section to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nThe following section describes the scenarios using different Spring ecosystem libraries with OAuth authentication.\n\n===== Spring Kafka application support\n\nThis section describes the usage scenario for Spring Boot application using Spring Kafka or Spring Integration Kafka library.\n\n====== Dependency setup\n\n[source,xml]\n----\n<dependency>\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-starter</artifactId>\n</dependency>\n<!-- Using Spring Kafka library only-->\n<dependency>\n    <groupId>org.springframework.kafka</groupId>\n    <artifactId>spring-kafka</artifactId>\n    <version>{version}</version><!--Need to be set, for example:2.8.6-->\n</dependency>\n<!-- Using Spring Integration library only -->\n<dependency>\n    <groupId>org.springframework.integration</groupId>\n    <artifactId>spring-integration-kafka</artifactId>\n    <version>{version}</version><!--Need to be set, for example:5.5.12-->\n</dependency>\n----\n\n[#spring-kafka-configuraiton-setup]\n====== Configuration update\n\nTo use the OAuth authentication, just specify the Event Hubs endpoint, as shown in the following example:\n\n[source,properties]\n----\nspring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093\n----\n\n===== Spring Cloud Stream binder Kafka application support\n\nThis section describes the usage scenario for Spring Boot applications using the Spring Cloud Stream binder Kafka library.\n\n====== Dependency setup\n\n[source,xml]\n----\n<dependency>\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-starter</artifactId>\n</dependency>\n<dependency>\n    <groupId>org.springframework.cloud</groupId>\n    <artifactId>spring-cloud-starter-stream-kafka</artifactId>\n    <version>{version}</version><!--Need to be set, for example:3.2.3-->\n</dependency>\n----\n\n====== Configuration\n\nTo use the OAuth authentication, just specify the Event Hubs endpoint and `com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration`, as shown in the following example:\n\n[source,properties]\n----\nspring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093\nspring.cloud.stream.binders.kafka.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration\n----\n\nNOTE: If you're using version `4.3.0`, don't forget to set the `spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration` property to enable the whole OAuth authentication workflow, where `kafka-binder-name` is `kafka` by default in a single Kafka binder application. The configuration `AzureKafkaSpringCloudStreamConfiguration` specifies the OAuth security parameters for `KafkaBinderConfigurationProperties`, which is used in `KafkaOAuth2AuthenticateCallbackHandler` to enable Azure Identity. For version after `4.4.0`, this property will be added automatically for each Kafka binder environment, so there's no need for you to add it manually.\n\n====== Samples\n\nSee the link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] repository on GitHub.\n\n[#basic-usage-connection-string]\n==== Use connection string authentication\n\nYou can use connection string authentication directly or use the Azure Resource Manager to retrieve the connection string.\n\nNOTE: Since version of 4.3.0, connection string authentication is deprecated in favor of OAuth authentications.\n\n===== Dependency setup\n\nAdd the following dependencies if you want to migrate your Apache Kafka application to use Azure Event Hubs for Kafka.\n\n[source,xml]\n----\n<dependency>\n  <groupId>com.azure.spring</groupId>\n  <artifactId>spring-cloud-azure-starter</artifactId>\n</dependency>\n----\n\nIf you want to retrieve the connection string using Azure Resource Manager, add the following dependency:\n\n[source,xml]\n----\n<dependency>\n  <groupId>com.azure.spring</groupId>\n  <artifactId>spring-cloud-azure-resourcemanager</artifactId>\n</dependency>\n----\n\n===== Configuration\n\n====== Use Event Hubs connection string directly\n\nThe simplest way to connect to Event Hubs for Kafka is with the connection string. Just add the following property.\n\n[source,properties]\n----\nspring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}\n----\n\n====== Use Azure Resource Manager to retrieve connection string\n\nIf you don't want to configure the connection string in your application, you can use Azure Resource Manager to retrieve the connection string. To authenticate with Azure Resource Manager, you can also use credentials stored in Azure CLI or another local development tool such as Visual Studio Code or Intellij IDEA. Alternately, you can use Managed Identity if your application is deployed to Azure Cloud. Just be sure the principal has sufficient permission to read resource metadata.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see the link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure Active Directory] section to be sure the security principal has been granted the sufficient permission to access the Azure resource.\n\nTo use Azure Resource Manager to retrieve the connection string, just add the following property.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      profile:\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      eventhubs:\n        namespace: ${AZURE_EVENTHUBS_NAMESPACE}\n        resource:\n          resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}\n----\n\n=== Samples\n\nSee the link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] repository on GitHub.\n"
  },
  {
    "path": "docs/src/main/asciidoc/legal.adoc",
    "content": "\n(C) 2016-2022 the original authors.\n\nNOTE: _Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically._\n"
  },
  {
    "path": "docs/src/main/asciidoc/migration-guide-for-4.0.adoc",
    "content": "\n== Migration Guide for 4.0\n\nTo learn how to migrate to 4.0, please check link:appendix.html#migration-guide-for-4-0[the Appendix page].\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/production-ready.adoc",
    "content": "== Production Ready\n\nSpring Cloud Azure 4.0 supports health indicators for App Configuration, Event Hubs, Cosmos, Key Vault Certificate, Key Vault Secret, Storage Blob, Storage Queue, and Storage File Share. It also provides integrations with Spring Cloud Sleuth for all HTTP-based Azure SDKs. As an example, you now can prob if storage blob is up or down via Spring Boot actuator endpoint, as well as track dependencies and latencies going from your application to Key Vault.\n\n=== Enable Health Indicator\n\nAdd the Spring Cloud Azure Actuator Starter dependency. This dependency will also include the `spring-boot-starter-actuator`. \n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-actuator</artifactId>\n</dependency>\n----\n\n.Configurable properties to enable or disable health indicators for each Azure service\n[cols=\"<30,<70\", options=\"header\"]\n|===\n|Azure Service  |Property\n|App Configuration |management.health.*azure-appconfiguration*.enabled\n|Cosmos DB |management.health.*azure-cosmos*.enabled\n|Event Hubs |management.health.*azure-eventhubs*.enabled\n|Key Vault Certificate |management.health.*azure-keyvault-certificate*.enabled\n|Key Vault Secret |management.health.*azure-keyvault-secret*.enabled\n|Storage Blob |management.health.*azure-storage-blob*.enabled\n|Storage File Share|management.health.*azure-storage-fileshare*.enabled\n|Storage Queue |management.health.*azure-storage-queue*.enabled\n|===\n\nIMPORTANT: Calling the health endpoint of Azure services may cause extra charge. For example, calling `http://HOST_NAME:{port}/actuator/health/cosmos` to get the Cosmos DB health info, it will calculate https://docs.microsoft.com/azure/cosmos-db/request-units[RUs].\n\nNOTE: For calling the health endpoint of `Cosmos`, the option `spring.cloud.azure.cosmos.database` should be configured; Otherwise, the health status of `unknown` will be returned.\n\nNOTE: For calling the health endpoint of `Storage Queue`, role of `Storage Account Contributor` is required if `Azure AD` is used for authorizing.\n\n=== Enable Sleuth\n\nAdd the Spring Cloud Azure Trace Sleuth dependency when you want to trace Azure SDK activities with using Spring Cloud Sleuth.\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-trace-sleuth</artifactId>\n</dependency>\n----\n\nNOTE: Only HTTP-based Azure SDK clients are supported now, for example, Eventhub and ServiceBus with AMQP transport are currently not supported, we recommend to use https://docs.microsoft.com/azure/azure-monitor/app/app-insights-overview[Azure Application Insights] for such requirement.\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/redis-support.adoc",
    "content": "[#redis-support]\n== Redis Support\n\nConnect to Azure Cache for Redis using Spring Redis libraries. With adding `spring-cloud-azure-starter` and `spring-cloud-azure-resourcemanager` to your application, it's possible to read the Azure Cache for Redis connection information through Azure Resource Manager and auto-configure the Redis properties.\n\n=== Dependency Setup\n\nAdd the following dependencies if you want to use the Spring Cloud Azure Redis support to your Spring Boot application using Redis.\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-starter</artifactId>\n    </dependency>\n    <dependency>\n      <groupId>com.azure.spring</groupId>\n      <artifactId>spring-cloud-azure-resourcemanager</artifactId>\n    </dependency>\n</dependencies>\n----\n\n=== Configuration\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Configurable properties when using Redis support\n[cols=\"4*\", options=\"header\"]\n|===\n|Property |Description |Default Value | Required\n|*spring.cloud.azure.redis*.enabled |A value that indicates whether the Azure Cache for Redis is enabled.|true | No\n|*spring.cloud.azure.redis*.name |Azure Cache for Redis instance name.| |Yes\n|*spring.cloud.azure.redis*.resource.resource-group |The resource group of Azure Cache for Redis.||Yes\n|*spring.cloud.azure*.profile.subscription-id| The subscription id. ||Yes\n|===\n\nNOTE: Authentication information is also required for authenticating for Azure Resource Manager. The credential related configurations of Resource Manager should be configured under prefix `spring.cloud.azure`. For more information, see the link:index.html#authentication[Authentication] section.\n\n=== Basic Usage\n\nAdd the following properties and you are good to go.\n\n[source,properties]\n----\nspring.cloud.azure.redis.name=${AZURE_CACHE_REDIS_NAME}\nspring.cloud.azure.redis.resource.resource-group=${AZURE_CACHE_REDIS_RESOURCE_GROUP}\n----\n\n=== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] for more details.\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/resource-handling.adoc",
    "content": "== Resource Handling\n\nSpring project provides link:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#resources[Spring Resources] abstraction to access a number of low-level resources. It provides interfaces like `Resource`, `ResourceLoader` and `ResourcePatternResolver`. Spring Cloud Azure implements these interfaces for Azure Storage services which allows you to interact with Azure Storage Blob and File Share using Spring programming model. It provides `spring-cloud-azure-starter-storage-blob` and `spring-cloud-azure-starter-storage-file-share` to autoconfigure Azure Storage Blob and Azure Storage File Share.\n\n\n.Azure Storage related libraries.\n[cols=\"2,1,5\", options=\"header\"]\n|===\n|Starter \n|Service \n|Description\n\n|spring-cloud-azure-starter-storage-blob\n|Azure Storage Blob\n|Allows unstructured data to be stored and accessed at a massive scale in block blobs.\n\n|spring-cloud-azure-starter-storage-file-share\n|Azure Storage File Share\n|Offers fully managed cloud file shares that you can access from anywhere via the industry standard Server Message Block (SMB) protocol.\n|===\n\n=== Dependency Setup\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-storage-blob</artifactId> # <1>\n    </dependency>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-storage-file-share</artifactId> # <2>\n    </dependency>\n</dependencies>\n----\n<1> Only required when you're using Azure Storage Blob.\n<2> Only required when you're using Azure Storage File Share.\n\nTIP: We also provide `spring-cloud-azure-starter-storage` to support all the features of Storage. If you choose to use it, `spring.cloud.azure.storage.enable` is the property to configure, the default value is `true`. Then you can use `spring.cloud.azure.storage.<storage-service>.enable` to disable unneeded services.\n\n=== Configuration\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Configurable properties of spring-cloud-azure-starter-storage-blob\n[cols=\"3,1,5\", options=\"header\"]\n|===\n|Property  |Default | Description\n\n|*spring.cloud.azure.storage.blob*.enabled\n|true\n|Whether to enable Azure Storage Blob.\n\n|*spring.cloud.azure.storage.blob*.endpoint\n|  \n|Endpoint for Azure Storage Blob service.\n\n|*spring.cloud.azure.storage.blob*.account-key\n|  \n|Private key to connect Azure Storage Blob.\n\n|*spring.cloud.azure.storage.blob*.account-name\n|  \n|Azure Storage Blob account name.\n|===\n\n.Configurable properties of spring-cloud-azure-starter-storage-file-share\n[cols=\"3,1,5\", options=\"header\"]\n|===\n|Property  | Default | Description\n\n|*spring.cloud.azure.storage.fileshare*.enabled\n|true \n|Whether to enable Azure Storage File Share.\n\n|*spring.cloud.azure.storage.fileshare*.endpoint\n|  \n|Endpoint for Azure Storage File Share service.\n\n|*spring.cloud.azure.storage.fileshare*.account-key\n|  \n|Private key to connect Azure Storage File Share.\n\n|*spring.cloud.azure.storage.fileshare*.account-name\n|  \n|Azure Storage File Share account name.\n|===\n\n\n=== Basic Usage\n\n\nProvide the properties below in your configuration file.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      storage:\n        blob:\n          account-name: ${STORAGE_ACCOUNT_NAME}\n          account-key: ${STORAGE_ACCOUNT_KEY}\n          endpoint: ${STORAGE_BLOB_ENDPOINT}\n        fileshare:\n          account-name: ${STORAGE_ACCOUNT_NAME}\n          account-key: ${STORAGE_ACCOUNT_KEY}\n          endpoint:  ${STORAGE_FILESHARE_ENDPOINT}\n----\n\n==== Get a Resource\n\n===== Get a Resource with @Value\nYou can use the annotation of `@Value(\"azure-blob://[your-container-name]/[your-blob-name]\")` to autowire a blob resource.\n\n[source,java]\n----\n@Value(\"azure-blob://[your-container-name]/[your-blob-name]\") \nprivate Resource storageBlobResource;\n----\n\nYou can use the annotation of @Value(\"azure-file://[your-fileshare-name]/[your-file-name]\") to autowire a file resource.\n\n[source,java]\n----\n@Value(\"azure-file://[your-fileshare-name]/[your-file-name]\") \nprivate Resource storageFileResource;\n----\n\n===== Get a resource with ResourceLoader\n\n[source,java]\n----\n@Autowired\nprivate ResourceLoader resourceLoader;\n...\n// get a BlobResource\nResource storageBlobResource = resourceLoader.getResource(\"azure-blob://[your-container-name]/[your-blob-name]\");\n// get a FileResource\nResource storageFileResource = resourceLoader.getResource(\"azure-file://[your-fileshare-name]/[your-file-name]\");\n----\n\n===== Get Resources by Searching Pattern\nYou can use implementation class of `ResourcePatternResolver` to search resources. Use `AzureStorageBlobProtocolResolver` to search `blob` resources, and `AzureStorageFileProtocolResolver` to search `file` resources.\n\n- Pattern search, the **searchPattern** should start with `azure-blob://` or `azure-file://`. Such as `azure-blob://+++**+++/+++**+++`, it means list all blobs in all containers; `azure-blob://demo-container/**`, it means list all blobs in the demo-container container, including any sub-folders.\n- Location search, the **searchLocation** should start with `azure-blob://` or `azure-file://`, the remaining file path should exist, otherwise an exception will be thrown.\n\n[source,java]\n----\n@Autowired\nprivate AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver;\n\n@Autowired\nprivate AzureStorageFileProtocolResolver azureStorageFileProtocolResolver;\n\n// get all text blobs\nResource[] blobTextResources = azureStorageBlobProtocolResolver.getResources(\"azure-blob://[container-pattern]/*.txt\"); \n// get all text files\nResource[] fileTextResources = azureStorageFileProtocolResolver.getResources(\"azure-file://[fileshare-pattern]/*.txt\"); \n\n----\n\n\n==== Handling with Resource\n\n===== Download Data from Specific Resource\n\nYou can download a resource from Azure Stroage Blob or File Share with the `getInputStream()` method of `Resource`.\n\n[source,java]\n----\n@Value(\"azure-blob://[your-container-name]/[your-blob-name]\") \nprivate Resource storageBlobResource;\n\n@Value(\"azure-file://[your-fileshare-name]/[your-file-name]\") \nprivate Resource storageFileResource;\n\n....\n\n// download data as stream from blob resource\nInputStream inputblobStream = storageBlobResource.getInputStream();\n// download data as stream from file resource\nInputStream inputfileStream = storageFileResource.getInputStream();\n----\n\n===== Upload Data to Specific Resource\n\nYou can upload to a resource to Azure Storage Blob or File Share by casting the Spring `Resource` to `WritableResource`.\n\n[source,java]\n----\n@Value(\"azure-blob://[your-container-name]/[your-blob-name]\") \nprivate Resource storageBlobResource;\n\n@Value(\"azure-file://[your-fileshare-name]/[your-file-name]\") \nprivate Resource storageFileResource;\n\nString data = \"sampledata\";\n\n// upload string data to blob\ntry (OutputStream blobos = ((WritableResource) this.storageBlobResource).getOutputStream()) {\n  blobos.write(data.getBytes());\n}\n// upload string data to file\ntry (OutputStream fileos = ((WritableResource) this.storageFileResource).getOutputStream()) {\n  fileos.write(data.getBytes());\n}\n----\n\n==== Multipart Upload\n\nFiles larger than 4 MiB will be uploaded to Azure Storage in parallel.\n\n=== Samples\n\nPlease refer to link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample[storage-blob-sample] and link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample[storage-file-sample] for more details.\n"
  },
  {
    "path": "docs/src/main/asciidoc/resource-manager.adoc",
    "content": "[#spring-cloud-azure-resourcemanager]\n== Azure Resource Manager\n\nAzure Resource Manager (ARM) is the deployment and management service for Azure. It provides a management layer that enables you to create, update, and delete resources in your Azure account. Spring Cloud Azure Resource Manager can help provision resources or retrieve resource metadata.\n\n=== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n  <groupId>com.azure.spring</groupId>\n  <artifactId>spring-cloud-azure-resourcemanager</artifactId>\n</dependency>\n----\n\n=== Configuration\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Configurable properties of spring-cloud-azure-resourcemanager\n[cols=\"2*\", options=\"header\"]\n|===\n|Property |Description\n|*spring.cloud.azure.resource-manager*.enabled |Whether the Resource Manager is enabled. Default is true.\n|*spring.cloud.azure.credential*.client-id |Client id to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.credential*.client-secret |Client secret to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.credential*.client-certificate-path |Path of a PEM certificate file to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.credential*.client-certificate-password |Password of the certificate file.\n|*spring.cloud.azure.credential*.username |Username to use when performing username/password authentication with Azure.\n|*spring.cloud.azure.credential*.password |Password to use when performing username/password authentication.\n|*spring.cloud.azure.credential*.managed-identity-enabled |Whether to enable managed identity.\n|*spring.cloud.azure.profile*.cloud-type |Name of the Azure cloud to connect to.\n|*spring.cloud.azure.profile*.environment.active-directory-endpoint |The Azure Active Directory endpoint to connect to for authentication.\n|*spring.cloud.azure.profile*.subscription-id |Subscription id to use when connecting to Azure resources.\n|*spring.cloud.azure.profile*.tenant-id |Tenant id for Azure resources.\n|*spring.cloud.azure.<azure-service>*.namespace |The namespace of the Azure service to provision resources with.\n|*spring.cloud.azure.<azure-service>*.resource.resource-group |The resource group holding an Azure service resource.\n|===\n\n[#resource-manager-basic-usage]\n=== Basic Usage\n\nSpring Cloud Azure Resource Manager can work together with specific Spring Cloud Azure starters to retrieve connection information, such as connection strings, to connect to Azure services. It can also work together with `spring-cloud-azure-starter` and third-party libraries to retrieve metadata like username/password, and to complete authentication, For more information, see the <<Kafka Support>> and <<Redis Support>> sections.\n\nFor example, to retrieve the connection string of an Azure Service, developers can use a service principal as the credential to authenticate and retrieve the connection string. The configuration is listed the follows. The provided service principal should\nbe assigned a role of `Contributor` of the associated namespace at least. See link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the principal has been granted the sufficient permission to access the Azure resource.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      <azure-service>:\n        namespace: ${SERVICEBUS_NAMESPACE}\n        resource:\n          resource-group: ${RESOURCE_GROUP}\n----\n\n=== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] for more details.\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/secret-management.adoc",
    "content": "\n\n== Secret Management\n\nSpring Cloud Azure construct link:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-property-source-abstraction[PropertySource] which holds secrets stored in Azure Key Vault Secrets.\n\n=== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>\n</dependency>\n----\n\nTIP: We also provide `spring-cloud-azure-starter-keyvault` to support all the features of Key Vault. If you choose to use it, `spring.cloud.azure.keyvault.enable` is the property to configure, the default value is `true`. Then you can use `spring.cloud.azure.keyvault.<keyvault-service>.enable` to disable unneeded services.\n\n=== Basic Usage\n\nIf you want to authenticate by `client-id` and `client-secret`, the following properties are required:\n\n==== Configuration Properties\n[source,yml]\n----\nspring:\n  cloud:\n    azure:\n      keyvault:\n        secret:\n          property-sources:\n            - name: key-vault-property-souece-1\n              endpoint: ${ENDPOINT_1}\n            - name: key-vault-property-souece-2\n              endpoint: ${ENDPOINT_2}\n----\n\n==== Java Code\n[source,java]\n----\n@SpringBootApplication\npublic class SampleApplication implements CommandLineRunner {\n\n    @Value(\"${sampleProperty1}\")\n    private String sampleProperty1;\n    @Value(\"${sampleProperty2}\")\n    private String sampleProperty2;\n    @Value(\"${samplePropertyInMultipleKeyVault}\")\n    private String samplePropertyInMultipleKeyVault;\n\n    public static void main(String[] args) {\n        SpringApplication.run(SampleApplication.class, args);\n    }\n\n    public void run(String[] args) {\n        System.out.println(\"sampleProperty1: \" + sampleProperty1);\n        System.out.println(\"sampleProperty2: \" + sampleProperty2);\n        System.out.println(\"samplePropertyInMultipleKeyVault: \" + samplePropertyInMultipleKeyVault);\n    }\n\n}\n----\n\n=== Advanced Usage\n\n==== Special Characters in Property Name\n\nKey Vault secret name only support characters in `[0-9a-zA-Z-]`. Refs: link:https://docs.microsoft.com/azure/key-vault/general/about-keys-secrets-certificates#vault-name-and-object-name[Vault-name and Object-name]. If your property name contains other characters, you can use these workarounds:\n\n-  Use `-` instead of `.` in secret name. `.` isn't supported in secret name. If your application have property name which contains `.`, like `spring.datasource.url`, just replace `.` to `-` when save secret in Azure Key Vault. For example: Save `spring-datasource-url` in Azure Key Vault. In your application, you can still use `spring.datasource.url` to retrieve property value.\n\nNOTE: This method can not satisfy requirement like `spring.datasource-url`. When you save `spring-datasource-url` in Key Vault, only `spring.datasource.url` and `spring-datasource-url` is supported to retrieve property value, `spring.datasource-url` isn't supported. To handle this case, please refer to the following option: Use property placeholders.\n\n-  Use property placeholders. For example: setting this property in your application.properties: `property.with.special.character_=${propertyWithoutSpecialCharacter}`. The application will get  `propertyWithoutSpecialCharacter` key name and assign its value to `property.with.special.character_`.\n\n==== Case Sensitive\n\nBy default, the secret names are case-insensitive. To enable case-sensitive mode, just set the following property: `spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true`.\n\n==== Not Retrieve All Secrets In Key Vault\n\nIf you stored 1000 secrets in the Key Vault, and you just want to use 3 of them. You can list the 3 secret names by `spring.cloud.azure.keyvault.secret.property-sources[].secret-keys`.\n\n==== Setting Refresh Interval\n\nBy default, the secrets in `KeyVaultPropertySource` will refresh every 30 minutes. You can configure the time by `spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval`. For example: `spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m` means refresh every 60 minutes. Set to `0` to disable auto refresh.\n\n==== PropertySource Priority\n\nIf key exists in multiple PropertySources, which will take effect is decided by the priority.\n\n- If there is no `SystemEnvironmentPropertySource` in PropertySource list, then `KeyVaultPropertySource` will take the highest priority.\n- If there is `SystemEnvironmentPropertySource` in PropertySource list, then `SystemEnvironmentPropertySource` have higher priority than KeyVaultPropertySource. Which means you can use environment variable to override the Key Vault secret value in your application.\n- If there are multiple KeyVaultPropertySource in PropertySource list, then the definition order is the priority order. Take above sample as example, `key-vault-property-souece-1` has higher priority than `key-vault-property-souece-2`.\n\n==== All Configurable Properties\n\n.Configurable properties of Key Vault Secret PropertySource\n[cols=\"<45,<5,<50\", options=\"header\"]\n|===\n| Property                                                                | Default value                    | Description\n| *spring.cloud.azure.keyvault.secret*.property-source-enabled            | true                             | Whether to enable the Key Vault property source.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].name            |                                  | Name of this property source.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].endpoint        |                                  | Azure Key Vault endpoint.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].case-sensitive  | false                            | Whether the secret keys are case-sensitive.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].secret-keys     |                                  | The secret keys supported for this property source. All keys be retrieved if this property is missing.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].refresh-interval| 30m                              | Time interval to refresh all Key Vault secrets.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].service-version |                                  | Secret service version used when making API requests.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].client          |                                  | Client related properties.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].credential      |                                  | Credential related properties.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].profile         |                                  | Profile related properties.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].proxy           |                                  | Proxy related properties.\n| *spring.cloud.azure.keyvault.secret*.property-sources[].retry           |                                  | Retry related properties.\n|===\n\n- See link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the link:https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals#service-principal-object[security principal] has been granted the sufficient permission to access the Azure Key Vault Secrets.\n- If common properties like `client`, `credential`, `profile`, `proxy`, `retry` aren't configured in `spring.cloud.azure.keyvault.secret.property-sources[].xxx`, `spring.cloud.azure.xxx` will be used. See link:index.html#configuration[Configuration] to get more information about these common properties.\n- See link:appendix.html#_configuration_properties[Configuration Properties] to get more information about nested properties.\n\n=== Samples\n\nSample project: link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source[property-source].\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-cloud-stream-support.adoc",
    "content": ":content-type-negotiation: https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#content-type-management\n== Spring Cloud Stream Support\n\nSpring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems.\n\nThe framework provides a flexible programming model built on already established and familiar Spring idioms and best practices, including support for persistent pub/sub semantics, consumer groups, and stateful partitions.\n\nCurrent binder implementations include:\n\n* spring-cloud-azure-stream-binder-eventhubs\n* spring-cloud-azure-stream-binder-servicebus\n\n=== Spring Cloud Stream Binder for Azure Event Hubs\n\n==== Key Concepts\nThe Spring Cloud Stream Binder for Azure Event Hubs provides the binding implementation for the Spring Cloud Stream framework.\nThis implementation uses Spring Integration Event Hubs Channel Adapters at its foundation. From design's perspective,\nEvent Hubs is similar as Kafka. Also, Event Hubs could be accessed via Kafka API. If your project has tight dependency\non Kafka API, you can try link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/eventhubs/spring-cloud-azure-starter/spring-cloud-azure-sample-eventhubs-kafka[Events Hub with Kafka API Sample]\n\n===== Consumer Group\n\nEvent Hubs provides similar support of consumer group as Apache Kafka, but with slight different logic. While Kafka\nstores all committed offsets in the broker, you have to store offsets of Event Hubs messages\nbeing processed manually. Event Hubs SDK provides the function to store such offsets inside Azure Storage.\n\n===== Partitioning Support\n\nEvent Hubs provides a similar concept of physical partition as Kafka. But unlike Kafka's auto re-balancing between consumers and partitions, Event Hubs provides a kind of preemptive mode. The storage account acts as a lease to determine which partition is owned by which consumer. When a new consumer starts, it will try to steal some partitions\nfrom most heavy-loaded consumers to achieve the workload balancing.\n\nTo specify the load balancing strategy, properties of `spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer.load-balancing.*` are provided. See <<eventhubs-consumer-properties, the consumer properties>> for more details.\n\n===== Batch Consumer Support\nSpring Cloud Azure Stream Event Hubs binder supports link:https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#_batch_consumers[Spring Cloud Stream Batch Consumer feature].\n\nTo work with the batch-consumer mode, the property of `spring.cloud.stream.bindings.<binding-name>.consumer.batch-mode` should be set as `true`. When enabled, an **Message** of which the payload is a list of batched events will be received and passed to the `Consumer` function. Each message header is also converted as a list, of which the content is the associated header value parsed from each event. For the communal headers of partition id, checkpointer and last enqueued properties, they are presented as a single value for the entire batch of events shares the same one. See <<scs-eh-headers, Event Hubs Message Headers>> for more details.\n\nNOTE: The checkpoint header only exists when **MANUAL** checkpoint mode is used.\n\nCheckpointing of batch consumer supports two modes: `BATCH` and `MANUAL`. `BATCH` mode is an auto checkpointing mode to checkpoint the entire batch of events together once they are received by the binder. `MANUAL` mode is to checkpoint the events by users. When used, the\n**Checkpointer** will be passed into the message header, and users could use it to do checkpointing.\n\nThe batch size can be specified by properties of `max-size` and `max-wait-time` with prefix as `spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer.batch.`, where `max-size` is a necessary property while `max-wait-time` is optional. See <<eventhubs-consumer-properties, the consumer properties>> for more details.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-stream-binder-eventhubs</artifactId>\n</dependency>\n----\nAlternatively, you can also use the Spring Cloud Azure Stream Event Hubs Starter, as shown in the following example for Maven:\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-stream-eventhubs</artifactId>\n</dependency>\n----\n\n==== Configuration\n\nThe binder provides the following 3 parts of configuration options:\n\n[#eventhubs-connection-configuration]\n===== Connection Configuration Properties\n\nThis section contains the configuration options used for connecting to Azure Event Hubs.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, See link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Connection configurable properties of spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.eventhubs*.enabled\n| boolean\n| Whether an Azure Event Hubs is enabled.\n\n|*spring.cloud.azure.eventhubs*.connection-string\n| String\n| Event Hubs Namespace connection string value.\n\n|*spring.cloud.azure.eventhubs*.namespace\n| String\n| Event Hubs Namespace value, which is the prefix of the FQDN. A FQDN should be composed of <NamespaceName>.<DomainName>\n\n\n|*spring.cloud.azure.eventhubs*.domain-name\n| String\n| Domain name of an Azure Event Hubs Namespace value.\n\n|*spring.cloud.azure.eventhubs*.custom-endpoint-address\n| String\n| Custom Endpoint address.\n\n|===\n\nTIP: Common Azure Service SDK configuration options are configurable for the Spring Cloud Azure Stream Event Hubs binder as well. The supported configuration options are introduced in link:configuration.html[the Configuration page], and could be configured with either the unified prefix `spring.cloud.azure.` or the prefix of `spring.cloud.azure.eventhubs.`.\n\nThe binder also supports link:index.html#spring-cloud-azure-resourcemanager[Spring Could Azure Resource Manager] by default. To learn about how to retrieve the connection string with security principals that are not granted with `Data` related roles, see the link:index.html#resource-manager-basic-usage[resource manager example] for details.\n\n===== Checkpoint Configuration Properties\nThis section contains the configuration options for the Storage Blobs service, which is used for persisting partition ownership and checkpoint information.\n\nNOTE: From version 4.0.0, when the property of **spring.cloud.azure.eventhubs.processor.checkpoint-store.create-container-if-not-exists** is not enabled manually, no Storage container will be created automatically with the name from **spring.cloud.stream.bindings.<binding-name>.destination**.\n\n.Checkpointing configurable properties of spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.create-container-if-not-exists\n|Boolean\n|Whether to allow creating containers if not exists.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.account-name\n| String\n| Name for the storage account.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.account-key\n| String\n| Storage account access key.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.container-name\n| String\n| Storage container name.\n|===\n\nTIP: Common Azure Service SDK configuration options are configurable for Storage Blob checkpoint store as well. The supported configuration options are introduced in link:configuration.html[the Configuration page], and could be configured with either the unified prefix `spring.cloud.azure.` or the prefix of `spring.cloud.azure.eventhubs.processor.checkpoint-store`.\n\n===== Azure Event Hubs Binding Configuration Properties\nThe following options are divided into four sections: Consumer Properties, Advanced Consumer\nConfigurations, Producer Properties and Advanced Producer Configurations.\n\n[#eventhubs-consumer-properties]\n====== Consumer Properties\n\nThese properties are exposed via `EventHubsConsumerProperties`.\n\n.Consumer configurable properties of spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.mode\n|CheckpointMode\n| Checkpoint mode used when consumer decide how to checkpoint message\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.count\n| Integer\n|Decides the amount of message for each partition to do one checkpoint. Will take effect only when `PARTITION_COUNT` checkpoint mode is used.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.checkpoint.interval\n| Duration\n|Decides the time interval to do one checkpoint. Will take effect only when `TIME` checkpoint mode is used.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.batch.max-size\n| Integer\n| The maximum number of events in a batch. Required for the batch-consumer mode.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.batch.max-wait-time\n| Duration\n| The maximum time duration for batch consuming. Will take effect only when the batch-consumer mode is enabled and is optional.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.load-balancing.update-interval\n| Duration\n| The interval time duration for updating.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.load-balancing.strategy\n|LoadBalancingStrategy\n|The load balancing strategy.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.load-balancing.partition-ownership-expiration-interval\n|Duration\n|The time duration after which the ownership of partition expires.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.track-last-enqueued-event-properties\n|Boolean\n|Whether the event processor should request information on the last enqueued event on its associated partition, and track that information as events are received.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.prefetch-count\n|Integer\n|The count used by the consumer to control the number of events the Event Hub consumer will actively receive and queue locally.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer*.initial-partition-event-position\n|Map with the key as the partition id, and values of `StartPositionProperties`\n|The map containing the event position to use for each partition if a checkpoint for the partition does not exist in checkpoint store. This map is keyed off of the partition id.\n|===\n\nNOTE: The `initial-partition-event-position` configuration accepts a `map` to specify the initial position for each event hub. Thus, its key is the partition id, and the value is of `StartPositionProperties` which includes properties of offset, sequence number, enqueued date time and whether inclusive. For example, you can set it as\n\n[source,yaml]\n----\nspring:\n  cloud:\n    stream:\n      eventhubs:\n        bindings:\n          <binding-name>:\n            consumer:\n              initial-partition-event-position:\n                0:\n                  offset: earliest\n                1:\n                  sequence-number: 100\n                2:\n                  enqueued-date-time: 2022-01-12T13:32:47.650005Z\n                4:\n                  inclusive: false\n----\n\n====== Advanced Consumer Configuration\nThe above <<eventhubs-connection-configuration, connection>>, <<Checkpoint Configuration Properties, checkpoint>> and <<configuration.adoc#configuration, common Azure SDK client>> configuration are supported to be customized for each binder consumer, which can be configured with the prefix `spring.cloud.stream.eventhubs.bindings.<binding-name>.consumer.`.\n\n====== Producer Properties\n\nThese properties are exposed via `EventHubsProducerProperties`.\n\n.Producer configurable properties of spring-cloud-azure-stream-binder-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.producer*.sync\n| boolean\n|The switch flag for sync of producer. If true, the producer will wait for a response after a send operation.\n\n|*spring.cloud.stream.eventhubs.bindings.<binding-name>.producer*.send-timeout\n| long\n|The amount of time to wait for a response after a send operation. Will take effect only when a sync producer is enabled.\n|===\n\n====== Advanced Producer Configuration\nThe above <<eventhubs-connection-configuration, connection>> and <<configuration.adoc#configuration, common Azure SDK client>> configuration are supported to be customized for each binder producer, which can be configured with the prefix `spring.cloud.stream.eventhubs.bindings.<binding-name>.producer.`.\n\n==== Basic Usage\n===== Sending and Receiving Messages from/to Event Hubs\nStep 1. Fill the configuration options with credential information.\n\n- For credentials as connection string, configure the following properties in application.yml:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhubs:\n        connection-string: ${EVENTHUB_NAMESPACE_CONNECTION_STRING}\n        processor:\n          checkpoint-store:\n            container-name: ${CHECKPOINT_CONTAINER}\n            account-name: ${CHECKPOINT_STORAGE_ACCOUNT}\n            account-key: ${CHECKPOINT_ACCESS_KEY}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${EVENTHUB_NAME}\n          group: ${CONSUMER_GROUP}\n        supply-out-0:\n          destination: ${THE_SAME_EVENTHUB_NAME_AS_ABOVE}\n      eventhubs:\n        bindings:\n          consume-in-0:\n            consumer:\n              checkpoint:\n                mode: MANUAL\n----\n\n- For credentials as service principal, configure the following properties in application.yml:\n\n[source, yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      eventhubs:\n        namespace: ${EVENTHUB_NAMESPACE}\n        processor:\n          checkpoint-store:\n            container-name: ${CONTAINER_NAME}\n            account-name: ${ACCOUNT_NAME}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${EVENTHUB_NAME}\n          group: ${CONSUMER_GROUP}\n        supply-out-0:\n          destination: ${THE_SAME_EVENTHUB_NAME_AS_ABOVE}\n      eventhubs:\n        bindings:\n          consume-in-0:\n            consumer:\n              checkpoint:\n                mode: MANUAL\n----\n\n- For credentials as managed identites, configure the following properties in application.yml:\n\n[source, yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity\n      eventhubs:\n        namespace: ${EVENTHUB_NAMESPACE}\n        processor:\n          checkpoint-store:\n            container-name: ${CONTAINER_NAME}\n            account-name: ${ACCOUNT_NAME}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${EVENTHUB_NAME}\n          group: ${CONSUMER_GROUP}\n        supply-out-0:\n          destination: ${THE_SAME_EVENTHUB_NAME_AS_ABOVE}\n\n      eventhubs:\n        bindings:\n          consume-in-0:\n            consumer:\n              checkpoint:\n                mode: MANUAL\n----\n\n\n\nStep2. Define supplier and consumer.\n[source,java]\n----\n@Bean\npublic Consumer<Message<String>> consume() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message received: '{}', partition key: {}, sequence number: {}, offset: {}, enqueued time: {}\",\n                message.getPayload(),\n                message.getHeaders().get(EventHubsHeaders.PARTITION_KEY),\n                message.getHeaders().get(EventHubsHeaders.SEQUENCE_NUMBER),\n                message.getHeaders().get(EventHubsHeaders.OFFSET),\n                message.getHeaders().get(EventHubsHeaders.ENQUEUED_TIME)\n        );\n\n        checkpointer.success()\n                .doOnSuccess(success -> LOGGER.info(\"Message '{}' successfully checkpointed\", message.getPayload()))\n                .doOnError(error -> LOGGER.error(\"Exception found\", error))\n                .block();\n    };\n}\n\n@Bean\npublic Supplier<Message<String>> supply() {\n    return () -> {\n        LOGGER.info(\"Sending message, sequence \" + i);\n        return MessageBuilder.withPayload(\"Hello world, \" + i++).build();\n    };\n}\n----\n\n===== Partitioning Support\nA `PartitionSupplier` with user-provided partition information will be created to configure the partition information about the message to be sent, the following is the process of obtaining different priorities of the partition ID and key:\n\nimage:https://user-images.githubusercontent.com/63028776/145347877-fa8afa90-ec28-4c0a-8277-63b9fdaa5d0f.png[]\n\n===== Batch Consumer Support\n\nStep 1. Fill the batch configuration options\n[source,yaml]\n----\nspring:\n  cloud:\n    stream:\n      function:\n        definition: consume\n      bindings:\n        consume-in-0:\n          destination: ${AZURE_EVENTHUB_NAME}\n          group: ${AZURE_EVENTHUB_CONSUMER_GROUP}\n          consumer:\n            batch-mode: true\n      eventhubs:\n        bindings:\n          consume-in-0:\n            consumer:\n              batch:\n                max-batch-size: 10 # Required for batch-consumer mode\n                max-wait-time: 1m # Optional, the default value is null\n              checkpoint:\n                mode: BATCH # or MANUAL as needed\n----\n\nStep2. Define supplier and consumer.\n\nFor checkpointing mode as `BATCH`, you can use the following code to send messages and consume in batches.\n[source,java]\n----\n@Bean\npublic Consumer<Message<List<String>>> consume() {\n    return message -> {\n            for (int i = 0; i < message.getPayload().size(); i++) {\n                LOGGER.info(\"New message received: '{}', partition key: {}, sequence number: {}, offset: {}, enqueued time: {}\",\n                        message.getPayload().get(i),\n                        ((List<Object>) message.getHeaders().get(EventHubsHeaders.BATCH_CONVERTED_PARTITION_KEY)).get(i),\n                        ((List<Object>) message.getHeaders().get(EventHubsHeaders.BATCH_CONVERTED_SEQUENCE_NUMBER)).get(i),\n                        ((List<Object>) message.getHeaders().get(EventHubsHeaders.BATCH_CONVERTED_OFFSET)).get(i),\n                        ((List<Object>) message.getHeaders().get(EventHubsHeaders.BATCH_CONVERTED_ENQUEUED_TIME)).get(i));\n            }\n\n        };\n}\n\n@Bean\npublic Supplier<Message<String>> supply() {\n    return () -> {\n        LOGGER.info(\"Sending message, sequence \" + i);\n        return MessageBuilder.withPayload(\"\\\"test\"+ i++ +\"\\\"\").build();\n    };\n}\n----\n\nFor checkpointing mode as `MANUAL`, you can use the following code to send messages and consume/checkpoint in batches.\n[source,java]\n----\n@Bean\npublic Consumer<Message<List<String>>> consume() {\n    return message -> {\n        for (int i = 0; i < message.getPayload().size(); i++) {\n            LOGGER.info(\"New message received: '{}', partition key: {}, sequence number: {}, offset: {}, enqueued time: {}\",\n                message.getPayload().get(i),\n                ((List<Object>) message.getHeaders().get(EventHubHeaders.BATCH_CONVERTED_PARTITION_KEY)).get(i),\n                ((List<Object>) message.getHeaders().get(EventHubHeaders.BATCH_CONVERTED_SEQUENCE_NUMBER)).get(i),\n                ((List<Object>) message.getHeaders().get(EventHubHeaders.BATCH_CONVERTED_OFFSET)).get(i),\n                ((List<Object>) message.getHeaders().get(EventHubHeaders.BATCH_CONVERTED_ENQUEUED_TIME)).get(i));\n        }\n\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        checkpointer.success()\n                    .doOnSuccess(success -> LOGGER.info(\"Message '{}' successfully checkpointed\", message.getPayload()))\n                    .doOnError(error -> LOGGER.error(\"Exception found\", error))\n                    .block();\n    };\n}\n\n@Bean\npublic Supplier<Message<String>> supply() {\n    return () -> {\n        LOGGER.info(\"Sending message, sequence \" + i);\n        return MessageBuilder.withPayload(\"\\\"test\"+ i++ +\"\\\"\").build();\n    };\n}\n----\n\nNOTE: In the batch-consuming mode, the default content type of Spring Cloud Stream binder is `application/json`, so make sure the message payload is aligned with the content type. For example, when using the default content type of `application/json` to receive messages with `String` payload, the payload should be JSON String, surrounded with double quotes for the original String text. While for `text/plain` content type, it can be a `String` object directly. For more details, see the official doc of {content-type-negotiation}[Spring Cloud Stream Content Type Negotiation].\n\n===== Error Channels\n- Consumer error channel\n\nThis channel is open by default, you can handle the error message in this way:\n[source,java]\n----\n// Replace destination with spring.cloud.stream.bindings.input.destination\n// Replace group with spring.cloud.stream.bindings.input.group\n@ServiceActivator(inputChannel = \"{destination}.{group}.errors\")\npublic void consumerError(Message<?> message) {\n    LOGGER.error(\"Handling customer ERROR: \" + message);\n}\n----\n- Producer error channel\n\nThis channel is not open by default. You need to add a configuration in your application.properties to enable it, like this:\n[source,properties]\n----\nspring.cloud.stream.default.producer.errorChannelEnabled=true\n----\n\nYou can handle the error message in this way:\n[source,java]\n----\n// Replace destination with spring.cloud.stream.bindings.output.destination\n@ServiceActivator(inputChannel = \"{destination}.errors\")\npublic void producerError(Message<?> message) {\n    LOGGER.error(\"Handling Producer ERROR: \" + message);\n}\n----\n\n- Global default error channel\n\nA global error channel called \"errorChannel\" is created by default Spring Integration, which allows users to subscribe many endpoints to it.\n\n[source,java]\n----\n@ServiceActivator(inputChannel = \"errorChannel\")\npublic void producerError(Message<?> message) {\n    LOGGER.error(\"Handling ERROR: \" + message);\n}\n----\n\n[#scs-eh-headers]\n===== Event Hubs Message Headers\nSee the <<si-eh-headers, Event Hubs message headers>> for the basic message headers supported.\n\n===== Multiple Binder Support\nConnection to multiple Event Hubs namespaces is also supported by using multiple binders.This sample takes connection string as example. Credentials of service principals and managed identities are also supported, users can set related properties in each binder's environment settings.\n\nStep 1. To use multiple binders of EventHubs, we need to configure the following properties in application.yml\n[source,yaml]\n----\nspring:\n  cloud:\n    stream:\n      function:\n        definition: consume1;supply1;consume2;supply2\n      bindings:\n        consume1-in-0:\n          destination: ${EVENTHUB_NAME_01}\n          group: ${CONSUMER_GROUP_01}\n        supply1-out-0:\n          destination: ${THE_SAME_EVENTHUB_NAME_01_AS_ABOVE}\n        consume2-in-0:\n          binder: eventhub-2\n          destination: ${EVENTHUB_NAME_02}\n          group: ${CONSUMER_GROUP_02}\n        supply2-out-0:\n          binder: eventhub-2\n          destination: ${THE_SAME_EVENTHUB_NAME_02_AS_ABOVE}\n      binders:\n        eventhub-1:\n          type: eventhubs\n          default-candidate: true\n          environment:\n            spring:\n              cloud:\n                azure:\n                  eventhubs:\n                    connection-string: ${EVENTHUB_NAMESPACE_01_CONNECTION_STRING}\n                    processor:\n                      checkpoint-store:\n                        container-name: ${CHECKPOINT_CONTAINER_01}\n                        account-name: ${CHECKPOINT_STORAGE_ACCOUNT}\n                        account-key: ${CHECKPOINT_ACCESS_KEY}\n        eventhub-2:\n          type: eventhubs\n          default-candidate: false\n          environment:\n            spring:\n              cloud:\n                azure:\n                  eventhubs:\n                    connection-string: ${EVENTHUB_NAMESPACE_02_CONNECTION_STRING}\n                    processor:\n                      checkpoint-store:\n                        container-name: ${CHECKPOINT_CONTAINER_02}\n                        account-name: ${CHECKPOINT_STORAGE_ACCOUNT}\n                        account-key: ${CHECKPOINT_ACCESS_KEY}\n      eventhubs:\n        bindings:\n          consume1-in-0:\n            consumer:\n              checkpoint:\n                mode: MANUAL\n          consume2-in-0:\n            consumer:\n              checkpoint:\n                mode: MANUAL\n      poller:\n        initial-delay: 0\n        fixed-delay: 1000\n----\nStep 2. we need define two suppliers and two consumers\n[source,java]\n----\n@Bean\npublic Supplier<Message<String>> supply1() {\n    return () -> {\n        LOGGER.info(\"Sending message1, sequence1 \" + i);\n        return MessageBuilder.withPayload(\"Hello world1, \" + i++).build();\n    };\n}\n\n@Bean\npublic Supplier<Message<String>> supply2() {\n    return () -> {\n        LOGGER.info(\"Sending message2, sequence2 \" + j);\n        return MessageBuilder.withPayload(\"Hello world2, \" + j++).build();\n    };\n}\n\n@Bean\npublic Consumer<Message<String>> consume1() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message1 received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(success -> LOGGER.info(\"Message1 '{}' successfully checkpointed\", message))\n                .doOnError(error -> LOGGER.error(\"Exception found\", error))\n                .block();\n    };\n}\n\n@Bean\npublic Consumer<Message<String>> consume2() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message2 received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(success -> LOGGER.info(\"Message2 '{}' successfully checkpointed\", message))\n                .doOnError(error -> LOGGER.error(\"Exception found\", error))\n                .block();\n    };\n}\n----\n\n===== Resource Provision\nEvent Hubs binder supports provisioning of event hub and consumer group, users could use the following properties to enable provisioning.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        tenant-id: ${AZURE_TENANT_ID}\n      profile:\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      eventhubs:\n        resource:\n          resource-group: ${AZURE_EVENTHUBS_RESOURECE_GROUP}\n----\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/eventhubs/spring-cloud-azure-stream-binder-eventhubs[azure-spring-boot-samples] for more details.\n\n=== Spring Cloud Stream Binder for Azure Service Bus\n\n==== Key Concepts\nThe Spring Cloud Stream Binder for Azure Service Bus provides the binding implementation for the Spring Cloud Stream Framework.\nThis implementation uses Spring Integration Service Bus Channel Adapters at its foundation.\n\n===== Scheduled Message\nThis binder supports submitting messages to a topic for delayed processing. Users can send scheduled messages with header `x-delay`\nexpressing in milliseconds a delay time for the message. The message will be delivered to the respective topics after `x-delay` milliseconds.\n\n===== Consumer Group\n\nService Bus Topic provides similar support of consumer group as Apache Kafka, but with slight different logic.\nThis binder relies on `Subscription` of a topic to act as a consumer group.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId>\n</dependency>\n----\nAlternatively, you can also use the Spring Cloud Azure Stream Service Bus Starter, as shown in the following example for Maven:\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-stream-servicebus</artifactId>\n</dependency>\n----\n\n==== Configuration\nThe binder provides the following 2 parts of configuration options:\n\n[#servicebus-connection-configuration]\n===== Connection Configuration Properties\n\nThis section contains the configuration options used for connecting to Azure Service Bus.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Connection configurable properties of spring-cloud-azure-stream-binder-servicebus\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.servicebus*.enabled\n| boolean\n| Whether an Azure Service Bus is enabled.\n\n|*spring.cloud.azure.servicebus*.connection-string\n| String\n| Service Bus Namespace connection string value.\n\n|*spring.cloud.azure.servicebus*.namespace\n| String\n| Service Bus Namespace value, which is the prefix of the FQDN. A FQDN should be composed of <NamespaceName>.<DomainName>\n\n|*spring.cloud.azure.servicebus*.domain-name\n| String\n| Domain name of an Azure Service Bus Namespace value.\n\n|===\n\nTIP: Common Azure Service SDK configuration options are configurable for the Spring Cloud Azure Stream Service Bus binder as well. The supported configuration options are introduced in link:configuration.html[the Configuration page], and could be configured with either the unified prefix `spring.cloud.azure.` or the prefix of `spring.cloud.azure.servicebus.`.\n\nThe binder also supports link:index.html#spring-cloud-azure-resourcemanager[Spring Could Azure Resource Manager] by default. To learn about how to retrieve the connection string with security principals that are not granted with `Data` related roles, see the link:index.html#resource-manager-basic-usage[resource manager example] for details.\n\n===== Azure Service Bus Binding Configuration Properties\nThe following options are divided into four sections: Consumer Properties, Advanced Consumer\nConfigurations, Producer Properties and Advanced Producer Configurations.\n\n====== Consumer Properties\n\nThese properties are exposed via `ServiceBusConsumerProperties`.\n\n.Consumer configurable properties of spring-cloud-azure-stream-binder-servicebus\n[cols=\"<,<,<,<\", options=\"header\"]\n|===\n|Property | Type |Default |Description\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.requeue-rejected\n|boolean\n|false\n|If the failed messages are routed to the DLQ.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.max-concurrent-calls\n| Integer\n| 1\n| Max concurrent messages that the Service Bus processor client should process.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.max-concurrent-sessions\n|Integer\n|null\n| Maximum number of concurrent sessions to process at any given time.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.session-enabled\n| Boolean\n| null\n| Whether session is enabled.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.prefetch-count\n| Integer\n| 0\n| The prefetch count of the Service Bus processor client.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.sub-queue\n| SubQueue\n| none\n| The type of the sub queue to connect to.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.max-auto-lock-renew-duration\n| Duration\n| 5m\n| The amount of time to continue auto-renewing the lock.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.receive-mode\n| ServiceBusReceiveMode\n| peek_lock\n| The receive mode of the Service Bus processor client.\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.consumer*.auto-complete\n| Boolean\n| true\n| Whether to settle messages automatically. If set as false, a message header of `Checkpointer` will be added\nto enable developers to settle messages manually.\n\n|===\n\n====== Advanced Consumer Configuration\nThe above <<servicebus-connection-configuration, connection>> and <<configuration.adoc#configuration, common Azure SDK client>> configuration are supported to be customized for each binder consumer, which can be configured with the prefix `spring.cloud.stream.servicebus.bindings.<binding-name>.consumer.`.\n\n====== Producer Properties\n\nThese properties are exposed via `ServiceBusProducerProperties`.\n\n.Producer configurable properties of spring-cloud-azure-stream-binder-servicebus\n[cols=\"<,<,<,<\", options=\"header\"]\n|===\n|Property | Type | Default |Description\n\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.producer*.sync |boolean |false | Switch flag\nfor sync of producer.\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.producer*.send-timeout |long |10000 | Timeout\nvalue for sending of producer.\n|*spring.cloud.stream.servicebus.bindings.<binding-name>.producer*.entity-type |ServiceBusEntityType |null | Service Bus entity type of the producer, required for the binding producer.\n|===\n\nIMPORTANT: When using the binding producer, property of `spring.cloud.stream.servicebus.bindings.<binding-name>.producer.entity-type` is required to be configured.\n\n====== Advanced Producer Configuration\nThe above <<servicebus-connection-configuration, connection>> and <<configuration.adoc#configuration, common Azure SDK client>> configuration are supported to be customized for each binder producer, which can be configured with the prefix `spring.cloud.stream.servicebus.bindings.<binding-name>.producer.`.\n\n==== Basic Usage\n===== Sending and Receiving Messages from/to Service Bus\nStep 1. Fill the configuration options with credential information.\n\n- For credentials as connection string, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      servicebus:\n        connection-string: ${SERVICEBUS_NAMESPACE_CONNECTION_STRING}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${SERVICEBUS_ENTITY_NAME}\n          # If you use Service Bus Topic, please add the following configuration\n          # group: ${SUBSCRIPTION_NAME}\n        supply-out-0:\n          destination: ${SERVICEBUS_ENTITY_NAME_SAME_AS_ABOVE}\n      servicebus:\n        bindings:\n          consume-in-0:\n            consumer:\n              auto-complete: false\n          supply-out-0:\n            producer:\n              entity-type: queue # set as \"topic\" if you use Service Bus Topic\n----\n\n- For credentials as service principal, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${SERVICEBUS_ENTITY_NAME}\n          # If you use Service Bus Topic, please add the following configuration\n          # group: ${SUBSCRIPTION_NAME}\n        supply-out-0:\n          destination: ${SERVICEBUS_ENTITY_NAME_SAME_AS_ABOVE}\n      servicebus:\n        bindings:\n          consume-in-0:\n            consumer:\n              auto-complete: false\n          supply-out-0:\n            producer:\n              entity-type: queue # set as \"topic\" if you use Service Bus Topic\n----\n\n- For credentials as managed identities, configure the following properties in application.yml:\n[source, yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity\n      servicebus:\n        namespace: ${SERVICEBUS_NAMESPACE}\n    stream:\n      function:\n        definition: consume;supply\n      bindings:\n        consume-in-0:\n          destination: ${SERVICEBUS_ENTITY_NAME}\n          # If you use Service Bus Topic, please add the following configuration\n          # group: ${SUBSCRIPTION_NAME}\n        supply-out-0:\n          destination: ${SERVICEBUS_ENTITY_NAME_SAME_AS_ABOVE}\n      servicebus:\n        bindings:\n          consume-in-0:\n            consumer:\n              auto-complete: false\n          supply-out-0:\n            producer:\n              entity-type: queue # set as \"topic\" if you use Service Bus Topic\n\n----\n\nStep 2. Define supplier and consumer.\n[source,java]\n----\n@Bean\npublic Consumer<Message<String>> consume() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message received: '{}'\", message.getPayload());\n\n        checkpointer.success()\n                .doOnSuccess(success -> LOGGER.info(\"Message '{}' successfully checkpointed\", message.getPayload()))\n                .doOnError(error -> LOGGER.error(\"Exception found\", error))\n                .block();\n    };\n}\n\n@Bean\npublic Supplier<Message<String>> supply() {\n    return () -> {\n        LOGGER.info(\"Sending message, sequence \" + i);\n        return MessageBuilder.withPayload(\"Hello world, \" + i++).build();\n    };\n}\n----\n\n===== Partition Key Support\n\nThe binder supports link:https://docs.microsoft.com/azure/service-bus-messaging/service-bus-partitioning[Service Bus partitioning] by allowing setting partition key and session id in the message header. This section introduces how to set partition key for messages.\n\nSpring Cloud Stream provides a partition key SpEL expression property `spring.cloud.stream.bindings.<binding-name>.producer.partition-key-expression`. For example, setting this property as `&quot;&#39;partitionKey-&#39; + headers[&lt;message-header-key&gt;]&quot;` and add a header called <message-header-key>. Spring Cloud Stream will use the value for this header when evaluating the above expression to assign a partition key. Here is an example producer code:\n\n[source,java]\n----\n@Bean\npublic Supplier<Message<String>> generate() {\n    return () -> {\n        String value = “random payload”;\n    \treturn MessageBuilder.withPayload(value)\n            .setHeader(\"<message-header-key>\", value.length() % 4)\n            .build();\n    };\n}\n----\n\n===== Session Support\n\nThe binder supports link:https://docs.microsoft.com/azure/service-bus-messaging/message-sessions[message sessions] of Service Bus. Session id of a message could be set via the message header.\n\n[source,java]\n----\n@Bean\npublic Supplier<Message<String>> generate() {\n    return () -> {\n        String value = “random payload”;\n    \treturn MessageBuilder.withPayload(value)\n            .setHeader(ServiceBusMessageHeaders.SESSION_ID, \"Customize session id\")\n            .build();\n    };\n}\n----\n\nNOTE: According to link:https://docs.microsoft.com/azure/service-bus-messaging/service-bus-partitioning[Service Bus partitioning], session id has higher priority than partition key. So when both of `ServiceBusMessageHeaders#SESSION_ID` and `ServiceBusMessageHeaders#PARTITION_KEY` (or `AzureHeaders#PARTITION_KEY`) headers are set,\nthe value of the session id will eventually be used to overwrite the value of the partition key.\n\n===== Error Channels\n- Consumer error channel\n\nThis channel is open by default, and a default consumer error channel handler is used to send failed messages to the dead-letter queue when `spring.cloud.stream.servicebus.bindings.<binding-name>.consumer.requeue-rejected` is enabled, otherwise the failed messages will be abandoned.\n\nTo customize the consumer error channel handler, you can register you own error handler to the related consumer error channel in this way:\n[source,java]\n----\n// Replace destination with spring.cloud.stream.bindings.input.destination\n// Replace group with spring.cloud.stream.bindings.input.group\n@ServiceActivator(inputChannel = \"{destination}.{group}.errors\")\npublic void consumerError(Message<?> message) {\n    LOGGER.error(\"Handling customer ERROR: \" + message);\n}\n----\n\n- Producer error channel\n\nThis channel is not open by default. You need to add a configuration in your application.properties to enable it, like this:\n[source,properties]\n----\nspring.cloud.stream.default.producer.errorChannelEnabled=true\n----\n\nYou can handle the error message in this way:\n[source,java]\n----\n// Replace destination with spring.cloud.stream.bindings.output.destination\n@ServiceActivator(inputChannel = \"{destination}.errors\")\npublic void producerError(Message<?> message) {\n    LOGGER.error(\"Handling Producer ERROR: \" + message);\n}\n----\n\n- Global default error channel\n\nA global error channel called \"errorChannel\" is created by default Spring Integration, which allows users to subscribe many endpoints to it.\n\n[source,java]\n----\n@ServiceActivator(inputChannel = \"errorChannel\")\npublic void producerError(Message<?> message) {\n    LOGGER.error(\"Handling ERROR: \" + message);\n}\n----\n\n[#scs-sb-headers]\n===== Service Bus Message Headers\n\nSee the <<si-sb-headers, Service Bus message headers>> for the basic message headers supported.\n\nNOTE: When setting the partiton key, the priority of message header is higher than Spring Cloud Stream property. So `spring.cloud.stream.bindings.<binding-name>.producer.partition-key-expression` will take effect only when none of the headers of `ServiceBusMessageHeaders#SESSION_ID`, `ServiceBusMessageHeaders#PARTITION_KEY`, `AzureHeaders#PARTITION_KEY` is configured.\n\n===== Multiple Binder Support\nConnection to multiple Service Bus namespaces is also supported by using multiple binders. This sample takes connection string as example. Credentials of service principals and managed identities are also supported, users can set related properties in each binder's environment settings.\n\nStep 1. To use multiple binders of ServiceBus, we need to configure the following properties in application.yml\n[source,yaml]\n----\nspring:\n  cloud:\n    stream:\n      function:\n        definition: consume1;supply1;consume2;supply2\n      bindings:\n        consume1-in-0:\n          destination: ${SERVICEBUS_TOPIC_NAME}\n          group: ${SUBSCRIPTION_NAME}\n        supply1-out-0:\n          destination: ${SERVICEBUS_TOPIC_NAME_SAME_AS_ABOVE}\n        consume2-in-0:\n          binder: servicebus-2\n          destination: ${SERVICEBUS_QUEUE_NAME}\n        supply2-out-0:\n          binder: servicebus-2\n          destination: ${SERVICEBUS_QUEUE_NAME_SAME_AS_ABOVE}\n      binders:\n        servicebus-1:\n          type: servicebus\n          default-candidate: true\n          environment:\n            spring:\n              cloud:\n                azure:\n                  servicebus:\n                    connection-string: ${SERVICEBUS_NAMESPACE_01_CONNECTION_STRING}\n        servicebus-2:\n          type: servicebus\n          default-candidate: false\n          environment:\n            spring:\n              cloud:\n                azure:\n                  servicebus:\n                    connection-string: ${SERVICEBUS_NAMESPACE_02_CONNECTION_STRING}\n      servicebus:\n        bindings:\n          consume1-in-0:\n            consumer:\n              auto-complete: false\n          supply1-out-0:\n            producer:\n              entity-type: topic\n          consume2-in-0:\n            consumer:\n              auto-complete: false\n          supply2-out-0:\n            producer:\n              entity-type: queue\n      poller:\n        initial-delay: 0\n        fixed-delay: 1000\n----\nStep 2. we need define two suppliers and two consumers\n[source,java]\n----\n@Bean\npublic Supplier<Message<String>> supply1() {\n    return () -> {\n        LOGGER.info(\"Sending message1, sequence1 \" + i);\n        return MessageBuilder.withPayload(\"Hello world1, \" + i++).build();\n    };\n}\n\n@Bean\npublic Supplier<Message<String>> supply2() {\n    return () -> {\n        LOGGER.info(\"Sending message2, sequence2 \" + j);\n        return MessageBuilder.withPayload(\"Hello world2, \" + j++).build();\n    };\n}\n\n@Bean\npublic Consumer<Message<String>> consume1() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message1 received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(s -> LOGGER.info(\"Message '{}' successfully checkpointed\", message.getPayload()))\n                .doOnError(e -> LOGGER.error(\"Error found\", e))\n                .block();\n    };\n}\n\n@Bean\npublic Consumer<Message<String>> consume2() {\n    return message -> {\n        Checkpointer checkpointer = (Checkpointer) message.getHeaders().get(CHECKPOINTER);\n        LOGGER.info(\"New message2 received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(s -> LOGGER.info(\"Message '{}' successfully checkpointed\", message.getPayload()))\n                .doOnError(e -> LOGGER.error(\"Error found\", e))\n                .block();\n    };\n\n}\n----\n\n===== Resource Provision\nService bus binder supports provisioning of queue, topic and subscription, users could use the following properties to enable provisioning.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        tenant-id: ${AZURE_TENANT_ID}\n      profile:\n        subscription-id: ${AZURE_SUBSCRIPTION_ID}\n      servicebus:\n        resource:\n          resource-group: ${AZURE_SERVICEBUS_RESOURECE_GROUP}\n    stream:\n      servicebus:\n        bindings:\n          <binding-name>:\n            consumer:\n              entity-type: ${SERVICEBUS_CONSUMER_ENTITY_TYPE}\n----\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/servicebus/spring-cloud-azure-stream-binder-servicebus[azure-spring-boot-samples] for more details.\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-data-support.adoc",
    "content": "== Spring Data Support\n\n=== Spring Data CosmosDB Support\n\nlink:https://azure.microsoft.com/services/cosmos-db/[Azure Cosmos DB] is a globally-distributed database service that allows developers to work with data using a variety of standard APIs, such as SQL, MongoDB, Graph, and Azure Table storage.\n\n\n=== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n   <groupId>com.azure.spring</groupId>\n   <artifactId>spring-cloud-azure-starter-data-cosmos</artifactId>\n</dependency>\n----\n\n\n=== Configuration\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, please refer to link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Configurable properties of spring-cloud-azure-starter-data-cosmos\n[cols=\"2,1,3\", options=\"header\"]\n|===\n|Property | Default | Description\n\n|*spring.cloud.azure.cosmos*.enabled\n|true\n|Whether Azure Cosmos Service is enabled.\n\n|*spring.cloud.azure.cosmos*.database\n|  \n|The Cosmos DB database id.\n\n|*spring.cloud.azure.cosmos*.endpoint\n|  \n|Uri to connect Cosmos DB.\n\n|*spring.cloud.azure.cosmos*.key\n|  \n|Private key to connect Cosmos DB.\n\n|*spring.cloud.azure.cosmos*.credential.client-certificate-password\n|\n|Password of the certificate file. \n\n|*spring.cloud.azure.cosmos*.credential.client-certificate-path\n|  \n|Path of a PEM certificate file to use when performing service principal authentication with Azure. \n\n|*spring.cloud.azure.cosmos*.credential.client-id\n|  \n|Client id to use when performing service principal authentication with Azure. \n\n|*spring.cloud.azure.cosmos*.credential.client-secret\n|  \n|Client secret to use when performing service principal authentication with Azure. \n\n|*spring.cloud.azure.cosmos*.credential.managed-identity-enabled\n|false\n|Whether to enable managed identity.\n\n|*spring.cloud.azure.cosmos*.credential.password\n|  \n|Password to use when performing username/password authentication with Azure. \n\n|*spring.cloud.azure.cosmos*.credential.username\n|  \n|Username to use when performing username/password authentication with Azure. \n\n|*spring.cloud.azure.cosmos*.populate-query-metrics\n|false  \n|Populate Diagnostics Strings and Query metrics.\n\n|*spring.cloud.azure.cosmos*.consistency-level\n|\n| link:https://docs.microsoft.com/azure/cosmos-db/consistency-levels[Consistency levels] in Azure Cosmos DB.\n|===\n\n\n=== Key Concepts\n* Spring Data CrudRepository and ReactiveCrudRepository basic CRUD functionality\n  ** save\n  ** findAll\n  ** findOne by Id\n  ** deleteAll\n  ** delete by Id\n  ** delete entity\n* Spring Data link:https://github.com/spring-projects/spring-data-commons/blob/db62390de90c93a78743c97cc2cc9ccd964994a5/src/main/java/org/springframework/data/annotation/Id.java[@Id] annotation.\n  There're 2 ways to map a field in domain class to `id` of Azure Cosmos DB document.\n  ** annotate a field in domain class with @Id, this field will be mapped to document `id` in Cosmos DB. \n  ** set name of this field to `id`, this field will be mapped to document `id` in Cosmos DB.\n    [Note] if both way applied,    \n* Custom collection Name.\n   By default, collection name will be class name of user domain class. To customize it, add annotation `@Document(collection=\"myCustomCollectionName\")` to your domain class, that's all.\n* Supports link:https://docs.microsoft.com/azure/cosmos-db/partitioning-overview[Azure Cosmos DB partition]. To specify a field of your domain class to be partition key field, just annotate it with `@PartitionKey`. When you do CRUD operation, please specify your partition value. For more sample on partition CRUD, please refer to link:https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/src/test/java/com/azure/spring/data/cosmos/repository/integration/AddressRepositoryIT.java[test here]\n* Supports link:https://docs.spring.io/spring-data/commons/docs/current/reference/html/#repositories.query-methods.details[Spring Data custom query] find operation.\n* Supports link:https://spring.io/projects/spring-data-rest[spring-boot-starter-data-rest].\n* Supports List and nested type in domain class.\n\n\n=== Basic Usage\n\n==== Use Private Key to Access CosmosDB\nThe simplest way to connect CosmosDB with `spring-cloud-azure-starter-data-cosmos` is primary key, add below properties, and you are good to go.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      cosmos:\n        key: ${AZURE_COSMOS_KEY}\n        endpoint: ${AZURE_COSMOS_ENDPOINT}\n        database: ${AZURE_COSMOS_DATABASE}\n----\n\n==== Define an Entity\nDefine a simple entity as Document in Cosmos DB.\n----\n@Container(containerName = \"mycollection\")\npublic class User {\n    @Id\n    private String id;\n    private String firstName;\n    @PartitionKey\n    private String lastName;\n    private String address;\n\n    public User() {\n    }\n\n    public User(String id, String firstName, String lastName, String address) {\n        this.id = id;\n        this.firstName = firstName;\n        this.lastName = lastName;\n        this.address = address;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    public String getFirstName() {\n        return firstName;\n    }\n\n    public void setFirstName(String firstName) {\n        this.firstName = firstName;\n    }\n\n    public String getLastName() {\n        return lastName;\n    }\n\n    public void setLastName(String lastName) {\n        this.lastName = lastName;\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"%s %s, %s\", firstName, lastName, address);\n    }\n}\n----\n\n`id` field will be used as document `id` in Azure Cosmos DB. Or you can annotate any field with `@Id` to map it to document `id`.\n\nAnnotation `@Container(containerName = \"mycollection\")` is used to specify the collection name of your document in Azure Cosmos DB.\n\n==== Create Repositories\nExtends ReactiveCosmosRepository interface, which provides Spring Data repository support.\n\n----\n@Repository\npublic interface UserRepository extends ReactiveCosmosRepository<User, String> {\n\n    Flux<User> findByFirstName(String firstName);\n}\n----\n\nSo far ReactiveCosmosRepository provides basic save, delete and find operations. More operations will be supported later.\n\n==== Create an Application Class\nHere create an application class with all the components\n\n----\n@SpringBootApplication\npublic class CosmosSampleApplication implements CommandLineRunner {\n\n   private static final Logger LOGGER = LoggerFactory.getLogger(CosmosSampleApplication.class);\n\n\t@Autowired\n\tprivate UserRepository repository;\n\n\t@Autowired\n\tprivate CosmosProperties properties;\n\n\tpublic static void main(String[] args) {\n\t\tSpringApplication.run(CosmosSampleApplication.class, args);\n\t}\n\n\tpublic void run(String... var1) {\n\t\tfinal User testUser = new User(\"testId\", \"testFirstName\",\n\t\t\t\t\"testLastName\", \"test address line one\");\n\n\t\t// Save the User class to Azure Cosmos DB database.\n\t\tfinal Mono<User> saveUserMono = repository.save(testUser);\n\n\t\tfinal Flux<User> firstNameUserFlux = repository.findByFirstName(\"testFirstName\");\n\n\t\t//  Nothing happens until we subscribe to these Monos.\n\t\t//  findById will not return the user as user is not present.\n\t\tfinal Mono<User> findByIdMono = repository.findById(testUser.getId());\n\t\tfinal User findByIdUser = findByIdMono.block();\n\t\tAssert.isNull(findByIdUser, \"User must be null\");\n\n\t\tfinal User savedUser = saveUserMono.block();\n\t\tAssert.state(savedUser != null, \"Saved user must not be null\");\n\t\tAssert.state(savedUser.getFirstName().equals(testUser.getFirstName()),\n\t\t\t\t\"Saved user first name doesn't match\");\n\n\t\tfirstNameUserFlux.collectList().block();\n\n\t\tfinal Optional<User> optionalUserResult = repository.findById(testUser.getId()).blockOptional();\n\t\tAssert.isTrue(optionalUserResult.isPresent(), \"Cannot find user.\");\n\n\t\tfinal User result = optionalUserResult.get();\n\t\tAssert.state(result.getFirstName().equals(testUser.getFirstName()),\n\t\t\t\t\"query result firstName doesn't match!\");\n\t\tAssert.state(result.getLastName().equals(testUser.getLastName()),\n\t\t\t\t\"query result lastName doesn't match!\");\n\t\tLOGGER.info(\"findOne in User collection get result: {}\", result.toString());\n\n\t}\n\n\t@PostConstruct\n\tpublic void setup() {\n\t\t// For this example, remove all of the existing records.\n\t\tthis.repository.deleteAll().block();\n\t}\n}\n----\n\nAutowired UserRepository interface, then can do save, delete and find operations.\n\n\n=== Samples\n\nPlease refer to link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/cosmos[azure-spring-boot-samples] for more details.\n\n\nApart from using the `spring-cloud-azure-starter-data-cosmos` library, you can directly use `azure-spring-data-cosmos` library for more complex scenarios. Please refer to link:https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure-dependencies_{project-version}/sdk/cosmos/azure-spring-data-cosmos[Spring Data for Azure Cosmos DB] for more details.\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-integration-support.adoc",
    "content": "== Spring Integration Support\n\nSpring Integration Extension for Azure provides Spring Integration adapters for the various services provided by the https://github.com/Azure/azure-sdk-for-java/[Azure SDK for Java]. We provide Spring Integration support for these Azure services: Event Hubs, Service Bus, Storage Queue. The following is a list of supported adapters:\n\n* spring-cloud-azure-starter-integration-eventhubs\n* spring-cloud-azure-starter-integration-servicebus\n* spring-cloud-azure-starter-integration-storage-queue\n\n=== Spring Integration with Azure Event Hubs\n\n==== Key Concepts\nAzure Event Hubs is a big data streaming platform and event ingestion service. It can receive and process millions of events per second. Data sent to an event hub can be transformed and stored by using any real-time analytics provider or batching/storage adapters.\n\nSpring Integration enables lightweight messaging within Spring-based applications and supports integration with external systems via declarative adapters. Those adapters provide a higher-level of abstraction over Spring’s support for remoting, messaging, and scheduling. The *Spring Integration for Event Hubs* extension project provides inbound and outbound channel adapters and gateways for Azure Event Hubs.\n\nNOTE: RxJava support APIs are dropped from version 4.0.0.\nSee Javadoc for details.\n\n===== Consumer Group\n\nEvent Hubs provides similar support of consumer group as Apache Kafka, but with slight different logic. While Kafka\nstores all committed offsets in the broker, you have to store offsets of Event Hubs messages\nbeing processed manually. Event Hubs SDK provides the function to store such offsets inside Azure Storage.\n\n===== Partitioning Support\n\nEvent Hubs provides a similar concept of physical partition as Kafka. But unlike Kafka's auto re-balancing between consumers and partitions, Event Hubs provides a kind of preemptive mode. The storage account acts as a lease to determine which partition is owned by which consumer. When a new consumer starts, it will try to steal some partitions\nfrom most heavy-loaded consumers to achieve the workload balancing.\n\nTo specify the load balancing strategy, developers can use `EventHubsContainerProperties` for the configuration. See <<receive-from-eh, the following section>> for an example of how to configure `EventHubsContainerProperties`.\n\n===== Batch Consumer Support\nThe `EventHubsInboundChannelAdapter` supports the batch-consuming mode. To enable it, users can specify the listener mode as `ListenerMode.BATCH` when constructing an `EventHubsInboundChannelAdapter` instance.\nWhen enabled, an **Message** of which the payload is a list of batched events will be received and passed to the downstream channel. Each message header is also converted as a list, of which the content is the associated header value parsed from each event. For the communal headers of partition id, checkpointer and last enqueued properties, they are presented as a single value for the entire batch of events shares the same one. See <<si-eh-headers, Event Hubs Message Headers>> for more details.\n\nNOTE: The checkpoint header only exists when **MANUAL** checkpoint mode is used.\n\nCheckpointing of batch consumer supports two modes: `BATCH` and `MANUAL`. `BATCH` mode is an auto checkpointing mode to checkpoint the entire batch of events together once they are received. `MANUAL` mode is to checkpoint the events by users. When used, the\n**Checkpointer** will be passed into the message header, and users could use it to do checkpointing.\n\nThe batch consuming policy can be specified by properties of `max-size` and `max-wait-time`, where `max-size` is a necessary property while `max-wait-time` is optional.\nTo specify the batch consuming strategy, developers can use `EventHubsContainerProperties` for the configuration. See <<receive-from-eh, the following section>> for an example of how to configure `EventHubsContainerProperties`.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-integration-eventhubs</artifactId>\n</dependency>\n----\n\n==== Configuration\n\nThis starter provides the following 3 parts of configuration options:\n\n===== Connection Configuration Properties\nThis section contains the configuration options used for connecting to Azure Event Hubs.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Connection configurable properties of spring-cloud-azure-starter-integration-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.eventhubs*.enabled\n| boolean\n| Whether an Azure Event Hubs is enabled.\n\n|*spring.cloud.azure.eventhubs*.connection-string\n| String\n| Event Hubs Namespace connection string value.\n\n|*spring.cloud.azure.eventhubs*.namespace\n| String\n| Event Hubs Namespace value, which is the prefix of the FQDN. A FQDN should be composed of <NamespaceName>.<DomainName>\n\n|*spring.cloud.azure.eventhubs*.domain-name\n| String\n| Domain name of an Azure Event Hubs Namespace value.\n\n|*spring.cloud.azure.eventhubs*.custom-endpoint-address\n| String\n| Custom Endpoint address.\n\n|*spring.cloud.azure.eventhubs*.shared-connection\n| Boolean\n| Whether the underlying EventProcessorClient and EventHubProducerAsyncClient use the same connection. By\ndefault, a new connection is constructed and used created for each Event Hub client created.\n\n|===\n\n===== Checkpoint Configuration Properties\nThis section contains the configuration options for the Storage Blobs service, which is used for persisting partition ownership and checkpoint information.\n\nNOTE: From version 4.0.0, when the property of **spring.cloud.azure.eventhubs.processor.checkpoint-store.create-container-if-not-exists** is not enabled manually, no Storage container will be created automatically.\n\n.Checkpointing configurable properties of spring-cloud-azure-starter-integration-eventhubs\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.create-container-if-not-exists\n|Boolean\n|Whether to allow creating containers if not exists.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.account-name\n| String\n| Name for the storage account.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.account-key\n| String\n| Storage account access key.\n\n|*spring.cloud.azure.eventhubs.processor.checkpoint-store*.container-name\n| String\n| Storage container name.\n|===\n\nCommon Azure Service SDK configuration options are configurable for Storage Blob checkpoint store as well. The supported configuration options are introduced in link:configuration.html[the Configuration page], and could be configured with either the unified prefix `spring.cloud.azure.` or the prefix of `spring.cloud.azure.eventhubs.processor.checkpoint-store`.\n\n===== Event Hub Processor Configuration Properties\n\nThe `EventHubsInboundChannelAdapter` uses the `EventProcessorClient` to consume messages from an event hub, to configure the overall properties of an `EventProcessorClient`,\ndevelopers can use `EventHubsContainerProperties` for the configuration. See <<receive-from-eh, the following section>> about how to work with `EventHubsInboundChannelAdapter`.\n\n==== Basic Usage\n===== Send messages to Azure Event Hubs\nStep 1. Fill the credential configuration options.\n\n* For credentials as connection string, configure the following properties in `application.yml`:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      eventhubs:\n        connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING}\n        processor:\n          checkpoint-store:\n            container-name: ${CHECKPOINT-CONTAINER}\n            account-name: ${CHECKPOINT-STORAGE-ACCOUNT}\n            account-key: ${CHECKPOINT-ACCESS-KEY}\n----\n\n* For credentials as managed identities, configure the following properties in `application.yml`:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_CLIENT_ID}\n      eventhubs:\n        namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n        processor:\n          checkpoint-store:\n            container-name: ${CONTAINER_NAME}\n            account-name: ${ACCOUNT_NAME}\n----\n\n* For credentials as service principal, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      eventhubs:\n        namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n        processor:\n          checkpoint-store:\n            container-name: ${CONTAINER_NAME}\n            account-name: ${ACCOUNT_NAME}\n----\n\nStep 2. Create `DefaultMessageHandler` with the bean of `EventHubsTemplate` to send messages to Event Hubs.\n[source,java]\n----\nclass Demo {\n    private static final String OUTPUT_CHANNEL = \"output\";\n    private static final String EVENTHUB_NAME = \"eh1\";\n\n    @Bean\n    @ServiceActivator(inputChannel = OUTPUT_CHANNEL)\n    public MessageHandler messageSender(EventHubsTemplate eventHubsTemplate) {\n        DefaultMessageHandler handler = new DefaultMessageHandler(EVENTHUB_NAME, eventHubsTemplate);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.error(\"There was an error sending the message.\", ex);\n            }\n        });\n        return handler;\n    }\n}\n----\n\nStep 3. Create a message gateway binding with the above message handler via a message channel.\n[source,java]\n----\nclass Demo {\n    @Autowired\n    EventHubOutboundGateway messagingGateway;\n\n    @MessagingGateway(defaultRequestChannel = OUTPUT_CHANNEL)\n    public interface EventHubOutboundGateway {\n        void send(String text);\n    }\n}\n----\nStep 4. Send messages using the gateway.\n[source,java]\n----\nclass Demo {\n    public void demo() {\n        this.messagingGateway.send(message);\n    }\n}\n----\n\n[#receive-from-eh]\n===== Receive Messages from Azure Event Hubs\nStep 1. Fill the credential configuration options.\n\nStep 2. Create a bean of message channel as the input channel.\n[source,java]\n----\n@Configuration\nclass Demo {\n    @Bean\n    public MessageChannel input() {\n        return new DirectChannel();\n    }\n}\n----\n\nStep 3. Create `EventHubsInboundChannelAdapter` with the bean of `EventHubsMessageListenerContainer` to receive messages from Event Hubs.\n\n[source,java]\n----\n@Configuration\nclass Demo {\n    private static final String INPUT_CHANNEL = \"input\";\n    private static final String EVENTHUB_NAME = \"eh1\";\n    private static final String CONSUMER_GROUP = \"$Default\";\n\n    @Bean\n    public EventHubsInboundChannelAdapter messageChannelAdapter(\n            @Qualifier(INPUT_CHANNEL) MessageChannel inputChannel,\n            EventHubsMessageListenerContainer listenerContainer) {\n        EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(processorContainer);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n\n    @Bean\n    public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) {\n        EventHubsContainerProperties containerProperties = new EventHubsContainerProperties();\n        containerProperties.setEventHubName(EVENTHUB_NAME);\n        containerProperties.setConsumerGroup(CONSUMER_GROUP);\n        containerProperties.setCheckpointConfig(new CheckpointConfig(CheckpointMode.MANUAL));\n        return new EventHubsMessageListenerContainer(processorFactory, containerProperties);\n    }\n}\n----\n\nStep 4. Create a message receiver binding with EventHubsInboundChannelAdapter via the message channel created before.\n[source,java]\n----\nclass Demo {\n    @ServiceActivator(inputChannel = INPUT_CHANNEL)\n    public void messageReceiver(byte[] payload, @Header(AzureHeaders.CHECKPOINTER) Checkpointer checkpointer) {\n        String message = new String(payload);\n        LOGGER.info(\"New message received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(s -> LOGGER.info(\"Message '{}' successfully checkpointed\", message))\n                .doOnError(e -> LOGGER.error(\"Error found\", e))\n                .block();\n    }\n}\n----\n\n===== Configure EventHubsMessageConverter to Customize ObjectMapper\n`EventHubsMessageConverter` is made as a configurable bean to allow users to customize ObjectMapper.\n\n[#si-eh-batch]\n===== Batch Consumer Support\nTo consume messages from Event Hubs in batches is similar with the above sample, besides users should set the batch-consuming related configuration options for `EventHubsInboundChannelAdapter`.\n\nWhen create `EventHubsInboundChannelAdapter`, the listener mode should be set as `BATCH`. When create bean of `EventHubsMessageListenerContainer`, set the checkpoint mode as either `MANUAL` or `BATCH`, and the batch options can be configured as needed.\n\n[source,java]\n----\n@Configuration\nclass Demo {\n    private static final String INPUT_CHANNEL = \"input\";\n    private static final String EVENTHUB_NAME = \"eh1\";\n    private static final String CONSUMER_GROUP = \"$Default\";\n\n    @Bean\n    public EventHubsInboundChannelAdapter messageChannelAdapter(\n            @Qualifier(INPUT_CHANNEL) MessageChannel inputChannel,\n            EventHubsMessageListenerContainer listenerContainer) {\n        EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(processorContainer, ListenerMode.BATCH);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n\n    @Bean\n    public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) {\n        EventHubsContainerProperties containerProperties = new EventHubsContainerProperties();\n        containerProperties.setEventHubName(EVENTHUB_NAME);\n        containerProperties.setConsumerGroup(CONSUMER_GROUP);\n        containerProperties.getBatch().setMaxSize(100);\n        containerProperties.setCheckpointConfig(new CheckpointConfig(CheckpointMode.MANUAL));\n        return new EventHubsMessageListenerContainer(processorFactory, containerProperties);\n    }\n}\n----\n\n[#si-eh-headers]\n===== Event Hubs Message Headers\n\nThe following table illustrates how Event Hubs message properties are mapped to Spring message headers. For Azure Event Hubs, message is called as `event`.\n\n.Mapping between Event Hubs Message / Event Properties and Spring Message Headers in Record Listener Mode\n[cols=\"<,<,<,<\", options=\"header\"]\n|===\n|Event Hubs Event Properties | Spring Message Header Constants | Type | Description\n\n|Enqueued time\n| EventHubsHeaders#ENQUEUED_TIME\n|Instant\n|The instant, in UTC, of when the event was enqueued in the Event Hub partition.\n\n|Offset\n|EventHubsHeaders#OFFSET\n|Long\n|The offset of the event when it was received from the associated Event Hub partition.\n\n|Partition key\n|AzureHeaders#PARTITION_KEY\n|String\n|The partition hashing key if it was set when originally publishing the event.\n\n|Partition id\n|AzureHeaders#RAW_PARTITION_ID\n|String\n|The partition id of the Event Hub.\n\n|Sequence number\n|EventHubsHeaders#SEQUENCE_NUMBER\n|Long\n|The sequence number assigned to the event when it was enqueued in the associated Event Hub partition.\n\n|Last enqueued event properties\n|EventHubsHeaders#LAST_ENQUEUED_EVENT_PROPERTIES\n|LastEnqueuedEventProperties\n|The properties of the last enqueued event in this partition.\n\n|NA\n|AzureHeaders#CHECKPOINTER\n|Checkpointer\n|The header for checkpoint the specific message.\n|===\n\nUsers can parse the message headers for the related information of each event. To set a message header for the event, all customized headers will be put as an application property of an event, where the header is set as the property key. When events are received from Event Hubs, all application properties will be converted to the message header.\n\nNOTE: Message headers of partition key, enqueued time, offset and sequence number is not supported to be set manually.\n\nWhen the batch-consumer mode is enabled, the specific headers of batched messages are listed the following, which contains a list of values from each single Event Hubs event.\n\n.Mapping between Event Hubs Message / Event Properties and Spring Message Headers in Batch Listener Mode\n[cols=\"<,<,<,<\", options=\"header\"]\n|===\n|Event Hubs Event Properties | Spring Batch Message Header Constants | Type | Description\n\n|Enqueued time\n|EventHubsHeaders#ENQUEUED_TIME\n|List of Instant\n|List of the instant, in UTC, of when each event was enqueued in the Event Hub partition.\n\n|Offset\n|EventHubsHeaders#OFFSET\n|List of Long\n|List of the offset of each event when it was received from the associated Event Hub partition.\n\n|Partition key\n|AzureHeaders#PARTITION_KEY\n|List of String\n|List of the partition hashing key if it was set when originally publishing each event.\n\n|Sequence number\n|EventHubsHeaders#SEQUENCE_NUMBER\n|List of Long\n|List of the sequence number assigned to each event when it was enqueued in the associated Event Hub partition.\n\n|System properties\n|EventHubsHeaders#BATCH_CONVERTED_SYSTEM_PROPERTIES\n|List of Map\n|List of the system properties of each event.\n\n|Application properties\n|EventHubsHeaders#BATCH_CONVERTED_APPLICATION_PROPERTIES\n|List of Map\n|List of the application properties of each event, where all customized message headers or event properties are placed.\n|===\n\nNOTE: When publish messages, all the above batch headers will be removed from the messages if exist.\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration[azure-spring-boot-samples] for more details.\n\n=== Spring Integration with Azure Service Bus\n\n==== Key Concepts\nSpring Integration enables lightweight messaging within Spring-based applications and supports integration with external systems via declarative adapters.\n\nThe Spring Integration for Azure Service Bus extension project provides inbound and outbound channel adapters for Azure Service Bus.\n\nNOTE: CompletableFuture support APIs have been deprecated from version 2.10.0, and is replaced by Reactor Core from version 4.0.0.\nSee Javadoc for details.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-integration-servicebus</artifactId>\n</dependency>\n----\n\n==== Configuration\n\nThis starter provides the following 2 parts of configuration options:\n\n===== Connection Configuration Properties\n\nThis section contains the configuration options used for connecting to Azure Service Bus.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Connection configurable properties of spring-cloud-azure-starter-integration-servicebus\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.servicebus*.enabled\n| boolean\n| Whether an Azure Service Bus is enabled.\n\n|*spring.cloud.azure.servicebus*.connection-string\n| String\n| Service Bus Namespace connection string value.\n\n|*spring.cloud.azure.servicebus*.namespace\n| String\n| Service Bus Namespace value, which is the prefix of the FQDN. A FQDN should be composed of <NamespaceName>.<DomainName>\n\n|*spring.cloud.azure.servicebus*.domain-name\n| String\n| Domain name of an Azure Service Bus Namespace value.\n\n|===\n\n===== Service Bus Processor Configuration Properties\n\nThe `ServiceBusInboundChannelAdapter` uses the `ServiceBusProcessorClient` to consume messages, to configure the overall properties of an `ServiceBusProcessorClient`,\ndevelopers can use `ServiceBusContainerProperties` for the configuration. See <<receive-from-sb, the following section>> about how to work with `ServiceBusInboundChannelAdapter`.\n\n==== Basic Usage\n===== Send Messages to Azure Service Bus\nStep 1. Fill the credential configuration options.\n\n* For credentials as connection string, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      servicebus:\n        connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING}\n----\n\n* For credentials as managed identities, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_CLIENT_ID}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      servicebus:\n        namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n----\n\n* For credentials as service principal, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      servicebus:\n        namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n----\n\nStep 2. Create `DefaultMessageHandler` with the bean of `ServiceBusTemplate` to send messages to Service Bus,\nset the entity type for the ServiceBusTemplate. This sample takes Service Bus Queue as example.\n[source,java]\n----\nclass Demo {\n    private static final String OUTPUT_CHANNEL = \"queue.output\";\n\n    @Bean\n    @ServiceActivator(inputChannel = OUTPUT_CHANNEL)\n    public MessageHandler queueMessageSender(ServiceBusTemplate serviceBusTemplate) {\n        serviceBusTemplate.setDefaultEntityType(ServiceBusEntityType.QUEUE);\n        DefaultMessageHandler handler = new DefaultMessageHandler(QUEUE_NAME, serviceBusTemplate);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.info(\"There was an error sending the message.\");\n            }\n        });\n\n        return handler;\n    }\n}\n----\n\nStep 3. Create a message gateway binding with the above message handler via a message channel.\n[source,java]\n----\nclass Demo {\n    @Autowired\n    QueueOutboundGateway messagingGateway;\n\n    @MessagingGateway(defaultRequestChannel = OUTPUT_CHANNEL)\n    public interface QueueOutboundGateway {\n        void send(String text);\n    }\n}\n----\n\nStep 4. Send messages using the gateway.\n[source,java]\n----\nclass Demo {\n    public void demo() {\n        this.messagingGateway.send(message);\n    }\n}\n----\n\n[#receive-from-sb]\n===== Receive Messages from Azure Service Bus\nStep 1. Fill the credential configuration options.\n\nStep 2. Create a bean of message channel as the input channel.\n[source,java]\n----\n@Configuration\nclass Demo {\n    private static final String INPUT_CHANNEL = \"input\";\n\n    @Bean\n    public MessageChannel input() {\n        return new DirectChannel();\n    }\n}\n----\n\nStep 3. Create `ServiceBusInboundChannelAdapter` with the bean of `ServiceBusMessageListenerContainer` to receive messages to Service Bus. This sample takes Service Bus Queue as example.\n[source,java]\n----\n@Configuration\nclass Demo {\n    private static final String QUEUE_NAME = \"queue1\";\n\n    @Bean\n    public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) {\n        ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties();\n        containerProperties.setEntityName(QUEUE_NAME);\n        containerProperties.setAutoComplete(false);\n        return new ServiceBusMessageListenerContainer(processorFactory, containerProperties);\n    }\n\n    @Bean\n    public ServiceBusInboundChannelAdapter queueMessageChannelAdapter(\n        @Qualifier(INPUT_CHANNEL) MessageChannel inputChannel,\n        ServiceBusMessageListenerContainer listenerContainer) {\n        ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer);\n        adapter.setOutputChannel(inputChannel);\n        return adapter;\n    }\n}\n----\n\nStep 4. Create a message receiver binding with ServiceBusInboundChannelAdapter via the message channel we created before.\n[source,java]\n----\nclass Demo {\n    @ServiceActivator(inputChannel = INPUT_CHANNEL)\n    public void messageReceiver(byte[] payload, @Header(AzureHeaders.CHECKPOINTER) Checkpointer checkpointer) {\n        String message = new String(payload);\n        LOGGER.info(\"New message received: '{}'\", message);\n        checkpointer.success()\n                .doOnSuccess(s -> LOGGER.info(\"Message '{}' successfully checkpointed\", message))\n                .doOnError(e -> LOGGER.error(\"Error found\", e))\n                .block();\n    }\n}\n----\n\n===== Configure ServiceBusMessageConverter to Customize ObjectMapper\n`ServiceBusMessageConverter` is made as a configurable bean to allow users to customize ObjectMapper.\n\n[#si-sb-headers]\n===== Service Bus Message Headers\nFor some Service Bus headers that can be mapped to multiple Spring header constants, the priority of different Spring headers is listed.\n\n.Mapping between Service Bus Headers and Spring Headers\n[cols=\"<,<,<,<,<\", options=\"header\"]\n|===\n|Service Bus Message Headers and Properties | Spring Message Header Constants | Type | Configurable | Description\n\n| Content type\n| MessageHeaders#CONTENT_TYPE\n| String\n| Yes\n| The RFC2045 Content-Type descriptor of the message.\n\n| Correlation id\n| ServiceBusMessageHeaders#CORRELATION_ID\n| String\n| Yes\n| The correlation id of the message\n\n| Message id\n| ServiceBusMessageHeaders#MESSAGE_ID\n| String\n| Yes\n| The message id of the message, this header has higher priority than `MessageHeaders#ID`.\n\n| Message id\n| MessageHeaders#ID\n| UUID\n| Yes\n| The message id of the message, this header has lower priority than `ServiceBusMessageHeaders#MESSAGE_ID`.\n\n| Partition key\n| ServiceBusMessageHeaders#PARTITION_KEY\n| String\n| Yes\n| The partition key for sending the message to a partitioned entity.\n\n| Reply to\n| MessageHeaders#REPLY_CHANNEL\n| String\n| Yes\n| The address of an entity to send replies to.\n\n| Reply to session id\n| ServiceBusMessageHeaders#REPLY_TO_SESSION_ID\n| String\n| Yes\n| The ReplyToGroupId property value of the message.\n\n| Scheduled enqueue time utc\n| ServiceBusMessageHeaders#SCHEDULED_ENQUEUE_TIME\n| OffsetDateTime\n| Yes\n| The datetime at which the message should be enqueued in Service Bus, this header has higher priority than `AzureHeaders#SCHEDULED_ENQUEUE_MESSAGE`.\n\n| Scheduled enqueue time utc\n| AzureHeaders#SCHEDULED_ENQUEUE_MESSAGE\n| Integer\n| Yes\n| The datetime at which the message should be enqueued in Service Bus, this header has lower priority than `ServiceBusMessageHeaders#SCHEDULED_ENQUEUE_TIME`.\n\n| Session id\n| ServiceBusMessageHeaders#SESSION_ID\n| String\n| Yes\n| The session identifier for a session-aware entity.\n\n| Time to live\n| ServiceBusMessageHeaders#TIME_TO_LIVE\n| Duration\n| Yes\n| The duration of time before this message expires.\n\n| To\n| ServiceBusMessageHeaders#TO\n| String\n| Yes\n| The \"to\" address of the message, reserved for future use in routing scenarios and presently ignored by the broker itself.\n\n| Subject\n| ServiceBusMessageHeaders#SUBJECT\n| String\n| Yes\n| The subject for the message.\n\n| Dead letter error description\n| ServiceBusMessageHeaders#DEAD_LETTER_ERROR_DESCRIPTION\n| String\n| No\n| The description for a message that has been dead-lettered.\n\n| Dead letter reason\n| ServiceBusMessageHeaders#DEAD_LETTER_REASON\n| String\n| No\n| The reason a message was dead-lettered.\n\n| Dead letter source\n| ServiceBusMessageHeaders#DEAD_LETTER_SOURCE\n| String\n| No\n| The entity in which the message was dead-lettered.\n\n| Delivery count\n| ServiceBusMessageHeaders#DELIVERY_COUNT\n| long\n| No\n| The number of the times this message was delivered to clients.\n\n| Enqueued sequence number\n| ServiceBusMessageHeaders#ENQUEUED_SEQUENCE_NUMBER\n| long\n| No\n| The enqueued sequence number assigned to a message by Service Bus.\n\n| Enqueued time\n| ServiceBusMessageHeaders#ENQUEUED_TIME\n| OffsetDateTime\n| No\n| The datetime at which this message was enqueued in Service Bus.\n\n| Expires at\n| ServiceBusMessageHeaders#EXPIRES_AT\n| OffsetDateTime\n| No\n| The datetime at which this message will expire.\n\n| Lock token\n| ServiceBusMessageHeaders#LOCK_TOKEN\n| String\n| No\n| The lock token for the current message.\n\n| Locked until\n| ServiceBusMessageHeaders#LOCKED_UNTIL\n| OffsetDateTime\n| No\n| The datetime at which the lock of this message expires.\n\n| Sequence number\n| ServiceBusMessageHeaders#SEQUENCE_NUMBER\n| long\n| No\n| The unique number assigned to a message by Service Bus.\n\n| State\n| ServiceBusMessageHeaders#STATE\n| ServiceBusMessageState\n| No\n| The state of the message, which can be Active, Deferred, or Scheduled.\n|===\n\n===== Partition Key Support\nThis starter supports link:https://docs.microsoft.com/azure/service-bus-messaging/service-bus-partitioning[Service Bus partitioning] by allowing setting partition key and session id in the message header. This section introduces how to set partition key for messages.\n\n_Recommended:_ Use `ServiceBusMessageHeaders.PARTITION_KEY` as the key of the header.\n\n[source,java]\n----\npublic class SampleController {\n    @PostMapping(\"/messages\")\n    public ResponseEntity<String> sendMessage(@RequestParam String message) {\n        LOGGER.info(\"Going to add message {} to Sinks.Many.\", message);\n        many.emitNext(MessageBuilder.withPayload(message)\n                                    .setHeader(ServiceBusMessageHeaders.PARTITION_KEY, \"Customize partition key\")\n                                    .build(), Sinks.EmitFailureHandler.FAIL_FAST);\n        return ResponseEntity.ok(\"Sent!\");\n    }\n}\n----\n\n_Not recommended but currently supported:_ `AzureHeaders.PARTITION_KEY` as the key of the header.\n\n[source,java]\n----\npublic class SampleController {\n    @PostMapping(\"/messages\")\n    public ResponseEntity<String> sendMessage(@RequestParam String message) {\n        LOGGER.info(\"Going to add message {} to Sinks.Many.\", message);\n        many.emitNext(MessageBuilder.withPayload(message)\n                                    .setHeader(AzureHeaders.PARTITION_KEY, \"Customize partition key\")\n                                    .build(), Sinks.EmitFailureHandler.FAIL_FAST);\n        return ResponseEntity.ok(\"Sent!\");\n    }\n}\n----\n\nNOTE: When both `ServiceBusMessageHeaders.PARTITION_KEY` and `AzureHeaders.PARTITION_KEY` are set in the message headers,\n`ServiceBusMessageHeaders.PARTITION_KEY` is preferred.\n\n===== Session Support\n\nThis example demonstrates how to manually set the session id of a message in the application.\n\n[source,java]\n----\npublic class SampleController {\n    @PostMapping(\"/messages\")\n    public ResponseEntity<String> sendMessage(@RequestParam String message) {\n        LOGGER.info(\"Going to add message {} to Sinks.Many.\", message);\n        many.emitNext(MessageBuilder.withPayload(message)\n                                    .setHeader(ServiceBusMessageHeaders.SESSION_ID, \"Customize session id\")\n                                    .build(), Sinks.EmitFailureHandler.FAIL_FAST);\n        return ResponseEntity.ok(\"Sent!\");\n    }\n}\n----\n\nNOTE: When the `ServiceBusMessageHeaders.SESSION_ID` is set in the message headers, and a different `ServiceBusMessageHeaders.PARTITION_KEY` (or `AzureHeaders.PARTITION_KEY`) header is also set,\nthe value of the session id will eventually be used to overwrite the value of the partition key.\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/servicebus/spring-cloud-azure-starter-integration-servicebus[azure-spring-boot-samples] for more details.\n\n=== Spring Integration with Azure Storage Queue\n\n==== Key Concepts\nAzure Queue Storage is a service for storing large numbers of messages. You access messages from anywhere in the world via authenticated calls using HTTP or HTTPS. A queue message can be up to 64 KB in size. A queue may contain millions of messages, up to the total capacity limit of a storage account. Queues are commonly used to create a backlog of work to process asynchronously.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependency>\n\t<groupId>com.azure.spring</groupId>\n\t<artifactId>spring-cloud-azure-starter-integration-storage-queue</artifactId>\n</dependency>\n----\n\n==== Configuration\n\nThis starter provides the following configuration options:\n\n===== Connection Configuration Properties\nThis section contains the configuration options used for connecting to Azure Storage Queue.\n\nNOTE: If you choose to use a security principal to authenticate and authorize with Azure Active Directory for accessing an Azure resource, see link:index.html#authorize-access-with-azure-active-directory[Authorize access with Azure AD] to make sure the security principal has been granted the sufficient permission to access the Azure resource.\n\n.Connection configurable properties of spring-cloud-azure-starter-integration-storage-queue\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Property | Type |Description\n\n|*spring.cloud.azure.storage.queue*.enabled | boolean | Whether an Azure Storage Queue is enabled.\n|*spring.cloud.azure.storage.queue*.connection-string | String | Storage Queue Namespace connection string value.\n|*spring.cloud.azure.storage.queue*.accountName | String | Storage Queue account name.\n|*spring.cloud.azure.storage.queue*.accountKey | String | Storage Queue account key.\n|*spring.cloud.azure.storage.queue*.endpoint | String | Storage Queue service endpoint.\n|*spring.cloud.azure.storage.queue*.sasToken | String | Sas token credential\n|*spring.cloud.azure.storage.queue*.serviceVersion | QueueServiceVersion | QueueServiceVersion that is used when making API requests.\n|*spring.cloud.azure.storage.queue*.messageEncoding | String | Queue message encoding.\n\n|===\n\n==== Basic Usage\n===== Send messages to Azure Storage Queue\nStep 1. Fill the credential configuration options.\n\n** For credentials as connection string, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      storage:\n        queue:\n          connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING}\n----\n\n** For credentials as managed identities, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        managed-identity-enabled: true\n        client-id: ${AZURE_CLIENT_ID}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      storage:\n        queue:\n          namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n----\n\n** For credentials as service principal, configure the following properties in application.yml:\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-secret: ${AZURE_CLIENT_SECRET}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      storage:\n        queue:\n          namespace: ${AZURE_SERVICE_BUS_NAMESPACE}\n----\n\n\nStep 2. Create `DefaultMessageHandler` with the bean of `StorageQueueTemplate` to send messages to Storage Queue.\n[source,java]\n----\nclass Demo {\n    private static final String STORAGE_QUEUE_NAME = \"example\";\n    private static final String OUTPUT_CHANNEL = \"output\";\n\n    @Bean\n    @ServiceActivator(inputChannel = OUTPUT_CHANNEL)\n    public MessageHandler messageSender(StorageQueueTemplate storageQueueTemplate) {\n        DefaultMessageHandler handler = new DefaultMessageHandler(STORAGE_QUEUE_NAME, storageQueueTemplate);\n        handler.setSendCallback(new ListenableFutureCallback<Void>() {\n            @Override\n            public void onSuccess(Void result) {\n                LOGGER.info(\"Message was sent successfully.\");\n            }\n\n            @Override\n            public void onFailure(Throwable ex) {\n                LOGGER.info(\"There was an error sending the message.\");\n            }\n        });\n        return handler;\n    }\n}\n----\n\nStep 3. Create a Message gateway binding with the above message handler via a message channel.\n[source,java]\n----\nclass Demo {\n    @Autowired\n    StorageQueueOutboundGateway storageQueueOutboundGateway;\n\n    @MessagingGateway(defaultRequestChannel = OUTPUT_CHANNEL)\n    public interface StorageQueueOutboundGateway {\n        void send(String text);\n    }\n}\n----\n\nStep 4. Send messages using the gateway.\n[source,java]\n----\nclass Demo {\n    public void demo() {\n        this.storageQueueOutboundGateway.send(message);\n    }\n}\n----\n\n===== Receive Messages from Azure Storage Queue\nStep 1. Fill the credential configuration options.\n\nStep 2. Create a bean of message channel as the input channel.\n[source,java]\n----\nclass Demo {\n    private static final String INPUT_CHANNEL = \"input\";\n\n    @Bean\n    public MessageChannel input() {\n        return new DirectChannel();\n    }\n}\n----\n\nStep 3. Create `StorageQueueMessageSource` with the bean of `StorageQueueTemplate` to receive messages to Storage Queue.\n[source,java]\n----\nclass Demo {\n    private static final String STORAGE_QUEUE_NAME = \"example\";\n\n    @Bean\n    @InboundChannelAdapter(channel = INPUT_CHANNEL, poller = @Poller(fixedDelay = \"1000\"))\n    public StorageQueueMessageSource storageQueueMessageSource(StorageQueueTemplate storageQueueTemplate) {\n        return new StorageQueueMessageSource(STORAGE_QUEUE_NAME, storageQueueTemplate);\n    }\n}\n----\n\nStep 4. Create a message receiver binding with StorageQueueMessageSource created in the last step via the message channel we created before.\n[source,java]\n----\nclass Demo {\n    @ServiceActivator(inputChannel = INPUT_CHANNEL)\n    public void messageReceiver(byte[] payload, @Header(AzureHeaders.CHECKPOINTER) Checkpointer checkpointer) {\n        String message = new String(payload);\n        LOGGER.info(\"New message received: '{}'\", message);\n        checkpointer.success()\n            .doOnError(Throwable::printStackTrace)\n            .doOnSuccess(t -> LOGGER.info(\"Message '{}' successfully checkpointed\", message))\n            .block();\n    }\n}\n----\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/storage/spring-cloud-azure-starter-integration-storage-queue[azure-spring-boot-samples] for more details.\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-jms-support.adoc",
    "content": "[#spring-jms-support]\n== Spring JMS Support\n\nTo use Azure Service Bus by the JMS API integrated into the Spring JMS framework.\nAzure Service Bus connection string have to be provided which is to be parsed into the login username, password and remote URI for the AMQP broker.\n\n=== Dependency Setup\n\nAdding the following dependencies if you want to migrate your Spring JMS application to use Azure Service Bus.\n\n[source,xml]\n----\n<dependency>\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>\n</dependency>\n----\n\n=== Configuration\n\n.Configurable properties when using Spring JMS support\n[cols=\"<50,<50\",options=\"header\"]\n|===\n|Property\n|Description\n\n|*spring.jms.servicebus*.connection-string\n|Azure Service Bus connection string. Should be provided when want to provide the connection string directly.\n\n|*spring.jms.servicebus*.topic-client-id\n|JMS client ID. Only works for the bean of topicJmsListenerContainerFactory.\n\n|*spring.jms.servicebus*.idle-timeout\n| The duration for idle.\n\n|*spring.jms.servicebus*.pricing-tier\n| The Azure Service Bus Price Tier.\n\n|*spring.jms.servicebus*.listener.reply-pub-sub-domain\n| Whether the reply destination type is topic.\n\n|*spring.jms.servicebus*.listener.phase\n| Specify the phase in which this container should be started and stopped.\n\n|*spring.jms.servicebus*.listener.reply-qos-settings\n| Configure the QosSettings to use when sending a reply.\n\n|*spring.jms.servicebus*.listener.subscription-durable\n| Whether to make the subscription durable. Only works for the bean of topicJmsListenerContainerFactory.\n\n|*spring.jms.servicebus*.listener.subscription-shared\n| Whether to make the subscription shared. Only works for the bean of topicJmsListenerContainerFactory.\n\n|*spring.jms.servicebus*.password\n| Login password of the AMQP broker\n\n\n| *spring.jms.servicebus*.pool.block-if-full\n|\n[[jms-servicebus-pool-configuration]] Whether to block when a connection is requested and the pool is full.\n\n|*spring.jms.servicebus*.pool.block-if-full-timeout\n|Blocking period before throwing an exception if the pool is still full.\n\n|*spring.jms.servicebus*.pool.enabled\n|Whether a JmsPoolConnectionFactory should be created, instead of a regularConnectionFactory.\n\n|*spring.jms.servicebus*.pool.idle-timeout\n|Connection idle timeout.\n\n|*spring.jms.servicebus*.pool.max-connections\n|Maximum number of pooled connections.\n\n|*spring.jms.servicebus*.pool.max-sessions-per-connection\n|Maximum number of pooled sessions per connection in the pool.\n\n|*spring.jms.servicebus*.pool.time-between-expiration-check\n|Time to sleep between runs of the idle connection eviction thread.\n\n|*spring.jms.servicebus*.pool.use-anonymous-producers\n|Whether to use only one anonymous \"MessageProducer\" instance.\n\n|*spring.jms.servicebus*.prefetch-policy.all\n| Fallback value for prefetch option in this Service Bus namespace.\n\n|*spring.jms.servicebus*.prefetch-policy.durable-topic-prefetch\n| The number of prefetch for durable topic.\n\n|*spring.jms.servicebus*.prefetch-policy.queue-browser-prefetch\n| The number of prefetch for queue browser.\n\n|*spring.jms.servicebus*.prefetch-policy.queue-prefetch\n| The number of prefetch for queue.\n\n|*spring.jms.servicebus*.prefetch-policy.topic-prefetch\n| The number of prefetch for topic.\n\n|*spring.jms.servicebus*.remote-url\n| URL of the AMQP broker.\n\n|*spring.jms.servicebus*.username\n| Login user of the AMQP broker.\n|===\n\nNOTE: Spring JMS general configuration is omitted for short.\nSee link:https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/jms.html[Spring JMS Document] for more details.\n\n=== Basic Usage\n\n==== Use Service Bus Connection String\n\nThe simplest way to connect to Service Bus for Spring JMS application is with the connection string.\n\nAdd the following properties and you are good to go.\n\n[source,yaml]\n----\nspring:\n  jms:\n    servicebus:\n      connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}\n      pricing-tier: ${PRICING_TIER}\n----\n\nNOTE: The default enabled `ConnectionFactory` is the `CachingConnectionFactory` which adds Session caching as well MessageProducer caching. If you want to activate the connection pooling featured one of JmsPoolConnectionFactory, the property of `spring.jms.servicebus.pool.enabled` should be specified `true`. You can find other pooling configuration options (properties with prefix `spring.jms.servicebus.pool.`) from the above\n<<jms-servicebus-pool-configuration, Configuration>> section.\n\n=== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}[azure-spring-boot-samples] for more details.\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-native-support.adoc",
    "content": "[#spring-native-support]\n\ninclude::_attributes.adoc[]\n\n== Spring Native Support\n\n=== Spring Native\n\nSpring Native provides support for compiling Spring Boot applications to native executables using the {graalvm}[GraalVM] {graalvm-native-docs}[native-image] compiler. The native images will bring many advantages, such as instant startup, instant peak performance, and reduced memory consumption. Some Spring Cloud Azure features can also benefit from the Spring Native support, the goal is that Spring Cloud Azure applications can be built as native images without any code modification. For more information, see the link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#overview[Spring Native documentation].\n\n=== Support\n\nSpring Cloud Azure has been validated against GraalVM and Spring Native, and provides the beta version support. You can try it on your projects if they are using those supported dependencies, and {azure-sdk-java-issues}[raise bugs] or {spring-cloud-azure-native-configuration}[contribute pull requests] if something goes wrong on Spring Cloud Azure. For more information, see the link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#support[Spring Native Support] for more details.\n\n==== Spring Native\n\nSpring Cloud Azure **{project-version}** has been tested against Spring Native `{spring-native-version}` and GraalVM `{graalvm-version}`.\n\n==== Spring Cloud Azure Native\n\nNOTE: Spring Native `{spring-native-version}` has been tested against Spring Cloud Azure Native Configuration `{spring-cloud-azure-native-configuration-version}`.\n\nSpring Cloud Azure provides a dependency `spring-cloud-azure-native-configuration` that is an extension of Spring Native configuration for Spring Cloud Azure libraries. The Spring Native AOT plugin will combine the `spring-native-configuration` and `spring-cloud-azure-native-configuration` to build applications into native executables. You don't need any extra modifications to the code that uses Spring Cloud Azure libraries apart from adding the dependency, which only applies to the code in the Spring Cloud Azure libraries.\n\nThe following features are supported:\n\n* `Azure App Configuration clients auto-configuration`\n* `Azure Event Hubs clients auto-configuration`\n* `Azure Key Vault Certificates clients auto-configuration`\n* `Azure Key Vault Secrets clients auto-configuration`\n* `Azure Storage Blob clients auto-configuration`\n* `Azure Storage File Share clients auto-configuration`\n* `Azure Storage Queue clients auto-configuration`\n* `Spring Integration for Azure Event Hubs`\n* `Spring Integration for Azure Storage Queue`\n\n==== Limitations\n\nThe Spring Cloud Azure support for Spring Native is still in the early stages and continues to be updated. The following features are not yet supported:\n\n* `Azure Cosmos clients auto-configuration`\n* `Azure Service Bus clients auto-configuration`\n* `Spring Data for Azure Cache for Redis`\n* `Spring Data for Azure Cosmos`\n* `Spring Cloud Stream for Azure Event Hubs`\n* `Spring Cloud Stream for Azure Service Bus`\n* `Spring Kafka for Azure Event Hubs`\n* `Spring Integration for Azure Service Bus`\n\nNOTE: Not all the native image options are supported by Spring Native. For more information, see the link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#native-image-options[Native image options] section of the Spring Native documentation.\n\nWARNING: Spring Cloud Azure **{project-version}** is not validated for building native executables based on Gradle Kotlin.\n\n=== Project Setup\n\nThe Spring Cloud Azure applications can enable Spring Native support by following the instructions in the  link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#getting-started[Getting started], section of the Spring Native documentation. The only additional processing required is to add the following dependency to the POM file.\n\nTIP:  The dependency `com.azure.spring:spring-cloud-azure-native-configuration` is not managed in `com.azure.spring:spring-cloud-azure-dependencies`.\n\n[source,xml,indent=2,subs=\"attributes,verbatim\",role=\"primary\"]\n.Maven\n----\n<dependency>\n  <groupId>com.azure.spring</groupId>\n  <artifactId>spring-cloud-azure-native-configuration</artifactId>\n  <version>{spring-cloud-azure-native-configuration-version}</version>\n</dependency>\n----\n[source,groovy,subs=\"attributes,verbatim\",role=\"secondary\"]\n.Gradle Groovy\n----\ndependencies {\n    implementation \"com.azure.spring:spring-cloud-azure-native-configuration:{spring-cloud-azure-native-configuration-version}\"\n}\n----\n\n=== Build the native application\n\nThe following sections describe the two main ways to build a Spring Boot native application with Spring Cloud Azure libraries.\n\n==== Build with Buildpacks\n\nThe native application can be built as follows:\n\n[source,bash,role=\"primary\"]\n.Maven\n----\nmvn spring-boot:build-image\n----\n[source,bash,role=\"secondary\"]\n.Gradle Groovy\n----\ngradle bootBuildImage\n----\n\nFor more information, see the link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#getting-started-buildpacks[Getting started with Buildpacks] section in the Spring Native documentation.\n\n==== Build with Native Build Tools\n\nYou can build the native application by using the following command:\n\n[source,bash,role=\"primary\"]\n.Maven\n----\nmvn -Pnative -DskipTests package\n----\n[source,bash,role=\"secondary\"]\n.Gradle Groovy\n----\ngradle nativeCompile\n----\n\nFor more information, see the link:https://docs.spring.io/spring-native/docs/{spring-native-version}/reference/htmlsingle/#getting-started-native-build-tools[Getting started with Native Build Tools] section of the Spring Native documentation.\n\n=== Run the native application\n\nThe following sections describe the two main ways to run a native executable.\n\nTIP: Assuming the project artifact ID is `spring-cloud-azure-sample` and the project version is `0.0.1-SNAPSHOT`, you can specify the custom image name in one of the following ways:  If you're using link:https://docs.spring.io/spring-boot/docs/{spring-boot-version}/reference/html/container-images.html#container-images.buildpacks[Cloud Native Buildpacks], use the `image`->`name`->`custom-image-name` configuration element in the Spring Boot plugin. If you're using link:{graalvm-native-buildtools}[GraalVM Native Build Tools], use the `imageName`->`custom-image-name` configuration element in the Spring Boot plugin.\n\n==== Run with Buildpacks\n\nTo run the application, you can use `docker` the usual way as shown in the following example:\n\n[source,bash,subs=\"attributes,verbatim\"]\n----\ndocker run --rm -p 8080:8080 spring-cloud-azure-sample:0.0.1-SNAPSHOT\n----\n\n==== Run with Native Build Tools\n\nTo run your application, use the following command:\n\n[source,bash,role=\"primary\"]\n.Build with Maven\n----\ntarget\\spring-cloud-azure-sample\n----\n[source,bash,role=\"secondary\"]\n.Build with Gradle\n----\nbuild\\native\\nativeCompile\\spring-cloud-azure-sample\n----\n\n=== Samples\n\nFor more information, see link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/spring-native/storage-blob-native[storage-blob-native] on GitHub.\n\nHere are other verified samples that support Spring Native. For more information, see link:https://github.com/Azure-Samples/azure-spring-boot-samples#run-samples-based-on-spring-native[Spring Cloud Azure Samples] on GitHub.\n\n.Supported Spring Cloud Azure Samples\n[cols=\"2\", options=\"header\"]\n|===\n|Library Artifact ID                                     |Supported Example Projects\n|spring-cloud-azure-starter-appconfiguration             |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/appconfiguration/spring-cloud-azure-starter-appconfiguration/appconfiguration-client[appconfiguration-client]\n|spring-cloud-azure-starter-eventhubs                    |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/eventhubs/spring-cloud-azure-starter-eventhubs/eventhubs-client[eventhubs-client]\n|spring-cloud-azure-starter-integration-eventhubs        |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/eventhubs/spring-cloud-azure-starter-integration-eventhubs/eventhubs-integration[eventhubs-integration]\n|spring-cloud-azure-starter-integration-storage-queue    |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-integration[storage-queue-integration], link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/storage/spring-cloud-azure-starter-integration-storage-queue/storage-queue-operation[storage-queue-operation]\n|spring-cloud-azure-starter-keyvault-secrets             |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/keyvault/spring-cloud-azure-starter-keyvault-secrets/property-source[property-source], link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/keyvault/spring-cloud-azure-starter-keyvault-secrets/secret-client[secret-client]\n|spring-cloud-azure-starter-storage-blob                 |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/storage/spring-cloud-azure-starter-storage-blob/storage-blob-sample[storage-blob-sample]\n|spring-cloud-azure-starter-storage-file-share           |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/storage/spring-cloud-azure-starter-storage-file-share/storage-file-sample[storage-file-sample]\n|spring-cloud-azure-starter-storage-queue                |link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/storage/spring-cloud-azure-starter-storage-queue/storage-queue-client[storage-queue-client]\n|===\n"
  },
  {
    "path": "docs/src/main/asciidoc/spring-security-support.adoc",
    "content": "== Spring Security Support\n\n=== Spring Security With Azure Active Directory\n\nWhen you are building a web application, identity and access management will always be foundational pieces.\n\nAzure offers a great platform to democratize your application development journey, as it not only offers a cloud-base identity service, but also deep integration with the rest of the Azure ecosystem.\n\nSpring Security has made it easy to secure your Spring based applications with powerful abstractions and extensible interfaces. However, as powerful as the Spring framework can be, it is not tailored to a specific identity provider.\n\nThe `spring-cloud-azure-starter-active-directory` provides the most optimal way to connect your web application to an Azure Active Directory (Azure AD for short) tenant and protect your resource server with Azure AD. It uses the Oauth 2.0 protocol to protect web applications and resource servers.\n\n==== Accessing a Web Application\n\nThis scenario uses https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow[The OAuth 2.0 authorization code grant] flow to log in a user with a Microsoft account.\n\n===== System Diagram\n\nimage:https://user-images.githubusercontent.com/13167207/142617664-f1704adb-db64-49e0-b1b6-078c62b6945b.png[Standalone Web Application]\n\n===== Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app[MS docs about register an application with the Microsoft identity platform].\n2. Create app registration. Get `AZURE_TENANT_ID`, `AZURE_CLIENT_ID` and `AZURE_CLIENT_SECRET`.\n3. Set `redirect URI` to `APPLICATION_BASE_URI/login/oauth2/code/`, for example `http://localhost:8080/login/oauth2/code/`. The tailing `/` is required.\n\n===== Add Required Dependencies\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-client</artifactId>\n    </dependency>\n</dependencies>\n----\n\n===== Add Required Properties\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n----\n\nNow start you application and access your application by browser, then you will be redirected into Microsoft login page.\n\n===== Advanced Usages\n\n====== Add Extra Security Configurations\n[source,java]\n----\n    @EnableWebSecurity\n    @EnableGlobalMethodSecurity(prePostEnabled = true)\n    public class AadOAuth2LoginSecurityConfig extends AadWebSecurityConfigurerAdapter {\n\n        /**\n         * Add configuration logic as needed.\n         */\n        @Override\n        protected void configure(HttpSecurity http) throws Exception {\n            super.configure(http);\n            http.authorizeRequests()\n                    .anyRequest().authenticated();\n            // Do some custom configuration\n        }\n    }\n----\n\n====== Authorize Access by App Roles\n\n* Step 1: Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps[MS docs about Add app roles to your application and receive them in the token].\n2. Create an app role with the following parameters:\n    - Display name: Admin\n    - Allowed member types: Users/Groups\n    - Value: Admin\n    - Do you want to enable this app role: yes\n\nNOTE: If you want to use app role based access control, you can't put group names in `role` claim . Refs: link:https://docs.microsoft.com/azure/active-directory/develop/active-directory-optional-claims#configuring-groups-optional-claims[Configuring groups optional claims].\n\n* Step 2: Protect specific method.\n[source,java]\n----\nclass Demo {\n    @GetMapping(\"Admin\")\n    @ResponseBody\n    @PreAuthorize(\"hasAuthority('APPROLE_Admin')\")\n    public String admin() {\n        return \"Admin message\";\n    }\n}\n----\n\n====== Authorize Access by Group Name Or Group ID\n\n* Step 1: Add related configuration properties.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        user-group:\n          allowed-group-names: group1_name_1, group2_name_2\n          # 1. If allowed-group-ids == all, then all group id will take effect.\n          # 2. If \"all\" is used, we should not configure other group ids.\n          # 3. \"all\" is only supported for allowed-group-ids, not supported for allowed-group-names.\n          allowed-group-ids: group_id_1, group_id_2\n----\n\n* Step 2: Protect specific method.\n[source,java]\n----\n@Controller\npublic class RoleController {\n    @GetMapping(\"group1\")\n    @ResponseBody\n    @PreAuthorize(\"hasRole('ROLE_group1')\")\n    public String group1() {\n        return \"group1 message\";\n    }\n\n    @GetMapping(\"group2\")\n    @ResponseBody\n    @PreAuthorize(\"hasRole('ROLE_group2')\")\n    public String group2() {\n        return \"group2 message\";\n    }\n\n    @GetMapping(\"group1Id\")\n    @ResponseBody\n    @PreAuthorize(\"hasRole('ROLE_<group1-id>')\")\n    public String group1Id() {\n        return \"group1Id message\";\n    }\n\n    @GetMapping(\"group2Id\")\n    @ResponseBody\n    @PreAuthorize(\"hasRole('ROLE_<group2-id>')\")\n    public String group2Id() {\n        return \"group2Id message\";\n    }\n}\n----\n\n====== Use National Azure Instead of Global Azure\n\nNow except global Azure cloud, Azure Active Directory is deployed in the following national clouds:\n\n - Azure Government\n - Azure China 21Vianet\n - Azure Germany\n\nHere is a sample of you want to use Azure China 21Vianet.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        base-uri: https://login.partner.microsoftonline.cn\n        graph-base-uri: https://microsoftgraph.chinacloudapi.cn\n----\n\nYou can refer to these MS doc to get more information from link:https://docs.microsoft.com/en-us/graph/deployments[MS docs about National cloud deployments].\n\n====== Configure Redirect URI Template\n\nDevelopers can customize the redirect-uri.\n\nimage:https://user-images.githubusercontent.com/13167207/149295662-072ca3d5-f9e1-4f25-bb0e-be7bb751e9af.png[redirect-uri]\n\n* Step 1: Add `redirect-uri-template` properties in application.yml.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        redirect-uri-template: ${REDIRECT-URI-TEMPLATE}\n----\n\n* Step 2: Update redirect-uri in Azure portal.\n\nimage:https://user-images.githubusercontent.com/13167207/149296913-a4259df9-e0c3-4e38-8d4e-77ee845de4ad.png[web-application-config-redirect-uri]\n\n* Step 3: Update WebSecurityConfigurerAdapter\n\nAfter we set redirect-uri-template, we need to update `WebSecurityConfigurerAdapter`:\n\n[source,java]\n----\n@EnableWebSecurity\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class AadOAuth2LoginSecurityConfig extends AadWebSecurityConfigurerAdapter {\n    /**\n     * Add configuration logic as needed.\n     */\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        super.configure(http);\n        http.oauth2Login()\n                .loginProcessingUrl(\"${REDIRECT-URI-TEMPLATE}\")\n                .and()\n            .authorizeRequests()\n                .anyRequest().authenticated();\n    }\n}\n----\n\n[#connecting-to-azure-ad-via-proxy]\n====== Connecting to Azure AD via proxy\n\nTo connect Azure AD via proxy, just provide a `RestTemplateCustomizer` bean like this:\n\n[source,java]\n----\n@Configuration\nclass DemoConfiguration {\n    @Bean\n    public RestTemplateCustomizer proxyRestTemplateCustomizer() {\n        return (RestTemplate restTemplate) -> {\n            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_SERVER_HOST, PROXY_SERVER_PORT));\n            SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();\n            requestFactory.setProxy(proxy);\n            restTemplate.setRequestFactory(requestFactory);\n        };\n    }\n}\n----\n\n===== Samples\n\nSample project: link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-web-application[aad-web-application].\n\n\n==== Web Application Accessing Resource Servers\n\n===== System Diagram\n\nimage:https://user-images.githubusercontent.com/13167207/142617853-0526205f-fdef-47f9-ac01-77963f8c34be.png[web-application-visiting-resource-servers.png]\n\n===== Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app[MS docs about register an application with the Microsoft identity platform].\n2. Create app registration. Get `AZURE_TENANT_ID`, `AZURE_CLIENT_ID` and `AZURE_CLIENT_SECRET`.\n3. Set `redirect URI` to `APPLICATION_BASE_URI/login/oauth2/code/`, for example `http://localhost:8080/login/oauth2/code/`. The tailing `/` is required.\n\n===== Add Required Dependencies\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-client</artifactId>\n    </dependency>\n</dependencies>\n----\n\n===== Add Required Properties\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        authorization-clients:\n          graph:\n            scopes: https://graph.microsoft.com/Analytics.Read, email\n----\n\nHere, `graph` is the name of `OAuth2AuthorizedClient`, `scopes` means the scopes need to consent when login.\n\n===== Use OAuth2AuthorizedClient in Your Application\n[source,java]\n----\npublic class Demo {\n    @GetMapping(\"/graph\")\n    @ResponseBody\n    public String graph(\n    @RegisteredOAuth2AuthorizedClient(\"graph\") OAuth2AuthorizedClient graphClient) {\n        // toJsonString() is just a demo.\n        // oAuth2AuthorizedClient contains access_token. We can use this access_token to access resource server.\n        return toJsonString(graphClient);\n    }\n}\n----\n\nNow start you application and access your application by browser, then you will be redirected into Microsoft login page.\n\n===== Advanced Usages\n\n====== Client Credential Flow\n\nThe default flow is link:https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow[authorization code flow], if you want to use link:https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow[client credentials flow], you can configure like this:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        authorization-clients:\n          graph:\n            authorization-grant-type: client_credentials # Change type to client_credentials\n            scopes: https://graph.microsoft.com/Analytics.Read, email\n----\n\n====== Access Multiple Resource Servers\n\nIn one web application, you can access multiple resource server by configuring like this:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        authorization-clients:\n          resource-server-1:\n            scopes: # Scopes for resource-server-1\n          resource-server-2:\n            scopes: # Scopes for resource-server-2\n----\n\nThen you can use OAuth2AuthorizedClient in application like this\n\n[source,java]\n----\npublic class Demo {\n    @GetMapping(\"/resource-server-1\")\n    @ResponseBody\n    public String graph(\n    @RegisteredOAuth2AuthorizedClient(\"resource-server-1\") OAuth2AuthorizedClient client) {\n        return callResourceServer1(client);\n    }\n\n    @GetMapping(\"/resource-server-2\")\n    @ResponseBody\n    public String graph(\n    @RegisteredOAuth2AuthorizedClient(\"resource-server-2\") OAuth2AuthorizedClient client) {\n        return callResourceServer2(client);\n    }\n}\n----\n\n====== Incremental Consent\n\nIn previous sample, all scopes will be consented when customer first login, no matter it's belong to resource-server-1 or resource-server-2. If you don't want to let customer consent all scopes, you can do like this:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        authorization-clients:\n          resource-server-1:\n            scopes: # Scopes for resource-server-1\n          resource-server-2:\n            on-demand: true  # means incremental consent\n            scopes: # Scopes for resource-server-2\n----\n\n===== Samples\n\nSample project: link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-web-application[aad-web-application].\n\n==== Accessing a Resource Server\n\nThis scenario doesn't support login, just protect the server by validating the access token. If the access token is valid, the server serves the request.\n\n===== System Diagram\n\nimage:https://user-images.githubusercontent.com/13167207/142617910-1ee3eb6a-ddc7-4b85-af4e-71344c91b248.png[Standalone resource server usage]\n\n===== Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app[MS docs about register an application with the Microsoft identity platform].\n2. Create app registration. Get `AZURE_CLIENT_ID`.\n3. Read link:https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-expose-web-apis[MS docs about configure an application to expose a web API].\n4. Expose a web API with a scope named `Scope-1`.\n\n===== Add Required Dependencies\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>\n    </dependency>\n</dependencies>\n----\n\n===== Add Required Properties\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n----\n\nNow start your application and access your application's web api.\n\n1. You will get 401 without an access token.\n2. Access your application with an access token, the following claims in access token will be validated:\n  - `iss`: The access token must be issued by Azure AD.\n  - `nbf`: Current time can not before `nbf`.\n  - `exp`: Current time can not after `exp`.\n  - `aud`: If `spring.cloud.azure.active-directory.credential.client-id` or `spring.cloud.azure.active-directory.credential.app-id-uri` configured, the audience must equal to the configured `client-id` or `app-id-uri`. If the 2 properties are not configured, this claim will not be validated.\n\nRefer to link:https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens[MS docs about Microsoft identity platform access tokens] to get more information about access token.\n\n===== Advanced Usages\n\n====== Add Extra Security Configurations\n\n[source,java]\n----\n@EnableWebSecurity\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class AadOAuth2ResourceServerSecurityConfig extends AadResourceServerWebSecurityConfigurerAdapter {\n    /**\n     * Add configuration logic as needed.\n     */\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        super.configure(http);\n        http.authorizeRequests((requests) -> requests.anyRequest().authenticated());\n    }\n}\n----\n\n====== Validate Permission by Scopes\n\n* Step 1: : Create Required Resources in Azure\n    - Read link:https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-expose-web-apis[MS docs about configure an application to expose a web API].\n    - Expose a web API with a scope named `Scope1`.\n\n* Step 2: Protect specific method.\n[source,java]\n----\nclass Demo {\n    @GetMapping(\"scope1\")\n    @ResponseBody\n    @PreAuthorize(\"hasAuthority('SCOPE_Scope1')\")\n    public String scope1() {\n        return \"Congratulations, you can access `scope1` endpoint.\";\n    }\n}\n----\n\nBy doing this, when access `/scope1` endpoint, the following claims in access token will be validated:\n\n  - `scp`: The value must contains `Scope1`.\n\n====== Validate Permission by App Roles\n\n* Step 1: Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps[MS docs about Add app roles to your application and receive them in the token].\n2. Create an app role with the following parameters:\n    - Display name: AppRole1\n    - Allowed member types: Users/Groups\n    - Value: AppRole1\n    - Do you want to enable this app role: yes\n\n* Step 2: Protect specific method.\n[source,java]\n----\nclass Demo {\n    @GetMapping(\"app-role1\")\n    @ResponseBody\n    @PreAuthorize(\"hasAuthority('APPROLE_AppRole1')\")\n    public String appRole1() {\n        return \"Congratulations, you can access `app-role1` endpoint.\";\n    }\n}\n----\n\nBy doing this, when access `/app-role1` endpoint, the following claims in access token will be validated:\n\n  - `roles`: The value must contains `AppRole1`.\n\n====== Use JWT Client Authentication\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-microsoft-identity-platform[MS docs about Register your certificate with Microsoft identity platform].\n2. Upload a *.pem* certificate to application registered in Azure Portal.\n3. Configure certificate path and password of a **.PFX* or **.P12* certificate.\n4. Add property `spring.cloud.azure.active-directory.authorization-clients.azure.client-authentication-method=private_key_jwt` configuration to client that wants to be authenticated through JWT Client Authentication.\n\nBelow is an example configuration file for a Web Application scenario, certificate information is configured in global properties:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      credential:\n        client-id: ${AZURE_CLIENT_ID}\n        client-certificate-path: ${AZURE_CERTIFICATE_PATH}\n        client-certificate-password: ${AZURE_CERTIFICATE_PASSWORD}\n      profile:\n        tenant-id: ${AZURE_TENANT_ID}\n      active-directory:\n        enabled: true\n        user-group:\n          allowed-group-names: group1,group2\n          allowed-group-ids: <group1-id>,<group2-id>\n        post-logout-redirect-uri: http://localhost:8080\n        authorization-clients:\n          azure:\n            client-authentication-method: private_key_jwt\n          arm:\n            client-authentication-method: private_key_jwt\n            on-demand: true\n            scopes: https://management.core.windows.net/user_impersonation\n          graph:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - https://graph.microsoft.com/User.Read\n              - https://graph.microsoft.com/Directory.Read.All\n          webapiA:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - ${WEB_API_A_APP_ID_URL}/Obo.WebApiA.ExampleScope\n          webapiB:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - ${WEB_API_B_APP_ID_URL}/.default\n            authorization-grant-type: client_credentials\n----\n\nThe certificate information can also be configured in `active-directory` service properties:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        enabled: true\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-certificate-path: ${AZURE_CERTIFICATE_PATH}\n          client-certificate-password: ${AZURE_CERTIFICATE_PASSWORD}\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        user-group:\n          allowed-group-names: group1,group2\n          allowed-group-ids: <group1-id>,<group2-id>\n        post-logout-redirect-uri: http://localhost:8080\n        authorization-clients:\n          azure:\n            client-authentication-method: private_key_jwt\n          arm:\n            client-authentication-method: private_key_jwt\n            on-demand: true\n            scopes: https://management.core.windows.net/user_impersonation\n          graph:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - https://graph.microsoft.com/User.Read\n              - https://graph.microsoft.com/Directory.Read.All\n          webapiA:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - ${WEB_API_A_APP_ID_URL}/Obo.WebApiA.ExampleScope\n          webapiB:\n            client-authentication-method: private_key_jwt\n            scopes:\n              - ${WEB_API_B_APP_ID_URL}/.default\n            authorization-grant-type: client_credentials\n----\n\n====== Connecting to Azure AD via proxy\n\nTo connect Azure AD via proxy, you need provide a `RestTemplateCustomizer` bean. For more information, see the link:index.html#connecting-to-azure-ad-via-proxy[Web application connecting to Azure AD via proxy] section.\n\n===== Samples\n\nSample project: link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server[aad-resource-server].\n\n==== Resource Server Visiting Other Resource Servers\n\n===== System Diagram\n\nimage:https://user-images.githubusercontent.com/13167207/142618294-aa546ced-d241-4fbd-97ac-fb06881503b1.png[resource-server-visiting-other-resource-servers.png]\n\n===== Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app[MS docs about register an application with the Microsoft identity platform].\n2. Create app registration. Get `AZURE_TENANT_ID`, `AZURE_CLIENT_ID` and `AZURE_CLIENT_SECRET`.\n\n===== Add Required Dependencies\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-client</artifactId>\n    </dependency>\n</dependencies>\n----\n\n===== Add Required Properties\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        authorization-clients:\n          graph:\n            scopes:\n              - https://graph.microsoft.com/User.Read\n----\n\n===== Use OAuth2AuthorizedClient in Your Application\n\n[source,java]\n----\npublic class SampleController {\n    @GetMapping(\"call-graph\")\n    public String callGraph(@RegisteredOAuth2AuthorizedClient(\"graph\") OAuth2AuthorizedClient graph) {\n        return callMicrosoftGraphMeEndpoint(graph);\n    }\n}\n----\n\n\n===== Samples\n\nSample project: link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory/web-client-access-resource-server/aad-resource-server-obo[aad-resource-server-obo].\n\n\n==== Web Application and Resource Server in One Application\n\n===== Create Required Resources in Azure\n\n1. Read link:https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app[MS docs about register an application with the Microsoft identity platform].\n2. Create app registration. Get `AZURE_TENANT_ID`, `AZURE_CLIENT_ID` and `AZURE_CLIENT_SECRET`.\n\n===== Add Required Dependencies\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-oauth2-client</artifactId>\n    </dependency>\n</dependencies>\n----\n\n===== Add Required Properties\n\nSet property `spring.cloud.azure.active-directory.application-type` to `web_application_and_resource_server`, and specify the authorization type for each authorization client.\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        profile:\n          tenant-id: ${AZURE_TENANT_ID}\n        credential:\n          client-id: ${AZURE_CLIENT_ID}\n          client-secret: ${AZURE_CLIENT_SECRET}\n        app-id-uri: ${WEB_API_ID_URI}\n        application-type: web_application_and_resource_server  # This is required.\n        authorization-clients:\n          graph:\n            authorizationGrantType: authorization_code # This is required.\n            scopes:\n              - https://graph.microsoft.com/User.Read\n              - https://graph.microsoft.com/Directory.Read.All\n----\n\n===== Define SecurityConfigurationAdapter\n\nConfigure multiple HttpSecurity instances, `AadWebApplicationAndResourceServerConfig` contain two security configurations for resource server and web application.\n\n[source,java]\n----\n@EnableWebSecurity\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class AadWebApplicationAndResourceServerConfig {\n\n    @Order(1)\n    @Configuration\n    public static class ApiWebSecurityConfigurationAdapter extends AadResourceServerWebSecurityConfigurerAdapter {\n        protected void configure(HttpSecurity http) throws Exception {\n            super.configure(http);\n            // All the paths that match `/api/**`(configurable) work as `Resource Server`, other paths work as `Web application`.\n            http.antMatcher(\"/api/**\")\n                .authorizeRequests().anyRequest().authenticated();\n        }\n    }\n\n    @Configuration\n    public static class HtmlWebSecurityConfigurerAdapter extends AadWebSecurityConfigurerAdapter {\n\n        @Override\n        protected void configure(HttpSecurity http) throws Exception {\n            super.configure(http);\n            // @formatter:off\n            http.authorizeRequests()\n                    .antMatchers(\"/login\").permitAll()\n                    .anyRequest().authenticated();\n            // @formatter:on\n        }\n    }\n}\n----\n\n==== Configuration\n\n.Configurable properties of spring-cloud-azure-starter-active-directory\n\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Name                                                                                |Default  | Description\n|*spring.cloud.azure.active-directory*.app-id-uri                                    |         | App ID URI which might be used in the \"aud\" claim of an id_token.\n|*spring.cloud.azure.active-directory*.application-type                              |         | Type of the AAD application.\n|*spring.cloud.azure.active-directory*.authenticate-additional-parameters            |         | Add additional parameters to the Authorization URL.\n|*spring.cloud.azure.active-directory*.authorization-clients                         |         | The OAuth2 authorization clients.\n|*spring.cloud.azure.active-directory*.credential.client-id                          |         | Client id to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.active-directory*.credential.client-secret                      |         | Client secret to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.active-directory*.credential.client-certificate-path            |         | Client secret to use when performing service principal authentication with Azure.\n|*spring.cloud.azure.active-directory*.credential.client-certificate-password        |         | Password of the certificate file.\n|*spring.cloud.azure.active-directory*.jwk-set-cache-lifespan                        | `5`     | The lifespan of the cached JWK set before it expires, default is 5 minutes.\n|*spring.cloud.azure.active-directory*.jwk-set-cache-refresh-time                    | `5`     | The refresh time of the cached JWK set before it expires, default is 5 minutes.\n|*spring.cloud.azure.active-directory*.jwt-connect-timeout                           |         | Connection Timeout for the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory*.jwt-read-timeout                              |         | Read Timeout for the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory*.jwt-size-limit                                |         | Size limit in Bytes of the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory*.post-logout-redirect-uri                      |         | The redirect uri after logout.\n|*spring.cloud.azure.active-directory*.profile.cloud-type                            |         | Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_GERMANY, AZURE_US_GOVERNMENT, OTHER.\n|*spring.cloud.azure.active-directory*.profile.environment                           |         | Properties to Azure Active Directory endpoints.\n|*spring.cloud.azure.active-directory*.profile.tenant-id                             |         | Azure Tenant ID.\n|*spring.cloud.azure.active-directory*.redirect-uri-template                         | `{baseUrl}/login/oauth2/code/` | Redirection Endpoint: Used by the authorization server to return responses containing authorization credentials to the client via the resource owner user-agent.\n|*spring.cloud.azure.active-directory*.resource-server.claim-to-authority-prefix-map |         | Configure which claim will be used to build GrantedAuthority, and prefix of the GrantedAuthority's string value. Default value is: \"scp\" -> \"SCOPE_\", \"roles\" -> \"APPROLE_\".\n|*spring.cloud.azure.active-directory*.resource-server.principal-claim-name          |         | Configure which claim in access token be returned in AuthenticatedPrincipal#getName. Default value is \"sub\".\n|*spring.cloud.azure.active-directory*.session-stateless                             | `false` | If true activates the stateless auth filter AadAppRoleStatelessAuthenticationFilter. The default is false which activates AadAuthenticationFilter.\n|*spring.cloud.azure.active-directory*.user-group.allowed-group-ids                  |         | The group ids can be used to construct GrantedAuthority.\n|*spring.cloud.azure.active-directory*.user-group.allowed-group-names                |         | The group names can be used to construct GrantedAuthority.\n|*spring.cloud.azure.active-directory*.user-group.use-transitive-members             | `false` | If \"true\", use \"v1.0/me/transitiveMemberOf\" to get members. Otherwise, use \"v1.0/me/memberOf\".\n|*spring.cloud.azure.active-directory*.user-name-attribute                           |         | Decide which claim to be principal's name.\n|===\n\nHere are some examples about how to use these properties:\n\n===== Application Type\n\nTHe application type can be inferred from the dependencies: spring-security-oauth2-client or spring-security-oauth2-resource-server. If the inferred value is not the value you want, you can specify the application type. Here is the table about valid values and inferred value:\n\n.Application type of spring-cloud-azure-starter-active-directory\n[cols=\"4*\", options=\"header\"]\n|===\n|Has dependency: spring-security-oauth2-client |Has dependency: spring-security-oauth2-resource-server |Valid values of application type |Inferred value\n|Yes |No |`web_application` |`web_application`\n|No |Yes |`resource_server` |`resource_server`\n|Yes |Yes |`web_application`, `resource_server`, `resource_server_with_obo`, `web_application_and_resource_server` |`resource_server_with_obo`\n|===\n\n\n=== Spring Security With Azure Active Directory B2C\n\nAzure Active Directory (Azure AD) B2C is an identity management service that enables you to customize and control how customers sign up, sign in, and manage their profiles when using your applications. Azure AD B2C enables these actions while protecting the identities of your customers at the same time.\n\n==== Dependency Setup\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-starter-active-directory-b2c</artifactId>\n    </dependency>\n</dependencies>\n----\n\n==== Configuration\n\n.Configurable properties of spring-cloud-azure-starter-active-directory-b2c\n[cols=\"<,<,<\", options=\"header\"]\n|===\n|Name |Default | Description\n|*spring.cloud.azure.active-directory.b2c*.app-id-uri |  | App ID URI which might be used in the \"aud\" claim of a token.\n|*spring.cloud.azure.active-directory.b2c*.authenticate-additional-parameters |  | Additional parameters for authentication.\n|*spring.cloud.azure.active-directory.b2c*.authorization-clients |  | Specify client configuration.\n|*spring.cloud.azure.active-directory.b2c*.base-uri |  | AAD B2C endpoint base uri.\n|*spring.cloud.azure.active-directory.b2c*.credential |  | AAD B2C credential information.\n|*spring.cloud.azure.active-directory.b2c*.jwt-connect-timeout |  | Connection Timeout for the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory.b2c*.jwt-read-timeout |  | Read Timeout for the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory.b2c*.jwt-size-limit |  | Size limit in Bytes of the JWKSet Remote URL call.\n|*spring.cloud.azure.active-directory.b2c*.login-flow | `sign-up-or-sign-in` | Specify the primary sign-in flow key.\n|*spring.cloud.azure.active-directory.b2c*.logout-success-url | `http://localhost:8080/login` | Redirect url after logout.\n|*spring.cloud.azure.active-directory.b2c*.profile |  | AAD B2C profile information.\n|*spring.cloud.azure.active-directory.b2c*.reply-url | `{baseUrl}/login/oauth2/code/` | Reply url after get authorization code.\n|*spring.cloud.azure.active-directory.b2c*.user-flows |  | User flows.\n|*spring.cloud.azure.active-directory.b2c*.user-name-attribute-name |  | User name attribute name.\n|===\n\nFor full configurations, check link:appendix.html#migration-guide-for-4-0[the Appendix page].\n\n==== Basic Usage\n\nA `web application` is any web based application that allows user to login with Azure AD, whereas a `resource server` will either accept or deny access after validating access_token obtained from Azure AD. We will cover 4 scenarios in this guide:\n\n. Accessing a web application.\n. Web application accessing resource servers.\n. Accessing a resource server.\n. Resource server accessing other resource servers.\n\nimage:https://user-images.githubusercontent.com/13167207/142620440-f970b572-2646-4f50-9f77-db62d6e965f1.png[B2C Web application &amp; Web Api Overall]\n\n===== Usage 1: Accessing a Web Application\n\nThis scenario uses https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow[The OAuth 2.0 authorization code grant] flow to log in a user with your Azure AD B2C user.\n\n* Step 1: Select *Azure AD B2C* from the portal menu, click *Applications*, and then click *Add*.\n\n* Step 2: Specify your application *Name*, we call it `webapp`, add `http://localhost:8080/login/oauth2/code/` for the *Reply URL*, record the\n *Application ID* as your `WEB_APP_AZURE_CLIENT_ID` and then click *Save*.\n\n* Step 3: Select *Keys* from your application, click *Generate key* to generate `WEB_APP_AZURE_CLIENT_SECRET` and then *Save*.\n\n* Step 4: Select *User flows* on your left, and then Click *New user flow*.\n\n* Step 5: Choose *Sign up or in*, *Profile editing* and *Password reset* to create user flows\n respectively. Specify your user flow *Name* and *User attributes and claims*, click *Create*.\n\n* Step 6: Select *API permissions* &gt; *Add a permission* &gt; *Microsoft APIs*, select *_Microsoft Graph_*,\n select *Delegated permissions*, check *offline_access* and *openid* permissions, select *Add permission* to complete the process.\n\n* Step 7: Grant admin consent for *_Graph_* permissions.\n image:https://user-images.githubusercontent.com/13167207/142620491-8c8a82ea-c920-43a8-aa0a-dd028f1b8553.png[Add Graph permissions]\n\n* Step 8: Add the following dependencies in your _pom.xml_.\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>azure-spring-boot-starter-active-directory-b2c</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-web</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-thymeleaf</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-security</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.thymeleaf.extras</groupId>\n        <artifactId>thymeleaf-extras-springsecurity5</artifactId>\n    </dependency>\n</dependencies>\n----\n\n* Step 9: Add properties in _application.yml_ using the values you created earlier, for example:\n\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        b2c:\n          authenticate-additional-parameters:\n            domain_hint: xxxxxxxxx         # optional\n            login_hint: xxxxxxxxx          # optional\n            prompt: [login,none,consent]   # optional\n          base-uri: ${BASE_URI}\n          credential:\n            client-id: ${WEBAPP_AZURE_CLIENT_ID}\n            client-secret: ${WEBAPP_AZURE_CLIENT_SECRET}\n          login-flow: ${LOGIN_USER_FLOW_KEY}               # default to sign-up-or-sign-in, will look up the user-flows map with provided key.\n          logout-success-url: ${LOGOUT_SUCCESS_URL}\n          user-flows:\n            ${YOUR_USER_FLOW_KEY}: ${USER_FLOW_NAME}\n          user-name-attribute-name: ${USER_NAME_ATTRIBUTE_NAME}\n----\n\n* Step 10: Write your Java code.\n\nController code can refer to the following:\n\n[source,java]\n----\n@Controller\npublic class WebController {\n\n    private void initializeModel(Model model, OAuth2AuthenticationToken token) {\n        if (token != null) {\n            final OAuth2User user = token.getPrincipal();\n            model.addAllAttributes(user.getAttributes());\n            model.addAttribute(\"grant_type\", user.getAuthorities());\n            model.addAttribute(\"name\", user.getName());\n        }\n    }\n\n    @GetMapping(value = { \"/\", \"/home\" })\n    public String index(Model model, OAuth2AuthenticationToken token) {\n        initializeModel(model, token);\n        return \"home\";\n    }\n}\n----\n\nSecurity configuration code can refer to the following:\n\n[source,java]\n----\n@EnableWebSecurity\npublic class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {\n\n    private final AadB2cOidcLoginConfigurer configurer;\n\n    public WebSecurityConfiguration(AadB2cOidcLoginConfigurer configurer) {\n        this.configurer == configurer;\n    }\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        // @formatter:off\n        http.authorizeRequests()\n                .anyRequest().authenticated()\n                .and()\n            .apply(configurer);\n        // @formatter:off\n    }\n}\n----\n\nCopy the _home.html_ from https://github.com/Azure-Samples/azure-spring-boot-samples/blob/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory-b2c/aad-b2c-web-application/src/main/resources/templates/home.html[aad-b2c-web-application sample], and replace the `PROFILE_EDIT_USER_FLOW` and `PASSWORD_RESET_USER_FLOW` with your user flow name respectively that completed earlier.\n\n* Step 11: Build and test your app\n\nLet `Webapp` run on port _8080_.\n\n1. After your application is built and started by Maven, open `http://localhost:8080/` in a web browser; you should be redirected to login page.\n\n2. Click link with the login user flow, you should be redirected Azure AD B2C to start the authentication process.\n\n3. After you have logged in successfully, you should see the sample `home page` from the browser.\n\n===== Usage 2: Web Application Accessing Resource Servers\n\nThis scenario is based on *Accessing a web application* scenario to allow application to access other resources, that is [The OAuth 2.0 client credentials grant] flow.\n\n* Step 1: Select *Azure AD B2C* from the portal menu, click *Applications*, and then click *Add*.\n\n* Step 2: Specify your application *Name*, we call it `webApiA`, record the *Application ID* as your `WEB_API_A_AZURE_CLIENT_ID` and then click *Save*.\n\n* Step 3: Select *Keys* from your application, click *Generate key* to generate `WEB_API_A_AZURE_CLIENT_SECRET` and then *Save*.\n\n* Step 4: Select *Expose an API* on your left, and then Click the *Set* link,\n record the *Application ID URI* as your `WEB_API_A_APP_ID_URL`, then *Save*.\n\n* Step 5: Select *Manifest* on your left, and then paste the following json segment into `appRoles` array,\n record the *Application ID URI* as your `WEB_API_A_APP_ID_URL`, record the value of the app role as your `WEB_API_A_ROLE_VALUE`, then *save*.\n\n[source,json]\n----\n{\n  \"allowedMemberTypes\": [\n    \"Application\"\n  ],\n  \"description\": \"WebApiA.SampleScope\",\n  \"displayName\": \"WebApiA.SampleScope\",\n  \"id\": \"04989db0-3efe-4db6-b716-ae378517d2b7\",\n  \"isEnabled\": true,\n  \"value\": \"WebApiA.SampleScope\"\n}\n----\n\nimage:https://user-images.githubusercontent.com/13167207/142620567-59a91df7-7a97-4027-b525-1f422f25fb22.png[Configure WebApiA appRoles]\n\n* Step 6: Select *API permissions* &gt; *Add a permission* &gt; *My APIs*, select *_WebApiA_* application name, select *Application Permissions*, select *WebApiA.SampleScope* permission, select *Add permission* to complete the process.\n\n* Step 7: Grant admin consent for *_WebApiA_* permissions.\n image:https://user-images.githubusercontent.com/13167207/142620601-660400fa-7cff-4989-9d7f-2b32a9aa1244.png[Add WebApiA permission]\n\n* Step 8: Add the following dependency on the basis of *Accessing a web application* scenario.\n\n[source,xml]\n----\n<dependency>\n  <groupId>org.springframework.boot</groupId>\n  <artifactId>spring-boot-starter-webflux</artifactId>\n</dependency>\n----\n\n* Step 9: Add the following configuration on the basis of *Accessing a web application* scenario.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        b2c:\n          base-uri: ${BASE_URI}             # Such as: https://xxxxb2c.b2clogin.com\n          profile:\n            tenant-id: ${AZURE_TENANT_ID}\n          authorization-clients:\n            ${RESOURCE_SERVER_A_NAME}:\n              authorization-grant-type: client_credentials\n              scopes: ${WEB_API_A_APP_ID_URL}/.default\n----\n\n* Step 10: Write your `Webapp` Java code.\n\nController code can refer to the following:\n\n[source,java]\n----\nclass Demo {\n    /**\n     * Access to protected data from Webapp to WebApiA through client credential flow. The access token is obtained by webclient, or\n     * <p>@RegisteredOAuth2AuthorizedClient(\"webApiA\")</p>. In the end, these two approaches will be executed to\n     * DefaultOAuth2AuthorizedClientManager#authorize method, get the access token.\n     *\n     * @return Respond to protected data from WebApi A.\n     */\n    @GetMapping(\"/webapp/webApiA\")\n    public String callWebApiA() {\n        String body = webClient\n            .get()\n            .uri(LOCAL_WEB_API_A_SAMPLE_ENDPOINT)\n            .attributes(clientRegistrationId(\"webApiA\"))\n            .retrieve()\n            .bodyToMono(String.class)\n            .block();\n        LOGGER.info(\"Call callWebApiA(), request '/webApiA/sample' returned: {}\", body);\n        return \"Request '/webApiA/sample'(WebApi A) returned a \" + (body != null ? \"success.\" : \"failure.\");\n    }\n}\n----\n\nSecurity configuration code is the same with *Accessing a web application* scenario, another bean `webClient` is added as follows:\n\n[source,java]\n----\npublic class SampleConfiguration {\n    @Bean\n    public WebClient webClient(OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager) {\n        ServletOAuth2AuthorizedClientExchangeFilterFunction function =\n            new ServletOAuth2AuthorizedClientExchangeFilterFunction(oAuth2AuthorizedClientManager);\n        return WebClient.builder()\n                        .apply(function.oauth2Configuration())\n                        .build();\n    }\n}\n----\n\n* Step 11: See *Accessing a resource server* section to write your `WebApiA` Java code.\n\n* Step 12: Build and test your app\n\nLet `Webapp` and `WebApiA` run on port _8080_ and _8081_ respectively.\n Start `Webapp` and `WebApiA` application, return to the home page after logging successfully, you can access `http://localhost:8080/webapp/webApiA` to get *WebApiA* resource response.\n\n===== Usage 3: Accessing a Resource Server\n\nThis scenario not support login. Just protect the server by validating the access token, and if valid, serves the request.\n\n* Step 1: Refer to <<#usage-2-web-application-accessing-resource-servers,Usage 2: Web Application Accessing Resource Servers>> to build your `WebApiA` permission.\n\n* Step 2: Add `WebApiA` permission and grant admin consent for your web application.\n\n* Step 3: Add the following dependencies in your _pom.xml_.\n\n[source,xml]\n----\n<dependencies>\n    <dependency>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>azure-spring-boot-starter-active-directory-b2c</artifactId>\n    </dependency>\n    <dependency>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-web</artifactId>\n    </dependency>\n</dependencies>\n----\n\n* Step 4: Add the following configuration.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        b2c:\n          base-uri: ${BASE_URI}             # Such as: https://xxxxb2c.b2clogin.com\n          profile:\n            tenant-id: ${AZURE_TENANT_ID}\n          app-id-uri: ${APP_ID_URI}         # If you are using v1.0 token, please configure app-id-uri for `aud` verification\n          credential:\n            client-id: ${AZURE_CLIENT_ID}           # If you are using v2.0 token, please configure client-id for `aud` verification\n----\n\n* Step 5: Write your Java code.\n\nController code can refer to the following:\n\n[source,java]\n----\nclass Demo {\n    /**\n     * webApiA resource api for web app\n     * @return test content\n     */\n    @PreAuthorize(\"hasAuthority('APPROLE_WebApiA.SampleScope')\")\n    @GetMapping(\"/webApiA/sample\")\n    public String webApiASample() {\n        LOGGER.info(\"Call webApiASample()\");\n        return \"Request '/webApiA/sample'(WebApi A) returned successfully.\";\n    }\n}\n----\n\nSecurity configuration code can refer to the following:\n\n[source,java]\n----\n@EnableWebSecurity\n@EnableGlobalMethodSecurity(prePostEnabled = true)\npublic class ResourceServerConfiguration extends WebSecurityConfigurerAdapter {\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http.authorizeRequests((requests) -> requests.anyRequest().authenticated())\n            .oauth2ResourceServer()\n            .jwt()\n            .jwtAuthenticationConverter(new AadJwtBearerTokenAuthenticationConverter());\n    }\n}\n----\n\n* Step 6: Build and test your app\n\nLet `WebApiA` run on port _8081_.\n Get the access token for `webApiA` resource and access `http://localhost:8081/webApiA/sample`\n as the Bearer authorization header.\n\n===== Usage 4: Resource Server Accessing Other Resource Servers\n\nThis scenario is an upgrade of *Accessing a resource server*, supports access to other application resources, based on OAuth2 client credentials flow.\n\n* Step 1: Referring to the previous steps, we create a `WebApiB` application and expose an application permission `WebApiB.SampleScope`.\n\n[source,json]\n----\n{\n    \"allowedMemberTypes\": [\n        \"Application\"\n    ],\n    \"description\": \"WebApiB.SampleScope\",\n    \"displayName\": \"WebApiB.SampleScope\",\n    \"id\": \"04989db0-3efe-4db6-b716-ae378517d2b7\",\n    \"isEnabled\": true,\n    \"lang\": null,\n    \"origin\": \"Application\",\n    \"value\": \"WebApiB.SampleScope\"\n}\n----\n\nimage:https://user-images.githubusercontent.com/13167207/142620648-cfbf5220-9736-4050-a3ef-1370c522e672.png[Configure WebApiB appRoles]\n\n* Step 2: Grant admin consent for *_WebApiB_* permissions.\n image:https://user-images.githubusercontent.com/13167207/142620691-b1a7fcda-fc92-41af-9515-812139f26ee0.png[Add WebApiB permission]\n\n* Step 3: On the basis of *Accessing a resource server*, add a dependency in your _pom.xml_.\n\n[source,xml]\n----\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-webflux</artifactId>\n</dependency>\n----\n\n* Step 4: Add the following configuration on the basis of *Accessing a resource server* scenario configuration.\n[source,yaml]\n----\nspring:\n  cloud:\n    azure:\n      active-directory:\n        b2c:\n          credential:\n            client-secret: ${WEB_API_A_AZURE_CLIENT_SECRET}\n          authorization-clients:\n            ${RESOURCE_SERVER_B_NAME}:\n              authorization-grant-type: client_credentials\n              scopes: ${WEB_API_B_APP_ID_URL}/.default\n----\n\n* Step 5: Write your Java code.\n\nWebApiA controller code can refer to the following:\n\n[source,java]\n----\npublic class SampleController {\n    /**\n     * Access to protected data from WebApiA to WebApiB through client credential flow. The access token is obtained by webclient, or\n     * <p>@RegisteredOAuth2AuthorizedClient(\"webApiA\")</p>. In the end, these two approaches will be executed to\n     * DefaultOAuth2AuthorizedClientManager#authorize method, get the access token.\n     *\n     * @return Respond to protected data from WebApi B.\n     */\n    @GetMapping(\"/webApiA/webApiB/sample\")\n    @PreAuthorize(\"hasAuthority('APPROLE_WebApiA.SampleScope')\")\n    public String callWebApiB() {\n        String body = webClient\n            .get()\n            .uri(LOCAL_WEB_API_B_SAMPLE_ENDPOINT)\n            .attributes(clientRegistrationId(\"webApiB\"))\n            .retrieve()\n            .bodyToMono(String.class)\n            .block();\n        LOGGER.info(\"Call callWebApiB(), request '/webApiB/sample' returned: {}\", body);\n        return \"Request 'webApiA/webApiB/sample'(WebApi A) returned a \" + (body != null ? \"success.\" : \"failure.\");\n    }\n}\n----\n\nWebApiB controller code can refer to the following:\n\n[source,java]\n----\npublic class SampleController {\n    /**\n     * webApiB resource api for other web application\n     * @return test content\n     */\n    @PreAuthorize(\"hasAuthority('APPROLE_WebApiB.SampleScope')\")\n    @GetMapping(\"/webApiB/sample\")\n    public String webApiBSample() {\n        LOGGER.info(\"Call webApiBSample()\");\n        return \"Request '/webApiB/sample'(WebApi B) returned successfully.\";\n    }\n}\n----\n\nSecurity configuration code is the same with *Accessing a resource server* scenario, another bean `webClient` is added as follows\n\n[source,java]\n----\npublic class SampleConfiguration {\n    @Bean\n    public WebClient webClient(OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager) {\n        ServletOAuth2AuthorizedClientExchangeFilterFunction function =\n            new ServletOAuth2AuthorizedClientExchangeFilterFunction(oAuth2AuthorizedClientManager);\n        return WebClient.builder()\n                        .apply(function.oauth2Configuration())\n                        .build();\n    }\n}\n----\n\n* Step 6: Build and test your app\n\nLet `WebApiA` and `WebApiB` run on port _8081_ and _8082_ respectively.\n Start `WebApiA` and `WebApiB` application, get the access token for `webApiA` resource and access `http://localhost:8081/webApiA/webApiB/sample`\n as the Bearer authorization header.\n\n==== Samples\n\nSee link:https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_{project-version}/aad/spring-cloud-azure-starter-active-directory-b2c[spring-cloud-azure-starter-active-directory-b2c samples] for more details.\n\n\n"
  },
  {
    "path": "docs/src/main/asciidoc/version-information.adoc",
    "content": "\nThis document is only for Spring Cloud Azure: **{project-version}**. See https://github.com/Azure/azure-sdk-for-java/wiki/Spring-Versions-Mapping[Spring Versions Mapping] to get more information about supported versions.\n\nIMPORTANT: For the latest reference document, see https://aka.ms/spring/msdocs/developer-guide[Spring Cloud Azure developer guide] for the developer guide."
  },
  {
    "path": "docs/src/main/asciidoc/whats-new-4.0.adoc",
    "content": "== What Is New in 4.0 Since 3.10.x\n\nThis page covers changes made in 4.0 since 3.10. With this major release, we aim to bring better security, leaner dependencies, support for production readiness, and more.\n\nTIP: To learn how to migrate to 4.0, please check link:appendix.html#migration-guide-for-4-0[the Appendix page].\n\nThe following list summarizes some of the changes that Spring Cloud Azure 4.0 provides:\n\n* A unified development experience, with unified project name, artifact ID, and properties.\n* Simplified dependency management using a single `spring-cloud-azure-dependencies` BOM.\n* Expanded Azure support on link:https://start.spring.io[Spring Initializr] to cover Kafka, Event Hubs, Azure Cache for Redis, and Azure App Configuration.\n* Rearchitected Spring module dependencies to remove excess layers and entanglement.\n* Managed Identity support for Azure App Configuration, Event Hubs, Service Bus, Cosmos DB, Key Vault, Storage Blob, and Storage Queue.\n* Continued support for authentication methods in the underlying Azure SDK from our Spring libraries, such as SAS token and token credential authentication with Service Bus and Event Hubs.\n* link:https://docs.microsoft.com/en-us/java/api/overview/azure/identity-readme?view=azure-java-stable&preserve-view=true#defaultazurecredential[Credential chain] is now enabled by default, enabling applications to obtain credentials from application properties, environment variables, managed identity, IDEs, and so on.\n* Granular access control at the resource level (such as Service Bus queue) to enable better security governance and adherence to IT policies.\n* More options exposed in a Spring-idiomatic way through significantly improved auto-configuration coverage of Azure SDK clients for both synchronous and asynchronous scenarios.\n* Added health indicators for Azure App Configuration, Event Hubs, Cosmos DB, Key Vault, Storage Blob, Storage Queue, and Storage File.\n* Spring Cloud Sleuth support for all HTTP-based Azure SDKs."
  },
  {
    "path": "mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Maven Start Up Batch script\n#\n# Required ENV vars:\n# ------------------\n#   JAVA_HOME - location of a JDK home dir\n#\n# Optional ENV vars\n# -----------------\n#   M2_HOME - location of maven2's installed home dir\n#   MAVEN_OPTS - parameters passed to the Java VM when running Maven\n#     e.g. to debug Maven itself, use\n#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n# ----------------------------------------------------------------------------\n\nif [ -z \"$MAVEN_SKIP_RC\" ] ; then\n\n  if [ -f /etc/mavenrc ] ; then\n    . /etc/mavenrc\n  fi\n\n  if [ -f \"$HOME/.mavenrc\" ] ; then\n    . \"$HOME/.mavenrc\"\n  fi\n\nfi\n\n# OS specific support.  $var _must_ be set to either true or false.\ncygwin=false;\ndarwin=false;\nmingw=false\ncase \"`uname`\" in\n  CYGWIN*) cygwin=true ;;\n  MINGW*) mingw=true;;\n  Darwin*) darwin=true\n    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home\n    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html\n    if [ -z \"$JAVA_HOME\" ]; then\n      if [ -x \"/usr/libexec/java_home\" ]; then\n        export JAVA_HOME=\"`/usr/libexec/java_home`\"\n      else\n        export JAVA_HOME=\"/Library/Java/Home\"\n      fi\n    fi\n    ;;\nesac\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  if [ -r /etc/gentoo-release ] ; then\n    JAVA_HOME=`java-config --jre-home`\n  fi\nfi\n\nif [ -z \"$M2_HOME\" ] ; then\n  ## resolve links - $0 may be a link to maven's home\n  PRG=\"$0\"\n\n  # need this for relative symlinks\n  while [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n      PRG=\"$link\"\n    else\n      PRG=\"`dirname \"$PRG\"`/$link\"\n    fi\n  done\n\n  saveddir=`pwd`\n\n  M2_HOME=`dirname \"$PRG\"`/..\n\n  # make it fully qualified\n  M2_HOME=`cd \"$M2_HOME\" && pwd`\n\n  cd \"$saveddir\"\n  # echo Using m2 at $M2_HOME\nfi\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched\nif $cygwin ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --unix \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --unix \"$CLASSPATH\"`\nfi\n\n# For Mingw, ensure paths are in UNIX format before anything is touched\nif $mingw ; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=\"`(cd \"$M2_HOME\"; pwd)`\"\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=\"`(cd \"$JAVA_HOME\"; pwd)`\"\nfi\n\nif [ -z \"$JAVA_HOME\" ]; then\n  javaExecutable=\"`which javac`\"\n  if [ -n \"$javaExecutable\" ] && ! [ \"`expr \\\"$javaExecutable\\\" : '\\([^ ]*\\)'`\" = \"no\" ]; then\n    # readlink(1) is not available as standard on Solaris 10.\n    readLink=`which readlink`\n    if [ ! `expr \"$readLink\" : '\\([^ ]*\\)'` = \"no\" ]; then\n      if $darwin ; then\n        javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n        javaExecutable=\"`cd \\\"$javaHome\\\" && pwd -P`/javac\"\n      else\n        javaExecutable=\"`readlink -f \\\"$javaExecutable\\\"`\"\n      fi\n      javaHome=\"`dirname \\\"$javaExecutable\\\"`\"\n      javaHome=`expr \"$javaHome\" : '\\(.*\\)/bin'`\n      JAVA_HOME=\"$javaHome\"\n      export JAVA_HOME\n    fi\n  fi\nfi\n\nif [ -z \"$JAVACMD\" ] ; then\n  if [ -n \"$JAVA_HOME\"  ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n  else\n    JAVACMD=\"`which java`\"\n  fi\nfi\n\nif [ ! -x \"$JAVACMD\" ] ; then\n  echo \"Error: JAVA_HOME is not defined correctly.\" >&2\n  echo \"  We cannot execute $JAVACMD\" >&2\n  exit 1\nfi\n\nif [ -z \"$JAVA_HOME\" ] ; then\n  echo \"Warning: JAVA_HOME environment variable is not set.\"\nfi\n\nCLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher\n\n# traverses directory structure from process work directory to filesystem root\n# first directory with .mvn subdirectory is considered project base directory\nfind_maven_basedir() {\n\n  if [ -z \"$1\" ]\n  then\n    echo \"Path not specified to find_maven_basedir\"\n    return 1\n  fi\n\n  basedir=\"$1\"\n  wdir=\"$1\"\n  while [ \"$wdir\" != '/' ] ; do\n    if [ -d \"$wdir\"/.mvn ] ; then\n      basedir=$wdir\n      break\n    fi\n    # workaround for JBEAP-8937 (on Solaris 10/Sparc)\n    if [ -d \"${wdir}\" ]; then\n      wdir=`cd \"$wdir/..\"; pwd`\n    fi\n    # end of workaround\n  done\n  echo \"${basedir}\"\n}\n\n# concatenates all lines of a file\nconcat_lines() {\n  if [ -f \"$1\" ]; then\n    echo \"$(tr -s '\\n' ' ' < \"$1\")\"\n  fi\n}\n\nBASE_DIR=`find_maven_basedir \"$(pwd)\"`\nif [ -z \"$BASE_DIR\" ]; then\n  exit 1;\nfi\n\n##########################################################################################\n# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n# This allows using the maven wrapper in projects that prohibit checking in binary data.\n##########################################################################################\nif [ -r \"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\" ]; then\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Found .mvn/wrapper/maven-wrapper.jar\"\n    fi\nelse\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ...\"\n    fi\n    if [ -n \"$MVNW_REPOURL\" ]; then\n      jarUrl=\"$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    else\n      jarUrl=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    fi\n    while IFS=\"=\" read key value; do\n      case \"$key\" in (wrapperUrl) jarUrl=\"$value\"; break ;;\n      esac\n    done < \"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties\"\n    if [ \"$MVNW_VERBOSE\" = true ]; then\n      echo \"Downloading from: $jarUrl\"\n    fi\n    wrapperJarPath=\"$BASE_DIR/.mvn/wrapper/maven-wrapper.jar\"\n    if $cygwin; then\n      wrapperJarPath=`cygpath --path --windows \"$wrapperJarPath\"`\n    fi\n\n    if command -v wget > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found wget ... using wget\"\n        fi\n        if [ -z \"$MVNW_USERNAME\" ] || [ -z \"$MVNW_PASSWORD\" ]; then\n            wget \"$jarUrl\" -O \"$wrapperJarPath\"\n        else\n            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD \"$jarUrl\" -O \"$wrapperJarPath\"\n        fi\n    elif command -v curl > /dev/null; then\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Found curl ... using curl\"\n        fi\n        if [ -z \"$MVNW_USERNAME\" ] || [ -z \"$MVNW_PASSWORD\" ]; then\n            curl -o \"$wrapperJarPath\" \"$jarUrl\" -f\n        else\n            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o \"$wrapperJarPath\" \"$jarUrl\" -f\n        fi\n\n    else\n        if [ \"$MVNW_VERBOSE\" = true ]; then\n          echo \"Falling back to using Java to download\"\n        fi\n        javaClass=\"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java\"\n        # For Cygwin, switch paths to Windows format before running javac\n        if $cygwin; then\n          javaClass=`cygpath --path --windows \"$javaClass\"`\n        fi\n        if [ -e \"$javaClass\" ]; then\n            if [ ! -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Compiling MavenWrapperDownloader.java ...\"\n                fi\n                # Compiling the Java class\n                (\"$JAVA_HOME/bin/javac\" \"$javaClass\")\n            fi\n            if [ -e \"$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class\" ]; then\n                # Running the downloader\n                if [ \"$MVNW_VERBOSE\" = true ]; then\n                  echo \" - Running MavenWrapperDownloader.java ...\"\n                fi\n                (\"$JAVA_HOME/bin/java\" -cp .mvn/wrapper MavenWrapperDownloader \"$MAVEN_PROJECTBASEDIR\")\n            fi\n        fi\n    fi\nfi\n##########################################################################################\n# End of extension\n##########################################################################################\n\nexport MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-\"$BASE_DIR\"}\nif [ \"$MVNW_VERBOSE\" = true ]; then\n  echo $MAVEN_PROJECTBASEDIR\nfi\nMAVEN_OPTS=\"$(concat_lines \"$MAVEN_PROJECTBASEDIR/.mvn/jvm.config\") $MAVEN_OPTS\"\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin; then\n  [ -n \"$M2_HOME\" ] &&\n    M2_HOME=`cygpath --path --windows \"$M2_HOME\"`\n  [ -n \"$JAVA_HOME\" ] &&\n    JAVA_HOME=`cygpath --path --windows \"$JAVA_HOME\"`\n  [ -n \"$CLASSPATH\" ] &&\n    CLASSPATH=`cygpath --path --windows \"$CLASSPATH\"`\n  [ -n \"$MAVEN_PROJECTBASEDIR\" ] &&\n    MAVEN_PROJECTBASEDIR=`cygpath --path --windows \"$MAVEN_PROJECTBASEDIR\"`\nfi\n\n# Provide a \"standardized\" way to retrieve the CLI args that will\n# work with both Windows and non-Windows executions.\nMAVEN_CMD_LINE_ARGS=\"$MAVEN_CONFIG $@\"\nexport MAVEN_CMD_LINE_ARGS\n\nWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nexec \"$JAVACMD\" \\\n  $MAVEN_OPTS \\\n  -classpath \"$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar\" \\\n  \"-Dmaven.home=${M2_HOME}\" \"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}\" \\\n  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG \"$@\"\n"
  },
  {
    "path": "mvnw.cmd",
    "content": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software Foundation (ASF) under one\n@REM or more contributor license agreements.  See the NOTICE file\n@REM distributed with this work for additional information\n@REM regarding copyright ownership.  The ASF licenses this file\n@REM to you under the Apache License, Version 2.0 (the\n@REM \"License\"); you may not use this file except in compliance\n@REM with the License.  You may obtain a copy of the License at\n@REM\n@REM    https://www.apache.org/licenses/LICENSE-2.0\n@REM\n@REM Unless required by applicable law or agreed to in writing,\n@REM software distributed under the License is distributed on an\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n@REM KIND, either express or implied.  See the License for the\n@REM specific language governing permissions and limitations\n@REM under the License.\n@REM ----------------------------------------------------------------------------\n\n@REM ----------------------------------------------------------------------------\n@REM Maven Start Up Batch script\n@REM\n@REM Required ENV vars:\n@REM JAVA_HOME - location of a JDK home dir\n@REM\n@REM Optional ENV vars\n@REM M2_HOME - location of maven2's installed home dir\n@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands\n@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending\n@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven\n@REM     e.g. to debug Maven itself, use\n@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\n@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files\n@REM ----------------------------------------------------------------------------\n\n@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'\n@echo off\n@REM set title of command window\ntitle %0\n@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'\n@if \"%MAVEN_BATCH_ECHO%\" == \"on\"  echo %MAVEN_BATCH_ECHO%\n\n@REM set %HOME% to equivalent of $HOME\nif \"%HOME%\" == \"\" (set \"HOME=%HOMEDRIVE%%HOMEPATH%\")\n\n@REM Execute a user defined script before this one\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPre\n@REM check for pre script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_pre.bat\" call \"%HOME%\\mavenrc_pre.bat\"\nif exist \"%HOME%\\mavenrc_pre.cmd\" call \"%HOME%\\mavenrc_pre.cmd\"\n:skipRcPre\n\n@setlocal\n\nset ERROR_CODE=0\n\n@REM To isolate internal variables from possible post scripts, we use another setlocal\n@setlocal\n\n@REM ==== START VALIDATION ====\nif not \"%JAVA_HOME%\" == \"\" goto OkJHome\n\necho.\necho Error: JAVA_HOME not found in your environment. >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n:OkJHome\nif exist \"%JAVA_HOME%\\bin\\java.exe\" goto init\n\necho.\necho Error: JAVA_HOME is set to an invalid directory. >&2\necho JAVA_HOME = \"%JAVA_HOME%\" >&2\necho Please set the JAVA_HOME variable in your environment to match the >&2\necho location of your Java installation. >&2\necho.\ngoto error\n\n@REM ==== END VALIDATION ====\n\n:init\n\n@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".\n@REM Fallback to current working directory if not found.\n\nset MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%\nIF NOT \"%MAVEN_PROJECTBASEDIR%\"==\"\" goto endDetectBaseDir\n\nset EXEC_DIR=%CD%\nset WDIR=%EXEC_DIR%\n:findBaseDir\nIF EXIST \"%WDIR%\"\\.mvn goto baseDirFound\ncd ..\nIF \"%WDIR%\"==\"%CD%\" goto baseDirNotFound\nset WDIR=%CD%\ngoto findBaseDir\n\n:baseDirFound\nset MAVEN_PROJECTBASEDIR=%WDIR%\ncd \"%EXEC_DIR%\"\ngoto endDetectBaseDir\n\n:baseDirNotFound\nset MAVEN_PROJECTBASEDIR=%EXEC_DIR%\ncd \"%EXEC_DIR%\"\n\n:endDetectBaseDir\n\nIF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig\n\n@setlocal EnableExtensions EnableDelayedExpansion\nfor /F \"usebackq delims=\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a\n@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%\n\n:endReadAdditionalConfig\n\nSET MAVEN_JAVA_EXE=\"%JAVA_HOME%\\bin\\java.exe\"\nset WRAPPER_JAR=\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"\nset WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain\n\nset DOWNLOAD_URL=\"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n\nFOR /F \"tokens=1,2 delims==\" %%A IN (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties\") DO (\n    IF \"%%A\"==\"wrapperUrl\" SET DOWNLOAD_URL=%%B\n)\n\n@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central\n@REM This allows using the maven wrapper in projects that prohibit checking in binary data.\nif exist %WRAPPER_JAR% (\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Found %WRAPPER_JAR%\n    )\n) else (\n    if not \"%MVNW_REPOURL%\" == \"\" (\n        SET DOWNLOAD_URL=\"%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar\"\n    )\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Couldn't find %WRAPPER_JAR%, downloading it ...\n        echo Downloading from: %DOWNLOAD_URL%\n    )\n\n    powershell -Command \"&{\"^\n\t\t\"$webclient = new-object System.Net.WebClient;\"^\n\t\t\"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {\"^\n\t\t\"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');\"^\n\t\t\"}\"^\n\t\t\"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')\"^\n\t\t\"}\"\n    if \"%MVNW_VERBOSE%\" == \"true\" (\n        echo Finished downloading %WRAPPER_JAR%\n    )\n)\n@REM End of extension\n\n@REM Provide a \"standardized\" way to retrieve the CLI args that will\n@REM work with both Windows and non-Windows executions.\nset MAVEN_CMD_LINE_ARGS=%*\n\n%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% \"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%\" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*\nif ERRORLEVEL 1 goto error\ngoto end\n\n:error\nset ERROR_CODE=1\n\n:end\n@endlocal & set ERROR_CODE=%ERROR_CODE%\n\nif not \"%MAVEN_SKIP_RC%\" == \"\" goto skipRcPost\n@REM check for post script, once with legacy .bat ending and once with .cmd ending\nif exist \"%HOME%\\mavenrc_post.bat\" call \"%HOME%\\mavenrc_post.bat\"\nif exist \"%HOME%\\mavenrc_post.cmd\" call \"%HOME%\\mavenrc_post.cmd\"\n:skipRcPost\n\n@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'\nif \"%MAVEN_BATCH_PAUSE%\" == \"on\" pause\n\nif \"%MAVEN_TERMINATE_CMD%\" == \"on\" exit %ERROR_CODE%\n\nexit /B %ERROR_CODE%\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ Copyright 2013-2019 the original author or authors.\n  ~\n  ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~      https://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.springframework.cloud</groupId>\n        <artifactId>spring-cloud-build</artifactId>\n        <version>4.0.5</version>\n        <relativePath /> <!-- lookup parent from repository -->\n    </parent>\n\n    <groupId>com.azure.spring</groupId>\n    <artifactId>spring-cloud-azure-aggregator</artifactId>\n    <version>4.4.1</version>\n    <packaging>pom</packaging>\n    <name>Spring Cloud Azure</name>\n    <description>Spring Cloud Azure</description>\n\n\n    <properties>\n        <!-- <tomcat.version>8.0.33</tomcat.version> -->\n        <!-- <javax-mail.version>1.5.5</javax-mail.version> -->\n        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>\n        <!-- <javax.activation.version>1.2.0</javax.activation.version> -->\n        <spring-cloud-commons.version>4.0.5</spring-cloud-commons.version>\n        <!-- \"version.spring.cloud.azure\" is used to update \"_configprops.adoc\".\n         -->\n        <version.spring.cloud.azure>4.4.1</version.spring.cloud.azure>\n        <spring-javaformat.version>0.0.29</spring-javaformat.version>\n        <maven.compiler.source>1.8</maven.compiler.source>\n        <maven.compiler.target>1.8</maven.compiler.target>\n    </properties>\n\n    <modules>\n        <module>docs</module>\n        <module>spring-cloud-azure-markdown-appdendix-generator</module>\n    </modules>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>com.azure.spring</groupId>\n                <artifactId>spring-cloud-azure-dependencies</artifactId>\n                <version>${version.spring.cloud.azure}</version>\n                <type>pom</type>\n                <scope>import</scope>\n            </dependency>\n            <dependency>\n                <groupId>org.springframework.cloud</groupId>\n                <artifactId>spring-cloud-commons-dependencies</artifactId>\n                <version>${spring-cloud-commons.version}</version>\n                <type>pom</type>\n                <scope>import</scope>\n            </dependency>\n\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <groupId>org.junit.vintage</groupId>\n                    <artifactId>junit-vintage-engine</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>junit</groupId>\n                    <artifactId>junit</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <pluginManagement>\n            <plugins>\n                <plugin>\n                    <artifactId>maven-compiler-plugin</artifactId>\n                    <configuration>\n                        <compilerArgs>\n                            <!-- Enable all warnings -->\n                            <compilerArg>-Xlint:all</compilerArg>\n                            <!-- Disable options warning because we will have differences between the compiler and source code level-->\n                            <compilerArg>-Xlint:-options</compilerArg>\n                            <!-- Disable serialversionuid warnings -->\n                            <compilerArg>-Xlint:-serial</compilerArg>\n                            <!--compilerArg>-Werror</compilerArg-->\n                        </compilerArgs>\n                    </configuration>\n                </plugin>\n                <plugin>\n                    <groupId>org.codehaus.mojo</groupId>\n                    <artifactId>exec-maven-plugin</artifactId>\n                    <executions>\n                        <execution>\n                            <id>generate-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-all.adoc</argument>\n                                    <argument>(?!spring.cloud.azure.storage.fileshare.(credential).*)(spring.jms.servicebus.*|spring.cloud.azure.*)</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-global-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-global.adoc</argument>\n                                    <argument>spring.cloud.azure.(client|credential|profile|proxy|retry).*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-aad-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-active-directory.adoc</argument>\n                                    <argument>(?!spring.cloud.azure.active-directory.b2c.*)(spring.cloud.azure.active-directory.*)</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-aadb2c-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-active-directory-b2c.adoc</argument>\n                                    <argument>spring.cloud.azure.active-directory.b2c.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-appconf-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-app-configuration.adoc</argument>\n                                    <argument>spring.cloud.azure.appconfiguration.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-cosmos-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-cosmos-db.adoc</argument>\n                                    <argument>spring.cloud.azure.cosmos.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-eventhubs-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-event-hubs.adoc</argument>\n                                    <argument>spring.cloud.azure.eventhubs.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-kv-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-key-vault.adoc</argument>\n                                    <argument>(?!spring.cloud.azure.keyvault.(secret|certificate).*)(spring.cloud.azure.keyvault.*)</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-kv-secret-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-key-vault-secrets.adoc</argument>\n                                    <argument>spring.cloud.azure.keyvault.secret.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-kv-certificate-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-key-vault-certificates.adoc</argument>\n                                    <argument>spring.cloud.azure.keyvault.certificate.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-servicebus-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-service-bus.adoc</argument>\n                                    <argument>spring.cloud.azure.servicebus.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-servicebus-jms-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-service-bus-jms.adoc</argument>\n                                    <argument>spring.jms.servicebus.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-storage-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-storage.adoc</argument>\n                                    <argument>(?!spring.cloud.azure.storage.(blob|fileshare|queue).*)(spring.cloud.azure.storage.*)</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-storage-blob-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-storage-blob.adoc</argument>\n                                    <argument>spring.cloud.azure.storage.blob.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-storage-fileshare-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-storage-file-share.adoc</argument>\n                                    <argument>(?!spring.cloud.azure.storage.fileshare.(credential).*)(spring.cloud.azure.storage.fileshare.*)</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                        <execution>\n                            <id>generate-storage-queue-configprops</id>\n                            <phase>prepare-package</phase>\n                            <goals>\n                                <goal>java</goal>\n                            </goals>\n                            <configuration>\n                                <arguments>\n                                    <argument>${project.basedir}/src/main/asciidoc/_configuration-properties-azure-storage-queue.adoc</argument>\n                                    <argument>spring.cloud.azure.storage.queue.*</argument>\n                                </arguments>\n                            </configuration>\n                        </execution>\n                    </executions>\n                </plugin>\n            \n            </plugins>\n        </pluginManagement>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n            </plugin>\n            <plugin>\n                <groupId>io.spring.javaformat</groupId>\n                <artifactId>spring-javaformat-maven-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <phase>validate</phase>\n                        <inherited>true</inherited>\n                        <goals>\n                            <goal>validate</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>3.5.0</version>\n                <configuration>\n                    <links>\n                        <link>https://docs.oracle.com/javase/8/docs/api/</link>\n                        <link>https://docs.oracle.com/javaee/8/api/</link>\n                        <link>https://fasterxml.github.io/jackson-core/javadoc/2.8/</link>\n                        <link>https://docs.spring.io/spring/docs/5.3.x/javadoc-api/</link>\n                    </links>\n                    <author>true</author>\n                    <header>${project.name}</header>\n                    <reportOutputDirectory>${project.build.directory}/site/${project.version}/apidocs</reportOutputDirectory>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n    <reporting>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-checkstyle-plugin</artifactId>\n            </plugin>\n        </plugins>\n    </reporting>\n\n    <profiles>\n        <profile>\n            <id>spring</id>\n            <repositories>\n                <repository>\n                    <id>spring-snapshots</id>\n                    <name>Spring Snapshots</name>\n                    <url>https://repo.spring.io/libs-snapshot-local</url>\n                    <snapshots>\n                        <enabled>true</enabled>\n                    </snapshots>\n                    <releases>\n                        <enabled>false</enabled>\n                    </releases>\n                </repository>\n                <repository>\n                    <id>spring-milestones</id>\n                    <name>Spring Milestones</name>\n                    <url>https://repo.spring.io/libs-milestone-local</url>\n                    <snapshots>\n                        <enabled>false</enabled>\n                    </snapshots>\n                </repository>\n                <repository>\n                    <id>spring-releases</id>\n                    <name>Spring Releases</name>\n                    <url>https://repo.spring.io/release</url>\n                    <snapshots>\n                        <enabled>false</enabled>\n                    </snapshots>\n                </repository>\n            </repositories>\n            <pluginRepositories>\n                <pluginRepository>\n                    <id>spring-snapshots</id>\n                    <name>Spring Snapshots</name>\n                    <url>https://repo.spring.io/libs-snapshot-local</url>\n                    <snapshots>\n                        <enabled>true</enabled>\n                    </snapshots>\n                    <releases>\n                        <enabled>false</enabled>\n                    </releases>\n                </pluginRepository>\n                <pluginRepository>\n                    <id>spring-milestones</id>\n                    <name>Spring Milestones</name>\n                    <url>https://repo.spring.io/libs-milestone-local</url>\n                    <snapshots>\n                        <enabled>false</enabled>\n                    </snapshots>\n                </pluginRepository>\n                <pluginRepository>\n                    <id>spring-releases</id>\n                    <name>Spring Releases</name>\n                    <url>https://repo.spring.io/libs-release-local</url>\n                    <snapshots>\n                        <enabled>false</enabled>\n                    </snapshots>\n                </pluginRepository>\n            </pluginRepositories>\n        </profile>\n\n\n    </profiles>\n\n\n</project>\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n\n    <parent>\n        <groupId>com.azure.spring</groupId>\n        <artifactId>spring-cloud-azure-aggregator</artifactId>\n        <version>4.4.1</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <artifactId>spring-cloud-azure-markdown-appdendix-generator</artifactId>\n    <name>spring-cloud-azure-markdown-appdendix-generator</name>\n    <packaging>jar</packaging>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.azure.spring</groupId>\n            <artifactId>spring-cloud-azure-starter</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.azure.spring</groupId>\n            <artifactId>spring-cloud-azure-starter-stream-eventhubs</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.azure.spring</groupId>\n            <artifactId>spring-cloud-azure-starter-stream-servicebus</artifactId>\n        </dependency>\n    </dependencies>\n    <profiles>\n        <profile>\n            <id>markdown-docs</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>exec-maven-plugin</artifactId>\n                        <configuration>\n                            <mainClass>com.azure.spring.cloud.internal.Main</mainClass>\n                        </configuration>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n    </profiles>\n\n</project>\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/src/main/java/com/azure/spring/cloud/internal/Main.java",
    "content": "/*\n * Copyright 2012-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.azure.spring.cloud.internal;\n\nimport java.io.BufferedWriter;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.text.SimpleDateFormat;\nimport java.util.Arrays;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.TreeMap;\nimport java.util.regex.Pattern;\nimport java.util.stream.Collectors;\nimport java.util.stream.Stream;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\nimport org.springframework.util.StreamUtils;\n\n/**\n * Generate markdown files with configuration properties based on the path of the file to\n * be output and the pattern included in the properties.\n */\npublic final class Main {\n\n\tprivate Main() {\n\t}\n\n\t/**\n\t * This method is used to generate configuration properties Markdown files.\n\t * @param args args[0]: output file name. The file name must start with\n\t * \"_configuration-properties-\". And in actual outputted file name, \".adoc\" will be\n\t * replaced by \".md\", \"_\" will be replaced by \"\". For example:\n\t * \"_configuration-properties-global.adoc\" after the replacement is\n\t * \"configuration-properties-global.md\". This is required because this module and the\n\t * docs' module use the configuration of the parent pom and changes to configuration\n\t * properties need to be synced to MS Docs. args[1]: property inclusion pattern.\n\t * Filter unwanted properties based on patterns.\n\t */\n\tpublic static void main(String... args) {\n\t\tString outputFile = args[0].replace(\"adoc\", \"md\").replace(\"_\", \"\");\n\t\tString inclusionPattern = args.length > 1 ? args[1] : \".*\";\n\t\tFile parent = new File(outputFile).getParentFile();\n\t\tif (!parent.exists()) {\n\t\t\tSystem.out.println(\n\t\t\t\t\t\"No parent directory [\" + parent + \"] found. Will not generate the configuration properties file\");\n\t\t\treturn;\n\t\t}\n\t\tnew Generator().generate(outputFile, inclusionPattern, getCurrentDateString());\n\t}\n\n\t/**\n\t * Get current date string.\n\t * @return the current date string\n\t */\n\tstatic String getCurrentDateString() {\n\t\tSimpleDateFormat simpleDateFormat = new SimpleDateFormat();\n\t\tsimpleDateFormat.applyPattern(\"MM/dd/yyyy\");\n\t\tDate date = new Date();\n\t\treturn simpleDateFormat.format(date);\n\t}\n\n\t/**\n\t * Generate Markdown files based on properties and filename.\n\t */\n\tstatic class Generator {\n\n\t\t/**\n\t\t * Generate files prefixed with configuration-properties.\n\t\t * @param outputFile the file name must start with \"configuration-properties-\"\n\t\t * @param inclusionPattern the inclusion pattern\n\t\t * @param date the current date string\n\t\t */\n\t\tvoid generate(String outputFile, String inclusionPattern, String date) {\n\t\t\ttry {\n\t\t\t\tSystem.out.println(\"Parsing all configuration metadata\");\n\t\t\t\tList<Resource> resources = getSpringConfigurationMetadataJsonFilesInClasspath();\n\t\t\t\tTreeMap<String, String> descriptions = new TreeMap<>();\n\t\t\t\tint propertyCount = 0;\n\t\t\t\tPattern pattern = Pattern.compile(inclusionPattern);\n\t\t\t\tObjectMapper objectMapper = new ObjectMapper();\n\t\t\t\tfor (Resource resource : resources) {\n\t\t\t\t\tbyte[] bytes = StreamUtils.copyToByteArray(resource.getInputStream());\n\t\t\t\t\tMap<String, Object> rootMap = objectMapper.readValue(bytes, HashMap.class);\n\t\t\t\t\tList<Map<String, Object>> properties = (List<Map<String, Object>>) rootMap.get(\"properties\");\n\t\t\t\t\tpropertyCount += properties.size();\n\t\t\t\t\tproperties.forEach(propertyItem -> {\n\t\t\t\t\t\tString name = String.valueOf(propertyItem.get(\"name\"));\n\t\t\t\t\t\tif (!pattern.matcher(name).matches()) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tString description = formatDescription(String.valueOf(propertyItem.get(\"description\")));\n\t\t\t\t\t\tString defaultValue = String.valueOf(propertyItem.get(\"defaultValue\"));\n\t\t\t\t\t\tdescriptions.put(name, defaultValue == null || defaultValue.equals(\"null\") ? description\n\t\t\t\t\t\t\t\t: description + \" The default value is \" + \"`\" + defaultValue + \"`\" + \".\");\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tSystem.out.println(\"Found [\" + resources.size() + \"] Azure projects configuration metadata jsons. [\"\n\t\t\t\t\t\t+ descriptions.size() + \"/\" + propertyCount + \"] were matching the pattern [\" + inclusionPattern\n\t\t\t\t\t\t+ \"]\");\n\t\t\t\tSystem.out.println(\"Successfully built the description table\");\n\t\t\t\tif (descriptions.isEmpty()) {\n\t\t\t\t\tSystem.out.println(\"Will not update the table, since no configuration properties were found!\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tgeneratePropertiesFile(outputFile, descriptions, date);\n\t\t\t}\n\t\t\tcatch (IOException e) {\n\t\t\t\tthrow new IllegalStateException(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Get Spring on Azure related \"spring-configuration-metadata.json\" files in\n\t\t * classpath.\n\t\t * @return a result set containing the specified fields\n\t\t * @throws IOException did not get any \"spring-configuration-metadata.json\" files\n\t\t * in classpath\n\t\t */\n\t\tprotected List<Resource> getSpringConfigurationMetadataJsonFilesInClasspath() throws IOException {\n\t\t\tResource[] resources = new PathMatchingResourcePatternResolver()\n\t\t\t\t\t.getResources(\"classpath*:/META-INF/spring-configuration-metadata.json\");\n\t\t\treturn Arrays.stream(resources).filter(resource -> {\n\t\t\t\ttry {\n\t\t\t\t\treturn resource.getURL().toString().contains(\"azure\");\n\t\t\t\t}\n\t\t\t\tcatch (IOException e) {\n\t\t\t\t\te.printStackTrace();\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}).collect(Collectors.toList());\n\t\t}\n\n\t\tprivate String formatDescription(String description) {\n\t\t\treturn formatURL(replaceQuotes(description)).replace(\"GrantedAuthority's\", \"`GrantedAuthority`'s\")\n\t\t\t\t\t.replace(\"access_token's\", \"`access_token`'s\");\n\t\t}\n\n\t\tprivate String formatURL(String description) {\n\t\t\tString regex1 = \"(\\\\b\\\\w+\\\\b)\\\\s?:\\\\s*https?://learn.microsoft.com([^\\\\s]+)\";\n\t\t\tString regex2 = \"(@see <a href=\\\")https?://learn.microsoft.com([^\\\\s]+)\";\n\t\t\treturn description.replaceAll(regex1, \"[$1]($2).\").replaceAll(regex2, \"$1$2\");\n\t\t}\n\n\t\t/**\n\t\t * Replace single/double quotes with backticks, ignoring possessive and nested\n\t\t * cases.\n\t\t */\n\t\tprivate String replaceQuotes(String description) {\n\t\t\tStringBuilder result = new StringBuilder();\n\t\t\tint n = description.length();\n\t\t\tboolean insideSingleQuote = false;\n\t\t\tboolean insideDoubleQuote = false;\n\t\t\tboolean insideBacktick = false;\n\t\t\tboolean insideSeeTag = false;\n\n\t\t\tfor (int i = 0; i < n; i++) {\n\t\t\t\tchar currentChar = description.charAt(i);\n\t\t\t\tif (!insideSeeTag && i >= 5 && description.startsWith(\"@see <\", i - 5)) {\n\t\t\t\t\tinsideSeeTag = true;\n\t\t\t\t}\n\t\t\t\tif (insideSeeTag) {\n\t\t\t\t\tresult.append(currentChar);\n\t\t\t\t\tif (currentChar == '>') {\n\t\t\t\t\t\tinsideSeeTag = false;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (currentChar == '`') {\n\t\t\t\t\tinsideBacktick = !insideBacktick;\n\t\t\t\t\tresult.append(currentChar);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!insideBacktick) {\n\t\t\t\t\t// skip 's, n't\n\t\t\t\t\tif (i + 1 < n && currentChar == '\\''\n\t\t\t\t\t\t\t&& (description.charAt(i + 1) == 's' || description.charAt(i + 1) == 't') && i > 0\n\t\t\t\t\t\t\t&& (Character.isLetter(description.charAt(i - 1)) || description.charAt(i - 1) == 'n')) {\n\t\t\t\t\t\tresult.append(currentChar);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (currentChar == '\\'' && !insideDoubleQuote) {\n\t\t\t\t\t\tresult.append('`');\n\t\t\t\t\t\tinsideSingleQuote = !insideSingleQuote;\n\t\t\t\t\t}\n\t\t\t\t\telse if (currentChar == '\"' && !insideSingleQuote) {\n\t\t\t\t\t\tresult.append('`');\n\t\t\t\t\t\tinsideDoubleQuote = !insideDoubleQuote;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresult.append(currentChar);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresult.append(currentChar);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result.toString();\n\t\t}\n\n\t\t/**\n\t\t * Padding the string to the required length.\n\t\t * @param string the string to padding\n\t\t * @param c the padding content\n\t\t * @param resultLength the length of padding\n\t\t * @return the required length\n\t\t */\n\t\tprivate String paddingWithChar(String string, char c, int resultLength) {\n\t\t\tString result = String.format(\"%1$-\" + resultLength + \"s\", string.trim());\n\t\t\tif (' ' != c) {\n\t\t\t\treturn result.replace(' ', c);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\n\t\t * Uppercase string.\n\t\t * @param letters the uppercase string required\n\t\t * @return the uppercase string\n\t\t */\n\t\tprivate String uppercaseString(String letters) {\n\t\t\tif (\"db\".equals(letters) | \"jms\".equals(letters) | \"b2c\".equals(letters)) {\n\t\t\t\treturn letters.toUpperCase();\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn letters.substring(0, 1).toUpperCase().concat(letters.substring(1));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Generate title name for markdown files.\n\t\t * @param outputFile the output file name\n\t\t * @return the title name\n\t\t */\n\t\tprivate String generateTitleName(String outputFile) {\n\t\t\toutputFile = outputFile\n\t\t\t\t\t.substring(outputFile.lastIndexOf(File.separator) + \"_configuration-properties-\".length(),\n\t\t\t\t\t\t\toutputFile.lastIndexOf(\".\"))\n\t\t\t\t\t.replace('-', ' ').trim();\n\t\t\tif (\"all\".equals(outputFile)) {\n\t\t\t\treturn \"List of configuration\";\n\t\t\t}\n\t\t\tString[] value = outputFile.split(\" \");\n\t\t\tStringBuilder result = new StringBuilder(\" \");\n\t\t\tfor (String s : value) {\n\t\t\t\tresult.append(uppercaseString(s)).append(\" \");\n\t\t\t}\n\t\t\treturn result.toString().trim();\n\t\t}\n\n\t\t/**\n\t\t * Compare the lengths of elements in the given result set and return the max\n\t\t * length.\n\t\t * @param stringStream the result sets to compare\n\t\t * @return the max length\n\t\t */\n\t\tprivate int getMaxLength(Stream<String> stringStream) {\n\t\t\treturn stringStream.map(String::trim).mapToInt(String::length).max().orElse(0);\n\t\t}\n\n\t\t/**\n\t\t * To reduce variance, use the same description width as the current document.\n\t\t */\n\t\tprivate int getDescriptionColumnWidth(String outputFile, Stream<String> stringStream) {\n\t\t\tMap<String, Integer> DES_WIDTH = new HashMap<>();\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-active-directory.md\", 641);\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-active-directory-b2c.md\", 470);\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-service-bus.md\", 194);\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-service-bus-jms.md\", 446);\n\t\t\treturn DES_WIDTH.getOrDefault(outputFile.substring(outputFile.lastIndexOf(\"/\") + 1),\n\t\t\t\t\tgetMaxLength(stringStream));\n\t\t}\n\n\t\tprivate String getServiceName(String outputFile) {\n\t\t\tHashMap<String, String> DES_WIDTH = new HashMap<>();\n\t\t\tDES_WIDTH.put(\"configuration-properties-all.md\", \"Spring Cloud Azure\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-active-directory.md\", \"Microsoft Entra\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-active-directory-b2c.md\", \"Azure Active Directory B2C\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-app-configuration.md\", \"Azure App Configuration\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-cosmos-db.md\", \"Azure Cosmos DB\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-event-hubs.md\", \"Azure Event Hubs\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-key-vault.md\", \"Azure Key Vault\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-key-vault-certificates.md\", \"Azure Key Vault Certificates\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-key-vault-secrets.md\", \"Azure Key Vault Secrets\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-service-bus.md\", \"Azure Service Bus\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-service-bus-jms.md\", \"Azure Service Bus JMS\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-storage.md\", \"Azure Storage\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-storage-blob.md\", \"Azure Storage Blob\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-storage-file-share.md\", \"Azure Storage File Share\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-azure-storage-queue.md\", \"Azure Storage Queue\");\n\t\t\tDES_WIDTH.put(\"configuration-properties-global.md\", \"Spring Cloud Azure Global\");\n\t\t\treturn DES_WIDTH.getOrDefault(outputFile.substring(outputFile.lastIndexOf(\"/\") + 1), null);\n\t\t}\n\n\t\t/**\n\t\t * Generate properties markdown files.\n\t\t * @param outputFile the output file\n\t\t * @param descriptions the result set of properties and their descriptions\n\t\t * @param date the current date string\n\t\t */\n\t\tprivate void generatePropertiesFile(String outputFile, TreeMap<String, String> descriptions, String date) {\n\t\t\tint nameColumnWidth = getMaxLength(descriptions.keySet().stream());\n\t\t\tint descriptionColumnWidth = getDescriptionColumnWidth(outputFile, descriptions.values().stream());\n\t\t\tPath path = Paths.get(outputFile);\n\t\t\tString serviceName = getServiceName(outputFile);\n\t\t\ttry (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {\n\t\t\t\twriter.write(\"---\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(String.format(\"title: %s configuration properties\", serviceName));\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(String.format(\"description: This reference doc contains all %s configuration properties.\",\n\t\t\t\t\t\tserviceName));\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"author: KarlErickson\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"ms.author: hangwan\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"ms.date: \" + date);\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"ms.topic: reference\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"ms.custom: devx-track-java, spring-cloud-azure, devx-track-extended-java\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"---\");\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(String.format(\"# %s configuration properties\", serviceName));\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.newLine();\n\t\t\t\twriter.write(\"> [!div class=\\\"mx-tdBreakAll\\\"]\");\n\t\t\t\twriter.newLine();\n\t\t\t\tString propertyHeader = paddingWithChar(\"Property\", ' ', nameColumnWidth + 1);\n\t\t\t\tString descriptionHeader = paddingWithChar(\"Description\", ' ', descriptionColumnWidth + 1);\n\t\t\t\twriter.write(\"> | \" + propertyHeader + \"| \" + descriptionHeader + \"|\");\n\t\t\t\twriter.newLine();\n\t\t\t\tString markdownTableCol1 = paddingWithChar(\"\", '-', nameColumnWidth + 2);\n\t\t\t\tString markdownTableCol2 = paddingWithChar(\"\", '-', descriptionColumnWidth + 2);\n\t\t\t\twriter.write(\"> |\" + markdownTableCol1 + \"|\" + markdownTableCol2 + \"|\");\n\t\t\t\twriter.newLine();\n\t\t\t\tfor (Map.Entry<String, String> description : descriptions.entrySet()) {\n\t\t\t\t\tString nameCol = paddingWithChar(description.getKey(), ' ', nameColumnWidth);\n\t\t\t\t\tString descriptionCol = paddingWithChar(description.getValue(), ' ', descriptionColumnWidth);\n\t\t\t\t\twriter.write(\"> | \" + nameCol + \" | \" + descriptionCol + \" |\");\n\t\t\t\t\twriter.newLine();\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (IOException e) {\n\t\t\t\te.printStackTrace();\n\t\t\t}\n\t\t\tSystem.out.println(\"Successfully stored the output Markdown file!\");\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/src/test/java/com/azure/spring/cloud/internal/GeneratorTests.java",
    "content": "/*\n * Copyright 2013-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.azure.spring.cloud.internal;\n\nimport java.io.BufferedInputStream;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport org.assertj.core.api.Assertions;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\n\nimport static org.assertj.core.api.BDDAssertions.then;\n\nclass GeneratorTests {\n\n\tprivate static final String DATE = \"MM/dd/yyyy\";\n\n\tprivate static final String INCLUSION_PATTERN = \"spring.cloud.azure.*\";\n\n\t@BeforeEach\n\tpublic void before() {\n\t\tFile file = getOutputFilePath();\n\t\tif (file.delete()) {\n\t\t\tSystem.out.println(\"File deleted!\");\n\t\t}\n\t}\n\n\t@Test\n\tvoid notCreateFileWhenNoPropertiesFound() {\n\t\tMain.Generator generator = new Main.Generator() {\n\t\t\t@Override\n\t\t\tprotected List<Resource> getSpringConfigurationMetadataJsonFilesInClasspath() {\n\t\t\t\treturn new ArrayList<>();\n\t\t\t}\n\t\t};\n\t\tFile file = getOutputFilePath();\n\t\tString outputFile = file.getPath();\n\t\tgenerator.generate(outputFile, INCLUSION_PATTERN, DATE);\n\t\tthen(file).doesNotExist();\n\t}\n\n\t@Test\n\tvoid createFileWhenPropertiesFound() throws IOException {\n\t\tMain.Generator generator = new Main.Generator() {\n\t\t\t@Override\n\t\t\tprotected List<Resource> getSpringConfigurationMetadataJsonFilesInClasspath() throws IOException {\n\t\t\t\tResource[] resources = new PathMatchingResourcePatternResolver()\n\t\t\t\t\t\t.getResources(\"/with-azure-in-name.json\");\n\t\t\t\treturn Arrays.asList(resources);\n\t\t\t}\n\t\t};\n\t\tFile file = getOutputFilePath();\n\t\tString outputFile = file.getPath();\n\t\tgenerator.generate(outputFile, INCLUSION_PATTERN, DATE);\n\t\tthen(file).exists();\n\t\tcompareFile(outputFile);\n\t}\n\n\tprivate void compareFile(String file2) throws IOException {\n\t\ttry (BufferedInputStream inFile1 = new BufferedInputStream(\n\t\t\t\tnew FileInputStream(\"src/test/resources/configuration-properties-output.md\"));\n\t\t\t\tBufferedInputStream inFile2 = new BufferedInputStream(new FileInputStream(file2))) {\n\t\t\tAssertions.assertThat(inFile1).hasSameContentAs(inFile2);\n\t\t}\n\t}\n\n\tprivate File getOutputFilePath() {\n\t\tURL root = this.getClass().getResource(\".\");\n\t\tif (root == null) {\n\t\t\tthrow new IllegalArgumentException(\"The output file path is not found!\");\n\t\t}\n\t\telse {\n\t\t\treturn new File(root.getPath(), \"configuration-properties-output.md\");\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/src/test/java/com/azure/spring/cloud/internal/MainTests.java",
    "content": "/*\n * Copyright 2013-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.azure.spring.cloud.internal;\n\nimport java.io.File;\n\nimport org.junit.jupiter.api.Test;\n\nimport static org.assertj.core.api.BDDAssertions.then;\n\nclass MainTests {\n\n\t@Test\n\tvoid notCreateFileWhenNoParentDirectoryFound() {\n\t\tFile nonExistantFile = new File(\"/this/file/does/not/exist\");\n\t\tMain.main(nonExistantFile.getAbsolutePath());\n\t\tthen(nonExistantFile).doesNotExist();\n\t}\n\n}\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/src/test/resources/configuration-properties-output.md",
    "content": "---\nauthor: KarlErickson\nms.author: v-yonghuiye\nms.date: MM/dd/yyyy\n---\n\n## Output properties\n\n> [!div class=\"mx-tdBreakAll\"]\n> | Property                           | Description                                      |\n> |------------------------------------|--------------------------------------------------|\n> | spring.cloud.azure.first-property  | First Description. The default value is `false`. |\n> | spring.cloud.azure.fourth-property | Fourth Description.                              |\n> | spring.cloud.azure.second-property | Second Description. The default value is `true`. |\n"
  },
  {
    "path": "spring-cloud-azure-markdown-appdendix-generator/src/test/resources/with-azure-in-name.json",
    "content": "{\n  \"properties\": [\n    {\n      \"defaultValue\": \"false\",\n      \"name\": \"spring.cloud.azure.first-property\",\n      \"description\": \"First Description.\",\n      \"type\": \"java.lang.Boolean\"\n    },\n    {\n      \"defaultValue\": \"true\",\n      \"name\": \"spring.cloud.azure.second-property\",\n      \"description\": \"Second Description.\",\n      \"type\": \"java.lang.Boolean\"\n    },\n    {\n      \"defaultValue\": \"true\",\n      \"name\": \"spring.cloud.third-property\",\n      \"description\": \"Third Description.\",\n      \"type\": \"java.lang.Boolean\"\n    },\n    {\n      \"name\": \"spring.cloud.azure.fourth-property\",\n      \"description\": \"Fourth Description.\",\n      \"type\": \"java.lang.Boolean\"\n    }\n  ]\n}\n"
  }
]