diff --git a/CMakeLists.txt b/CMakeLists.txt
index e1c37bb..0d36e94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -370,12 +370,6 @@
 add_subdirectory(extension-framework)
 add_subdirectory(libminifi)
 
-if (ENABLE_ALL OR ENABLE_AZURE)
-    include(GetLibXml2)
-    get_libxml2(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/libxml2/dummy")
-endif()
-
 if (ENABLE_ALL OR ENABLE_PROMETHEUS OR ENABLE_GRAFANA_LOKI OR ENABLE_CIVET)
     include(GetCivetWeb)
     get_civetweb()
diff --git a/cmake/AzureSdkCpp.cmake b/cmake/AzureSdkCpp.cmake
index 375785a..d7d616e 100644
--- a/cmake/AzureSdkCpp.cmake
+++ b/cmake/AzureSdkCpp.cmake
@@ -29,6 +29,12 @@
     FetchContent_MakeAvailable(wil)
 endif()
 
+if (NOT WIN32)
+    include(GetLibXml2)
+    get_libxml2(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/libxml2/dummy")
+endif()
+
 set(WARNINGS_AS_ERRORS OFF CACHE INTERNAL "")
 set(DISABLE_AZURE_CORE_OPENTELEMETRY ON CACHE INTERNAL "")
 set(BUILD_TRANSPORT_CURL ON CACHE INTERNAL "")
@@ -55,3 +61,8 @@
 )
 
 FetchContent_MakeAvailable(asdkext)
+
+if (NOT WIN32)
+    add_dependencies(azure-storage-common LibXml2::LibXml2)
+    add_dependencies(azure-data-tables LibXml2::LibXml2)
+endif()
diff --git a/cmake/BundledLibXml2.cmake b/cmake/BundledLibXml2.cmake
deleted file mode 100644
index 5ab5a74..0000000
--- a/cmake/BundledLibXml2.cmake
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-function(use_bundled_libxml2 SOURCE_DIR BINARY_DIR)
-    message("Using bundled libxml2")
-
-    # Define patch step
-    if (WIN32)
-        set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/libxml2/libxml2-win.patch")
-    endif()
-
-    # Define byproducts
-    if (WIN32)
-        set(BYPRODUCT "lib/xml2.lib")
-    else()
-        set(BYPRODUCT "lib/libxml2.a")
-    endif()
-
-    # Set build options
-    if (WIN32)
-        set(LIBXML2_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-                "-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libxml2-install")
-    endif()
-
-    if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
-        cmake_policy(SET CMP0135 OLD) # Restore the timestamps from the archive https://gitlab.kitware.com/cmake/cmake/-/issues/24003
-    endif()
-
-    # Build project
-    set(LIBXML2_URL ftp://xmlsoft.org/libxml2/libxml2-2.9.10.tar.gz https://ftp.osuosl.org/pub/blfs/conglomeration/libxml2/libxml2-2.9.10.tar.gz)
-    set(LIBXML2_URL_HASH "SHA256=aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f")
-
-    if (WIN32)
-        ExternalProject_Add(
-                libxml2-external
-                URL ${LIBXML2_URL}
-                URL_HASH ${LIBXML2_URL_HASH}
-                SOURCE_DIR "${BINARY_DIR}/thirdparty/libxml2-src"
-                LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
-                CMAKE_ARGS ${LIBXML2_CMAKE_ARGS}
-                PATCH_COMMAND ${PC}
-                BUILD_BYPRODUCTS "${BINARY_DIR}/thirdparty/libxml2-install/${BYPRODUCT}"
-                EXCLUDE_FROM_ALL TRUE
-                DOWNLOAD_NO_PROGRESS TRUE
-                TLS_VERIFY TRUE
-        )
-    else()
-        ExternalProject_Add(
-                libxml2-external
-                URL ${LIBXML2_URL}
-                URL_HASH ${LIBXML2_URL_HASH}
-                BUILD_IN_SOURCE true
-                SOURCE_DIR "${BINARY_DIR}/thirdparty/libxml2-src"
-                BUILD_COMMAND make
-                CMAKE_COMMAND ""
-                UPDATE_COMMAND ""
-                INSTALL_COMMAND make install
-                BUILD_BYPRODUCTS "${BINARY_DIR}/thirdparty/libxml2-install/${BYPRODUCT}"
-                CONFIGURE_COMMAND ""
-                PATCH_COMMAND ./configure --enable-shared=no --enable-static=yes --with-pic=yes --with-iconv=no --with-zlib=no --with-lzma=no --with-python=no --with-ftp=no --with-http=no --prefix=${BINARY_DIR}/thirdparty/libxml2-install
-                STEP_TARGETS build
-                EXCLUDE_FROM_ALL TRUE
-                DOWNLOAD_NO_PROGRESS TRUE
-                TLS_VERIFY TRUE
-        )
-    endif()
-
-    # Set variables
-    set(LIBXML2_FOUND "YES" CACHE STRING "" FORCE)
-    set(LIBXML2_INCLUDE_DIR "${BINARY_DIR}/thirdparty/libxml2-install/include/libxml2" CACHE STRING "" FORCE)
-    set(LIBXML2_INCLUDE_DIRS "${LIBXML2_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(LIBXML2_LIBRARY "${BINARY_DIR}/thirdparty/libxml2-install/${BYPRODUCT}" CACHE STRING "" FORCE)
-    set(LIBXML2_LIBRARIES "${LIBXML2_LIBRARY}" CACHE STRING "" FORCE)
-
-    # Set exported variables for FindPackage.cmake
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_LIBXML2_INCLUDE_DIR=${LIBXML2_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_LIBXML2_LIBRARY=${LIBXML2_LIBRARY}" CACHE STRING "" FORCE)
-
-    # Create imported targets
-    file(MAKE_DIRECTORY ${LIBXML2_INCLUDE_DIR})
-
-    add_library(LibXml2::LibXml2 STATIC IMPORTED)
-    set_target_properties(LibXml2::LibXml2 PROPERTIES IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
-    add_dependencies(LibXml2::LibXml2 libxml2-external)
-    set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIR}")
-endfunction(use_bundled_libxml2)
diff --git a/cmake/GetLibXml2.cmake b/cmake/GetLibXml2.cmake
index 5915b11..2a6c618 100644
--- a/cmake/GetLibXml2.cmake
+++ b/cmake/GetLibXml2.cmake
@@ -21,7 +21,6 @@
         find_package(libxml2 REQUIRED)
     elseif(MINIFI_LIBXML2_SOURCE STREQUAL "BUILD")
         message("Using CMake to build libxml2 from source")
-        include(BundledLibXml2)
-        use_bundled_libxml2(${SOURCE_DIR} ${BINARY_DIR})
+        include(LibXml2)
     endif()
 endfunction(get_libxml2)
diff --git a/cmake/LibXml2.cmake b/cmake/LibXml2.cmake
new file mode 100644
index 0000000..0e3f5d0
--- /dev/null
+++ b/cmake/LibXml2.cmake
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_DEBUG OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_PROGRAMS OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_TESTS OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_CATALOG OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_ICONV OFF CACHE BOOL "" FORCE)
+set(LIBXML2_WITH_ICU OFF CACHE BOOL "" FORCE)
+
+include(FetchContent)
+FetchContent_Declare(
+    libxml2
+    URL https://github.com/GNOME/libxml2/archive/refs/tags/v2.15.0.tar.gz
+    URL_HASH SHA256=e24bd5209afefe390e704ebc55649c7ae240e1f157cefd433ccc86c610d20aac
+    SYSTEM
+)
+FetchContent_MakeAvailable(libxml2)
+
+set(LIBXML2_FOUND "YES" CACHE STRING "" FORCE)
+set(LIBXML2_INCLUDE_DIRS
+    "${libxml2_SOURCE_DIR}/include"
+    "${libxml2_BINARY_DIR}"
+    CACHE STRING "" FORCE)
+if (WIN32)
+    if (CMAKE_GENERATOR STREQUAL "Ninja")
+        set(LIBXML2_LIBRARIES "${libxml2_BINARY_DIR}/libxml2s.lib" CACHE STRING "" FORCE)
+        set(LIBXML2_LIBRARY "${libxml2_BINARY_DIR}/libxml2s.lib" CACHE STRING "" FORCE)
+    else()
+        set(LIBXML2_LIBRARIES "${libxml2_BINARY_DIR}/${CMAKE_BUILD_TYPE}/libxml2s.lib" CACHE STRING "" FORCE)
+        set(LIBXML2_LIBRARY "${libxml2_BINARY_DIR}/${CMAKE_BUILD_TYPE}/libxml2s.lib" CACHE STRING "" FORCE)
+    endif()
+else()
+    set(LIBXML2_LIBRARIES "${libxml2_BINARY_DIR}/libxml2.a" CACHE STRING "" FORCE)
+    set(LIBXML2_LIBRARY "${libxml2_BINARY_DIR}/libxml2.a" CACHE STRING "" FORCE)
+endif()
+
+# Set exported variables for FindPackage.cmake
+set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_LIBXML2_INCLUDE_DIRS=${LIBXML2_INCLUDE_DIRS}" CACHE STRING "" FORCE)
+set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_LIBXML2_LIBRARIES=${LIBXML2_LIBRARIES}" CACHE STRING "" FORCE)
diff --git a/extensions/azure/CMakeLists.txt b/extensions/azure/CMakeLists.txt
index dffcf59..10bf4b5 100644
--- a/extensions/azure/CMakeLists.txt
+++ b/extensions/azure/CMakeLists.txt
@@ -37,7 +37,6 @@
 target_include_directories(minifi-azure BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/extensions/azure)
 
 target_link_libraries(minifi-azure ${LIBMINIFI} Threads::Threads)
-target_link_libraries(minifi-azure LibXml2::LibXml2)
 target_link_libraries(minifi-azure Azure::azure-storage-files-datalake Azure::azure-storage-blobs Azure::azure-storage-common Azure::azure-core Azure::azure-identity)
 
 if (WIN32)
diff --git a/thirdparty/libxml2/libxml2-win.patch b/thirdparty/libxml2/libxml2-win.patch
deleted file mode 100644
index 67162bc..0000000
--- a/thirdparty/libxml2/libxml2-win.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff -rupN orig/CMakeLists.txt patched/CMakeLists.txt
---- orig/CMakeLists.txt	1970-01-01 01:00:00.000000000 +0100
-+++ patched/CMakeLists.txt	2020-04-17 14:16:13.000000000 +0200
-@@ -0,0 +1,65 @@
-+cmake_minimum_required(VERSION 3.7)
-+
-+project(libxml2)
-+
-+set(SOURCES buf.c
-+            c14n.c
-+            catalog.c
-+            chvalid.c
-+            debugXML.c
-+            dict.c
-+            DOCBparser.c
-+            encoding.c
-+            entities.c
-+            error.c
-+            globals.c
-+            hash.c
-+            HTMLparser.c
-+            HTMLtree.c
-+            legacy.c
-+            list.c
-+            nanoftp.c
-+            nanohttp.c
-+            parser.c
-+            parserInternals.c
-+            pattern.c
-+            relaxng.c
-+            SAX.c
-+            SAX2.c
-+            schematron.c
-+            threads.c
-+            tree.c
-+            uri.c
-+            valid.c
-+            xinclude.c
-+            xlink.c
-+            xmlcatalog.c
-+            xmlIO.c
-+            xmlmemory.c
-+            xmlmodule.c
-+            xmlreader.c
-+            xmlregexp.c
-+            xmlsave.c
-+            xmlschemas.c
-+            xmlschemastypes.c
-+            xmlstring.c
-+            xmlunicode.c
-+            xmlwriter.c
-+            xpath.c
-+            xpointer.c)
-+
-+add_library(xml2 STATIC ${SOURCES})
-+
-+set_property(TARGET xml2 PROPERTY POSITION_INDEPENDENT_CODE ON)
-+
-+target_include_directories(xml2
-+                            PRIVATE
-+                              include
-+                              win32/VC10)
-+
-+install(TARGETS xml2
-+    ARCHIVE DESTINATION lib
-+)
-+
-+install(DIRECTORY include/libxml DESTINATION include/libxml2
-+          FILES_MATCHING PATTERN "*.h")
-diff -rupN orig/include/libxml/xmlversion.h patched/include/libxml/xmlversion.h
---- orig/include/libxml/xmlversion.h	2019-10-30 20:14:29.000000000 +0100
-+++ patched/include/libxml/xmlversion.h	2020-04-17 14:52:58.000000000 +0200
-@@ -50,7 +50,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * extra version information, used to show a CVS compilation
-  */
--#define LIBXML_VERSION_EXTRA "-GITv2.9.10-rc1-2-ga5bb6aaa2"
-+#define LIBXML_VERSION_EXTRA ""
- 
- /**
-  * LIBXML_TEST_VERSION:
-@@ -171,7 +171,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * Whether the FTP support is configured in
-  */
--#if 1
-+#if 0
- #define LIBXML_FTP_ENABLED
- #endif
- 
-@@ -180,7 +180,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * Whether the HTTP support is configured in
-  */
--#if 1
-+#if 0
- #define LIBXML_HTTP_ENABLED
- #endif
- 
-@@ -270,7 +270,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * Whether iconv support is available
-  */
--#if 1
-+#if 0
- #define LIBXML_ICONV_ENABLED
- #endif
- 
-@@ -395,7 +395,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * Whether the Zlib support is compiled in
-  */
--#if 1
-+#if 0
- #define LIBXML_ZLIB_ENABLED
- #endif
- 
-@@ -404,7 +404,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(i
-  *
-  * Whether the Lzma support is compiled in
-  */
--#if 1
-+#if 0
- #define LIBXML_LZMA_ENABLED
- #endif
- 
