From 8ad962fc1d8b08538fe906a7c632e85a93cc87ad Mon Sep 17 00:00:00 2001
From: StreamNative Bot <snbot@streamnative.io>
Date: Thu, 1 Feb 2024 03:30:34 +0000
Subject: [PATCH 1/3] Release 3.1.2.2

---
 .idea/vcs.xml                                 |   28 +-
 .mvn/extensions.xml                           |    5 +-
 .mvn/gradle-enterprise.xml                    |    6 +-
 bouncy-castle/bc/pom.xml                      |   16 +-
 bouncy-castle/bcfips-include-test/pom.xml     |   14 +-
 bouncy-castle/bcfips/pom.xml                  |   14 +-
 bouncy-castle/pom.xml                         |   12 +-
 buildtools/pom.xml                            |   79 +-
 buildtools/src/main/resources/log4j2.xml      |   32 +-
 .../src/main/resources/pulsar/checkstyle.xml  |  580 +++--
 .../main/resources/pulsar/suppressions.xml    |  121 +-
 conf/filesystem_offload_core_site.xml         |   52 +-
 conf/functions_log4j2.xml                     |  217 +-
 distribution/io/pom.xml                       |   38 +-
 distribution/io/src/assemble/io.xml           |  155 +-
 distribution/offloaders/pom.xml               |   36 +-
 .../offloaders/src/assemble/offloaders.xml    |    7 +-
 distribution/pom.xml                          |   38 +-
 distribution/server/pom.xml                   |   66 +-
 distribution/server/src/assemble/bin.xml      |   12 +-
 distribution/shell/pom.xml                    |   40 +-
 distribution/shell/src/assemble/shell.xml     |    7 +-
 docker/pom.xml                                |   33 +-
 docker/pulsar-all/pom.xml                     |   12 +-
 docker/pulsar/pom.xml                         |   13 +-
 jclouds-shaded/pom.xml                        |   33 +-
 managed-ledger/pom.xml                        |   36 +-
 pom.xml                                       |  547 ++---
 pulsar-broker-auth-athenz/pom.xml             |   21 +-
 .../src/test/resources/findbugsExclude.xml    |    3 +-
 pulsar-broker-auth-oidc/pom.xml               |   26 +-
 pulsar-broker-auth-sasl/pom.xml               |   23 +-
 pulsar-broker-common/pom.xml                  |   23 +-
 pulsar-broker/pom.xml                         |   98 +-
 pulsar-client-1x-base/pom.xml                 |   14 +-
 .../pulsar-client-1x/pom.xml                  |   17 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../pulsar-client-2x-shaded/pom.xml           |   45 +-
 pulsar-client-admin-api/pom.xml               |  134 +-
 pulsar-client-admin-shaded/pom.xml            |  133 +-
 pulsar-client-admin/pom.xml                   |   26 +-
 pulsar-client-all/pom.xml                     |   79 +-
 pulsar-client-api/pom.xml                     |  145 +-
 .../src/main/resources/findbugsExclude.xml    |    5 +-
 pulsar-client-auth-athenz/pom.xml             |   22 +-
 .../src/test/resources/findbugsExclude.xml    |    1 +
 pulsar-client-auth-sasl/pom.xml               |   22 +-
 pulsar-client-messagecrypto-bc/pom.xml        |   14 +-
 pulsar-client-shaded/pom.xml                  |   61 +-
 pulsar-client-tools-api/pom.xml               |   12 +-
 .../pom.xml                                   |    7 +-
 pulsar-client-tools-test/pom.xml              |   15 +-
 .../src/test/resources/findbugsExclude.xml    |    1 +
 pulsar-client-tools/pom.xml                   |   19 +-
 pulsar-client/pom.xml                         |   39 +-
 .../src/main/resources/findbugsExclude.xml    | 1968 ++++++++---------
 pulsar-common/pom.xml                         |   52 +-
 .../src/main/resources/findbugsExclude.xml    |   66 +-
 pulsar-config-validation/pom.xml              |  120 +-
 pulsar-docs-tools/pom.xml                     |   54 +-
 pulsar-functions/api-java/pom.xml             |   30 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-functions/instance/pom.xml             |   42 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../java-examples-builtin/pom.xml             |   36 +-
 pulsar-functions/java-examples/pom.xml        |   13 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-functions/localrun-shaded/pom.xml      |  825 +++----
 pulsar-functions/localrun/pom.xml             |  157 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../localrun/src/main/resources/log4j2.xml    |   24 +-
 pulsar-functions/pom.xml                      |   47 +-
 pulsar-functions/proto/pom.xml                |  138 +-
 pulsar-functions/runtime-all/pom.xml          |   25 +-
 .../src/main/resources/findbugsExclude.xml    |   21 +-
 .../main/resources/java_instance_log4j2.xml   |  219 +-
 .../resources/kubernetes_instance_log4j2.xml  |   79 +-
 pulsar-functions/runtime/pom.xml              |   21 +-
 .../src/main/resources/findbugsExclude.xml    |   21 +-
 pulsar-functions/secrets/pom.xml              |   13 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-functions/utils/pom.xml                |   32 +-
 pulsar-functions/worker/pom.xml               |   42 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-io/aerospike/pom.xml                   |   18 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-io/alluxio/pom.xml                     |  178 +-
 pulsar-io/aws/pom.xml                         |   17 +-
 .../src/main/resources/findbugsExclude.xml    |    3 +-
 pulsar-io/batch-data-generator/pom.xml        |  146 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/batch-discovery-triggerers/pom.xml  |   16 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/canal/pom.xml                       |  216 +-
 pulsar-io/cassandra/pom.xml                   |   16 +-
 pulsar-io/common/pom.xml                      |   93 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/core/pom.xml                        |   12 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/data-generator/pom.xml              |   88 +-
 pulsar-io/debezium/core/pom.xml               |   23 +-
 pulsar-io/debezium/mongodb/pom.xml            |   80 +-
 pulsar-io/debezium/mssql/pom.xml              |   16 +-
 pulsar-io/debezium/mysql/pom.xml              |   17 +-
 pulsar-io/debezium/oracle/pom.xml             |   16 +-
 pulsar-io/debezium/pom.xml                    |   12 +-
 pulsar-io/debezium/postgres/pom.xml           |   17 +-
 pulsar-io/docs/pom.xml                        |   14 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/dynamodb/pom.xml                    |   24 +-
 pulsar-io/elastic-search/pom.xml              |   21 +-
 pulsar-io/file/pom.xml                        |   28 +-
 pulsar-io/flume/pom.xml                       |  266 ++-
 pulsar-io/hbase/pom.xml                       |  206 +-
 .../src/test/resources/hbase/hbase-site.xml   |   41 +-
 pulsar-io/hdfs2/pom.xml                       |  124 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../src/test/resources/hadoop/core-site.xml   |   17 +-
 .../src/test/resources/hadoop/hdfs-site.xml   |   25 +-
 pulsar-io/hdfs3/pom.xml                       |   64 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../src/test/resources/hadoop/core-site.xml   |   17 +-
 .../src/test/resources/hadoop/hdfs-site.xml   |   25 +-
 pulsar-io/http/pom.xml                        |  119 +-
 pulsar-io/influxdb/pom.xml                    |  138 +-
 pulsar-io/jdbc/clickhouse/pom.xml             |   16 +-
 pulsar-io/jdbc/core/pom.xml                   |   21 +-
 pulsar-io/jdbc/mariadb/pom.xml                |   13 +-
 pulsar-io/jdbc/openmldb/pom.xml               |   12 +-
 pulsar-io/jdbc/pom.xml                        |   10 +-
 pulsar-io/jdbc/postgres/pom.xml               |   12 +-
 pulsar-io/jdbc/sqlite/pom.xml                 |   13 +-
 pulsar-io/kafka-connect-adaptor-nar/pom.xml   |   37 +-
 pulsar-io/kafka-connect-adaptor/pom.xml       |   36 +-
 pulsar-io/kafka/pom.xml                       |   25 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-io/kinesis/pom.xml                     |   35 +-
 pulsar-io/mongo/pom.xml                       |   16 +-
 pulsar-io/netty/pom.xml                       |  144 +-
 .../src/main/resources/findbugsExclude.xml    |   25 +-
 pulsar-io/nsq/pom.xml                         |   29 +-
 pulsar-io/pom.xml                             |   16 +-
 pulsar-io/rabbitmq/pom.xml                    |   19 +-
 pulsar-io/redis/pom.xml                       |  149 +-
 pulsar-io/solr/pom.xml                        |  164 +-
 .../src/main/resources/findbugsExclude.xml    |   45 +-
 pulsar-io/solr/src/test/resources/solr.xml    |   34 +-
 pulsar-io/twitter/pom.xml                     |   26 +-
 pulsar-metadata/pom.xml                       |   25 +-
 .../src/main/resources/findbugsExclude.xml    |   25 +-
 .../src/test/resources/findbugsExclude.xml    |   19 +-
 .../bookkeeper-storage/pom.xml                |  162 +-
 pulsar-package-management/core/pom.xml        |  152 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 .../filesystem-storage/pom.xml                |   61 +-
 pulsar-package-management/pom.xml             |   74 +-
 pulsar-proxy/pom.xml                          |   40 +-
 pulsar-sql/pom.xml                            |  290 ++-
 pulsar-sql/presto-distribution/pom.xml        |   35 +-
 .../src/assembly/assembly.xml                 |  121 +-
 pulsar-sql/presto-pulsar-plugin/pom.xml       |  131 +-
 .../src/assembly/assembly.xml                 |   37 +-
 pulsar-sql/presto-pulsar/pom.xml              |  442 ++--
 pulsar-testclient/pom.xml                     |  303 ++-
 pulsar-transaction/common/pom.xml             |   83 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-transaction/coordinator/pom.xml        |  206 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 pulsar-transaction/pom.xml                    |   15 +-
 pulsar-websocket/pom.xml                      |   33 +-
 .../src/main/resources/findbugsExclude.xml    |    4 +-
 src/assembly-source-package.xml               |   10 +-
 src/check-binary-license.sh                   |    4 +-
 src/findbugs-exclude.xml                      |   28 +-
 src/idea-code-style.xml                       |   71 +-
 ...owasp-dependency-check-false-positives.xml |   76 +-
 src/owasp-dependency-check-suppressions.xml   |  767 ++++---
 src/settings.xml                              |    3 +-
 structured-event-log/pom.xml                  |   14 +-
 testmocks/pom.xml                             |   19 +-
 tests/bc_2_0_0/pom.xml                        |  160 +-
 tests/bc_2_0_0/src/test/resources/pulsar.xml  |   15 +-
 tests/bc_2_0_1/pom.xml                        |  160 +-
 tests/bc_2_0_1/src/test/resources/pulsar.xml  |   15 +-
 tests/bc_2_6_0/pom.xml                        |  174 +-
 .../src/test/resources/backwards-client.xml   |   15 +-
 .../docker-images/java-test-functions/pom.xml |   20 +-
 tests/docker-images/java-test-image/pom.xml   |   17 +-
 tests/docker-images/java-test-plugins/pom.xml |   11 +-
 .../latest-version-image/pom.xml              |   19 +-
 tests/docker-images/pom.xml                   |   10 +-
 tests/integration/pom.xml                     |   50 +-
 .../src/test/resources/pulsar-auth.xml        |    9 +-
 .../pulsar-backwards-compatibility.xml        |   29 +-
 .../src/test/resources/pulsar-cli.xml         |   35 +-
 .../src/test/resources/pulsar-function.xml    |   19 +-
 .../test/resources/pulsar-io-ora-source.xml   |   13 +-
 .../src/test/resources/pulsar-io-sinks.xml    |   15 +-
 .../src/test/resources/pulsar-io-sources.xml  |   19 +-
 .../src/test/resources/pulsar-loadbalance.xml |   15 +-
 .../src/test/resources/pulsar-messaging.xml   |   27 +-
 .../src/test/resources/pulsar-plugin.xml      |   19 +-
 .../src/test/resources/pulsar-process.xml     |   20 +-
 .../src/test/resources/pulsar-proxy.xml       |   15 +-
 .../src/test/resources/pulsar-python.xml      |   13 +-
 .../src/test/resources/pulsar-schema.xml      |   17 +-
 .../src/test/resources/pulsar-semantics.xml   |   13 +-
 .../src/test/resources/pulsar-sql.xml         |   17 +-
 .../src/test/resources/pulsar-standalone.xml  |   15 +-
 .../src/test/resources/pulsar-thread.xml      |   22 +-
 .../src/test/resources/pulsar-tls.xml         |   13 +-
 .../src/test/resources/pulsar-transaction.xml |   13 +-
 .../src/test/resources/pulsar-upgrade.xml     |   13 +-
 .../src/test/resources/pulsar-websocket.xml   |   15 +-
 .../integration/src/test/resources/pulsar.xml |   41 +-
 .../resources/tiered-filesystem-storage.xml   |   15 +-
 .../test/resources/tiered-jcloud-storage.xml  |   15 +-
 tests/pom.xml                                 |   13 +-
 tests/pulsar-client-admin-shade-test/pom.xml  |  187 +-
 .../src/test/resources/pulsar.xml             |   15 +-
 tests/pulsar-client-all-shade-test/pom.xml    |  185 +-
 .../src/test/resources/pulsar.xml             |   15 +-
 tests/pulsar-client-shade-test/pom.xml        |  175 +-
 .../src/test/resources/pulsar.xml             |   15 +-
 tiered-storage/file-system/pom.xml            |  383 ++--
 .../src/main/resources/findbugsExclude.xml    |    1 +
 tiered-storage/jcloud/pom.xml                 |   19 +-
 .../src/main/resources/findbugsExclude.xml    |    1 +
 tiered-storage/pom.xml                        |   11 +-
 229 files changed, 7304 insertions(+), 8427 deletions(-)

diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 99fce8b2b9812..951f00c3cc3b8 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,17 +20,17 @@
 
 -->
 <project version="4">
-    <component name="IssueNavigationConfiguration">
-        <option name="links">
-            <list>
-                <IssueNavigationLink>
-                    <option name="issueRegexp" value="#(\d+)"/>
-                    <option name="linkRegexp" value="https://github.com/apache/pulsar/pull/$1"/>
-                </IssueNavigationLink>
-            </list>
-        </option>
-    </component>
-    <component name="VcsDirectoryMappings">
-        <mapping directory="$PROJECT_DIR$" vcs="Git"/>
-    </component>
+  <component name="IssueNavigationConfiguration">
+    <option name="links">
+      <list>
+        <IssueNavigationLink>
+          <option name="issueRegexp" value="#(\d+)"/>
+          <option name="linkRegexp" value="https://github.com/apache/pulsar/pull/$1"/>
+        </IssueNavigationLink>
+      </list>
+    </option>
+  </component>
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git"/>
+  </component>
 </project>
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
index 872764f899827..ca4639f8053e0 100644
--- a/.mvn/extensions.xml
+++ b/.mvn/extensions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,7 @@
     under the License.
 
 -->
-<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-            xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
+<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
   <extension>
     <groupId>com.gradle</groupId>
     <artifactId>gradle-enterprise-maven-extension</artifactId>
diff --git a/.mvn/gradle-enterprise.xml b/.mvn/gradle-enterprise.xml
index 2667402c23cdb..c8626080d0866 100644
--- a/.mvn/gradle-enterprise.xml
+++ b/.mvn/gradle-enterprise.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,9 +19,7 @@
     under the License.
 
 -->
-<gradleEnterprise
-        xmlns="https://www.gradle.com/gradle-enterprise-maven" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="https://www.gradle.com/gradle-enterprise-maven https://www.gradle.com/schema/gradle-enterprise-maven.xsd">
+<gradleEnterprise xmlns="https://www.gradle.com/gradle-enterprise-maven" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.gradle.com/gradle-enterprise-maven https://www.gradle.com/schema/gradle-enterprise-maven.xsd">
   <server>
     <url>https://ge.apache.org</url>
     <allowUntrusted>false</allowUntrusted>
diff --git a/bouncy-castle/bc/pom.xml b/bouncy-castle/bc/pom.xml
index 5884a45138804..771e9b74556a5 100644
--- a/bouncy-castle/bc/pom.xml
+++ b/bouncy-castle/bc/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>bouncy-castle-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>bouncy-castle-bc</artifactId>
   <name>Apache Pulsar :: Bouncy Castle :: BC</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -39,23 +36,19 @@
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-jdk18on</artifactId>
       <version>${bouncycastle.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-ext-jdk18on</artifactId>
       <version>${bouncycastle.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
-
       <!-- build a `jar in jar` to avoid break bc signature-->
       <plugin>
         <groupId>de.ntcomputer</groupId>
@@ -73,7 +66,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/bouncy-castle/bcfips-include-test/pom.xml b/bouncy-castle/bcfips-include-test/pom.xml
index 99b3e7b39ecb9..8a03935cc9d59 100644
--- a/bouncy-castle/bcfips-include-test/pom.xml
+++ b/bouncy-castle/bcfips-include-test/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>bouncy-castle-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>bcfips-include-test</artifactId>
   <name>Pulsar Bouncy Castle FIPS Test</name>
   <description> Broker and client runs auth include BC FIPS verison</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -39,7 +37,6 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
@@ -53,7 +50,6 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
@@ -66,7 +62,6 @@
       </exclusions>
       <scope>test</scope>
     </dependency>
-
     <!--exclude bouncy castle, then load fips version-->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -74,7 +69,6 @@
       <version>${project.version}</version>
       <classifier>pkg</classifier>
     </dependency>
-
   </dependencies>
   <build>
     <plugins>
diff --git a/bouncy-castle/bcfips/pom.xml b/bouncy-castle/bcfips/pom.xml
index 5fff43ccaeffa..244e159641631 100644
--- a/bouncy-castle/bcfips/pom.xml
+++ b/bouncy-castle/bcfips/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>bouncy-castle-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>bouncy-castle-bcfips</artifactId>
   <name>Apache Pulsar :: Bouncy Castle :: BC-FIPS</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -39,20 +36,17 @@
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bc-fips</artifactId>
       <version>${bouncycastle.bc-fips.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-fips</artifactId>
       <version>${bouncycastle.bcpkix-fips.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <!-- build a `jar in jar` to avoid break bc signature-->
diff --git a/bouncy-castle/pom.xml b/bouncy-castle/pom.xml
index ed380d884df0f..6f6ac8e2c5c54 100644
--- a/bouncy-castle/pom.xml
+++ b/bouncy-castle/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,17 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <build>
     <pluginManagement>
       <plugins>
@@ -42,16 +41,13 @@
       </plugins>
     </pluginManagement>
   </build>
-
   <artifactId>bouncy-castle-parent</artifactId>
   <name>Apache Pulsar :: Bouncy Castle :: Parent</name>
-
   <!--make it easy for user to load Bouncy Castle and Bouncy Castle FIPS-->
   <modules>
     <!--2 module for nar-->
     <module>bc</module>
     <module>bcfips</module>
-
     <!--2 module for fips version test-->
     <module>bcfips-include-test</module>
   </modules>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index 2d0715004769d..4987537a05153 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,25 +19,21 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
     <groupId>org.apache</groupId>
     <artifactId>apache</artifactId>
     <version>29</version>
-    <relativePath />
+    <relativePath/>
   </parent>
-
-  <groupId>org.apache.pulsar</groupId>
+  <groupId>io.streamnative</groupId>
   <artifactId>buildtools</artifactId>
-  <version>3.1.2</version>
+  <version>3.1.2.2</version>
   <packaging>jar</packaging>
   <name>Pulsar Build Tools</name>
-
   <properties>
-    <project.build.outputTimestamp>2023-11-30T15:05:59Z</project.build.outputTimestamp>
+    <project.build.outputTimestamp>2024-02-01T03:30:33Z</project.build.outputTimestamp>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <surefire.version>3.1.0</surefire.version>
@@ -60,7 +57,6 @@
       --add-opens java.base/jdk.internal.platform=ALL-UNNAMED <!--LinuxInfoUtils-->
     </test.additional.args>
   </properties>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -72,9 +68,7 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
-
   <dependencies>
-
     <dependency>
       <groupId>org.yaml</groupId>
       <artifactId>snakeyaml</artifactId>
@@ -95,7 +89,6 @@
       <artifactId>guice</artifactId>
       <version>${guice.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
@@ -147,7 +140,6 @@
       <version>${mockito.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -256,6 +248,55 @@
           <excludes>**/proto/*</excludes>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>attach-sources</id>
+            <goals>
+              <goal>jar-no-fork</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-gpg-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>sign-artifacts</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>sign</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
     <extensions>
       <extension>
@@ -265,4 +306,14 @@
       </extension>
     </extensions>
   </build>
+  <distributionManagement>
+    <snapshotRepository>
+      <id>ossrh</id>
+      <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
+    </snapshotRepository>
+    <repository>
+      <id>ossrh</id>
+      <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+    </repository>
+  </distributionManagement>
 </project>
diff --git a/buildtools/src/main/resources/log4j2.xml b/buildtools/src/main/resources/log4j2.xml
index 184f58487eaf0..9e12d754fe7b5 100644
--- a/buildtools/src/main/resources/log4j2.xml
+++ b/buildtools/src/main/resources/log4j2.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,19 +20,19 @@
 
 -->
 <Configuration status="INFO">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{ISO8601_OFFSET_DATE_TIME_HHMM} %-5level [%t{12}] %c{1.}@%L - %msg %X%n" />
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="warn">
-            <AppenderRef ref="Console" />
-        </Root>
-        <Logger name="org.eclipse.jetty" level="info"/>
-        <Logger name="org.apache.pulsar" level="info"/>
-        <Logger name="org.apache.bookkeeper" level="info"/>
-        <Logger name="org.apache.kafka" level="info"/>
-        <Logger name="org.testcontainers" level="info"/>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d{ISO8601_OFFSET_DATE_TIME_HHMM} %-5level [%t{12}] %c{1.}@%L - %msg %X%n"/>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Root level="warn">
+      <AppenderRef ref="Console"/>
+    </Root>
+    <Logger name="org.eclipse.jetty" level="info"/>
+    <Logger name="org.apache.pulsar" level="info"/>
+    <Logger name="org.apache.bookkeeper" level="info"/>
+    <Logger name="org.apache.kafka" level="info"/>
+    <Logger name="org.testcontainers" level="info"/>
+  </Loggers>
 </Configuration>
diff --git a/buildtools/src/main/resources/pulsar/checkstyle.xml b/buildtools/src/main/resources/pulsar/checkstyle.xml
index c63c8993408de..7a32584cc4dd6 100644
--- a/buildtools/src/main/resources/pulsar/checkstyle.xml
+++ b/buildtools/src/main/resources/pulsar/checkstyle.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,298 +19,241 @@
     under the License.
 
 -->
-<!DOCTYPE module PUBLIC
-        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
-        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
-
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
 <!-- This is a checkstyle configuration file. For descriptions of
 what the following rules do, please see the checkstyle configuration
 page at http://checkstyle.sourceforge.net/config.html -->
-
 <module name="Checker">
-    <!--
+  <!--
 
     LENGTH and CODING CHECKS
 
     -->
-
-    <module name="LineLength">
-        <!-- Checks if a line is too long. -->
-        <property name="max" value="120"/>
-        <property name="severity" value="error"/>
-
-        <!-- Checks only for Java files. -->
-        <property name="fileExtensions" value="java"/>
-
-        <!--
+  <module name="LineLength">
+    <!-- Checks if a line is too long. -->
+    <property name="max" value="120"/>
+    <property name="severity" value="error"/>
+    <!-- Checks only for Java files. -->
+    <property name="fileExtensions" value="java"/>
+    <!--
           The default ignore pattern exempts the following elements:
             - import statements
             - long URLs inside comments
         -->
-
-        <property name="ignorePattern"
-                  value="^(package .*;\s*)|(import .*;\s*)|( *\* .*https?://.*)$"/>
+    <property name="ignorePattern" value="^(package .*;\s*)|(import .*;\s*)|( *\* .*https?://.*)$"/>
+  </module>
+  <!-- Required to support SuppressWarningsComment -->
+  <!--    <module name="FileContentsHolder"/>-->
+  <module name="SuppressWarningsFilter"/>
+  <module name="FileTabCharacter">
+    <!-- Checks that there are no tab characters in the file. -->
+  </module>
+  <module name="RegexpSingleline">
+    <!-- Checks that TODOs don't have stuff in parenthesis, e.g., username. -->
+    <property name="format" value="((//.*)|(\*.*))TODO\("/>
+    <property name="message" value="TODO comments must not include usernames."/>
+    <property name="severity" value="error"/>
+  </module>
+  <module name="RegexpSingleline">
+    <property name="format" value="\s+$"/>
+    <property name="message" value="Trailing whitespace"/>
+    <property name="severity" value="error"/>
+  </module>
+  <module name="RegexpSingleline">
+    <property name="format" value="Throwables.propagate\("/>
+    <property name="message" value="Throwables.propagate is deprecated"/>
+    <property name="severity" value="error"/>
+  </module>
+  <!-- Prevent *Tests.java as tools may not pick them up -->
+  <module name="RegexpOnFilename">
+    <property name="fileNamePattern" value=".*Tests\.java$"/>
+  </module>
+  <module name="SuppressionFilter">
+    <property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml"/>
+  </module>
+  <!-- Check that every module has a package-info.java -->
+  <module name="JavadocPackage"/>
+  <!-- All Java AST specific tests live under TreeWalker module. -->
+  <module name="TreeWalker">
+    <module name="SuppressionCommentFilter">
+      <property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
+      <property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
+      <property name="checkFormat" value="$1"/>
     </module>
-
-    <!-- Required to support SuppressWarningsComment -->
-    <!--    <module name="FileContentsHolder"/>-->
-
-    <module name="SuppressWarningsFilter"/>
-
-    <module name="FileTabCharacter">
-        <!-- Checks that there are no tab characters in the file. -->
+    <module name="SuppressWarningsHolder"/>
+    <module name="TodoComment">
+      <!-- Checks that disallowed strings are not used in comments.  -->
+      <property name="format" value="(FIXME)|(XXX)|(@author)"/>
     </module>
+    <!--
 
-    <module name="RegexpSingleline">
-        <!-- Checks that TODOs don't have stuff in parenthesis, e.g., username. -->
-        <property name="format" value="((//.*)|(\*.*))TODO\("/>
-        <property name="message" value="TODO comments must not include usernames." />
-        <property name="severity" value="error" />
-    </module>
+        IMPORT CHECKS
 
-    <module name="RegexpSingleline">
-        <property name="format" value="\s+$"/>
-        <property name="message" value="Trailing whitespace"/>
-        <property name="severity" value="error"/>
+        -->
+    <module name="RedundantImport">
+      <!-- Checks for redundant import statements. -->
+      <property name="severity" value="error"/>
+      <message key="import.redundancy" value="Redundant import {0}."/>
     </module>
-
-    <module name="RegexpSingleline">
-        <property name="format" value="Throwables.propagate\("/>
-        <property name="message" value="Throwables.propagate is deprecated"/>
-        <property name="severity" value="error"/>
+    <module name="ImportOrder">
+      <property name="severity" value="error"/>
+      <!-- This ensures that static imports go first. -->
+      <property name="option" value="top"/>
+      <property name="sortStaticImportsAlphabetically" value="true"/>
+      <property name="tokens" value="STATIC_IMPORT, IMPORT"/>
+      <message key="import.ordering" value="Import {0} appears after other imports that it should precede"/>
     </module>
-
-    <!-- Prevent *Tests.java as tools may not pick them up -->
-    <module name="RegexpOnFilename">
-        <property name="fileNamePattern" value=".*Tests\.java$" />
+    <module name="AvoidStarImport">
+      <property name="severity" value="error"/>
     </module>
-
-    <module name="SuppressionFilter">
-        <property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml" />
+    <module name="IllegalImport">
+      <property name="illegalPkgs" value="autovalue.shaded, avro.shaded, bk-shade, com.google.api.client.repackaged, com.google.appengine.repackaged, org.apache.curator.shaded, org.testcontainers.shaded, org.junit"/>
     </module>
-
-    <!-- Check that every module has a package-info.java -->
-    <module name="JavadocPackage"/>
-
-    <!-- All Java AST specific tests live under TreeWalker module. -->
-    <module name="TreeWalker">
-
-        <module name="SuppressionCommentFilter">
-            <property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
-            <property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
-            <property name="checkFormat" value="$1"/>
-        </module>
-
-        <module name="SuppressWarningsHolder" />
-
-        <module name="TodoComment">
-            <!-- Checks that disallowed strings are not used in comments.  -->
-            <property name="format" value="(FIXME)|(XXX)|(@author)" />
-        </module>
-
-        <!--
-
-        IMPORT CHECKS
-
-        -->
-
-        <module name="RedundantImport">
-            <!-- Checks for redundant import statements. -->
-            <property name="severity" value="error"/>
-            <message key="import.redundancy"
-                     value="Redundant import {0}."/>
-        </module>
-
-        <module name="ImportOrder">
-            <property name="severity" value="error"/>
-            <!-- This ensures that static imports go first. -->
-            <property name="option" value="top"/>
-            <property name="sortStaticImportsAlphabetically" value="true"/>
-            <property name="tokens" value="STATIC_IMPORT, IMPORT"/>
-            <message key="import.ordering"
-                     value="Import {0} appears after other imports that it should precede"/>
-        </module>
-
-        <module name="AvoidStarImport">
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="IllegalImport">
-            <property name="illegalPkgs"
-                      value="autovalue.shaded, avro.shaded, bk-shade, com.google.api.client.repackaged, com.google.appengine.repackaged, org.apache.curator.shaded, org.testcontainers.shaded, org.junit" />
-        </module>
-
-        <module name="RedundantModifier">
-            <!-- Checks for redundant modifiers on various symbol definitions.
+    <module name="RedundantModifier">
+      <!-- Checks for redundant modifiers on various symbol definitions.
               See: http://checkstyle.sourceforge.net/config_modifier.html#RedundantModifier
             -->
-            <property name="tokens" value="METHOD_DEF, VARIABLE_DEF, ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF"/>
-        </module>
-
-        <!--
+      <property name="tokens" value="METHOD_DEF, VARIABLE_DEF, ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF"/>
+    </module>
+    <!--
             IllegalImport cannot exclude classes, and c.g.api.client.util is used for some shaded
             code and some useful code. So we need to fall back to Regexp.
         -->
-        <module name="RegexpSinglelineJava">
-            <property name="format" value="com\.google\.api\.client\.util\.(ByteStreams|Charsets|Collections2|Joiner|Lists|Maps|Objects|Preconditions|Sets|Strings|Throwables)"/>
-        </module>
-
-        <!--
+    <module name="RegexpSinglelineJava">
+      <property name="format" value="com\.google\.api\.client\.util\.(ByteStreams|Charsets|Collections2|Joiner|Lists|Maps|Objects|Preconditions|Sets|Strings|Throwables)"/>
+    </module>
+    <!--
              Require static importing from Preconditions.
         -->
-        <module name="RegexpSinglelineJava">
-            <property name="format" value="^import com.google.common.base.Preconditions;$"/>
-            <property name="message" value="Static import functions from Guava Preconditions"/>
-        </module>
-
-        <module name="UnusedImports">
-            <property name="severity" value="error"/>
-            <property name="processJavadoc" value="true"/>
-            <message key="import.unused"
-                     value="Unused import: {0}."/>
-        </module>
-
-        <!--
+    <module name="RegexpSinglelineJava">
+      <property name="format" value="^import com.google.common.base.Preconditions;$"/>
+      <property name="message" value="Static import functions from Guava Preconditions"/>
+    </module>
+    <module name="UnusedImports">
+      <property name="severity" value="error"/>
+      <property name="processJavadoc" value="true"/>
+      <message key="import.unused" value="Unused import: {0}."/>
+    </module>
+    <!--
 
         JAVADOC CHECKS
 
         -->
-
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-        <module name="JavadocMethod">
-            <property name="scope" value="protected"/>
-            <property name="severity" value="error"/>
-            <property name="allowMissingParamTags" value="true"/>
-            <property name="allowMissingReturnTag" value="true"/>
-        </module>
-
-        <!-- Check that paragraph tags are used correctly in Javadoc. -->
-        <!--        <module name="JavadocParagraph"/>-->
-
-        <module name="JavadocType">
-            <property name="scope" value="protected"/>
-            <property name="severity" value="error"/>
-            <property name="allowMissingParamTags" value="true"/>
-        </module>
-
-        <module name="JavadocStyle">
-            <property name="severity" value="error"/>
-            <property name="checkHtml" value="true"/>
-        </module>
-
-        <!--
+    <!-- Checks for Javadoc comments.                     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+    <module name="JavadocMethod">
+      <property name="scope" value="protected"/>
+      <property name="severity" value="error"/>
+      <property name="allowMissingParamTags" value="true"/>
+      <property name="allowMissingReturnTag" value="true"/>
+    </module>
+    <!-- Check that paragraph tags are used correctly in Javadoc. -->
+    <!--        <module name="JavadocParagraph"/>-->
+    <module name="JavadocType">
+      <property name="scope" value="protected"/>
+      <property name="severity" value="error"/>
+      <property name="allowMissingParamTags" value="true"/>
+    </module>
+    <module name="JavadocStyle">
+      <property name="severity" value="error"/>
+      <property name="checkHtml" value="true"/>
+    </module>
+    <!--
 
         NAMING CHECKS
 
         -->
-
-        <!-- Item 38 - Adhere to generally accepted naming conventions -->
-
-        <module name="PackageName">
-            <!-- Validates identifiers for package names against the
+    <!-- Item 38 - Adhere to generally accepted naming conventions -->
+    <module name="PackageName">
+      <!-- Validates identifiers for package names against the
               supplied expression. -->
-            <!-- Here the default checkstyle rule restricts package name parts to
+      <!-- Here the default checkstyle rule restricts package name parts to
               seven characters, this is not in line with common practice at Google.
             -->
-            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="TypeNameCheck">
-            <!-- Validates static, final fields against the
+      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="TypeNameCheck">
+      <!-- Validates static, final fields against the
             expression "^[A-Z][a-zA-Z0-9]*$". -->
-            <metadata name="altname" value="TypeName"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="ConstantNameCheck">
-            <!-- Validates non-private, static, final fields against the supplied
+      <metadata name="altname" value="TypeName"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ConstantNameCheck">
+      <!-- Validates non-private, static, final fields against the supplied
             public/package final fields "^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$". -->
-            <metadata name="altname" value="ConstantName"/>
-            <property name="applyToPublic" value="true"/>
-            <property name="applyToProtected" value="true"/>
-            <property name="applyToPackage" value="true"/>
-            <property name="applyToPrivate" value="false"/>
-            <property name="format" value="^([A-Z][A-Za-z0-9_]*|FLAG_.*)$"/>
-            <message key="name.invalidPattern"
-                     value="Variable ''{0}'' should be in ALL_CAPS (if it is a constant) or be private (otherwise)."/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="StaticVariableNameCheck">
-            <!-- Validates static, non-final fields against the supplied
+      <metadata name="altname" value="ConstantName"/>
+      <property name="applyToPublic" value="true"/>
+      <property name="applyToProtected" value="true"/>
+      <property name="applyToPackage" value="true"/>
+      <property name="applyToPrivate" value="false"/>
+      <property name="format" value="^([A-Z][A-Za-z0-9_]*|FLAG_.*)$"/>
+      <message key="name.invalidPattern" value="Variable ''{0}'' should be in ALL_CAPS (if it is a constant) or be private (otherwise)."/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="StaticVariableNameCheck">
+      <!-- Validates static, non-final fields against the supplied
             expression "^[a-z][a-zA-Z0-9]*_?$". -->
-            <metadata name="altname" value="StaticVariableName"/>
-            <property name="applyToPublic" value="true"/>
-            <property name="applyToProtected" value="true"/>
-            <property name="applyToPackage" value="true"/>
-            <property name="applyToPrivate" value="true"/>
-            <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="MemberNameCheck">
-            <!-- Validates non-static members against the supplied expression. -->
-            <metadata name="altname" value="MemberName"/>
-            <property name="applyToPublic" value="true"/>
-            <property name="applyToProtected" value="true"/>
-            <property name="applyToPackage" value="true"/>
-            <property name="applyToPrivate" value="true"/>
-            <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="MethodNameCheck">
-            <!-- Validates identifiers for method names. -->
-            <metadata name="altname" value="MethodName"/>
-            <property name="format" value="(^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$|Void)"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="ParameterName">
-            <!-- Validates identifiers for method parameters against the
+      <metadata name="altname" value="StaticVariableName"/>
+      <property name="applyToPublic" value="true"/>
+      <property name="applyToProtected" value="true"/>
+      <property name="applyToPackage" value="true"/>
+      <property name="applyToPrivate" value="true"/>
+      <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MemberNameCheck">
+      <!-- Validates non-static members against the supplied expression. -->
+      <metadata name="altname" value="MemberName"/>
+      <property name="applyToPublic" value="true"/>
+      <property name="applyToProtected" value="true"/>
+      <property name="applyToPackage" value="true"/>
+      <property name="applyToPrivate" value="true"/>
+      <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MethodNameCheck">
+      <!-- Validates identifiers for method names. -->
+      <metadata name="altname" value="MethodName"/>
+      <property name="format" value="(^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$|Void)"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="ParameterName">
+      <!-- Validates identifiers for method parameters against the
               expression "^[a-z][a-zA-Z0-9]*$". -->
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="LocalFinalVariableName">
-            <!-- Validates identifiers for local final variables against the
+      <property name="severity" value="error"/>
+    </module>
+    <module name="LocalFinalVariableName">
+      <!-- Validates identifiers for local final variables against the
               expression "^[a-z][a-zA-Z0-9]*$". -->
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="LocalVariableName">
-            <!-- Validates identifiers for local variables against the
+      <property name="severity" value="error"/>
+    </module>
+    <module name="LocalVariableName">
+      <!-- Validates identifiers for local variables against the
               expression "^[a-z][a-zA-Z0-9]*$". -->
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Type parameters must be either one of the four blessed letters
+      <property name="severity" value="error"/>
+    </module>
+    <!-- Type parameters must be either one of the four blessed letters
         T, K, V, W, X or else be capital-case terminated with a T,
         such as MyGenericParameterT -->
-        <module name="ClassTypeParameterName">
-            <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*))$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="MethodTypeParameterName">
-            <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="InterfaceTypeParameterName">
-            <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="LeftCurly">
-            <!-- Checks for placement of the left curly brace ('{'). -->
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="RightCurly">
-            <!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on
+    <module name="ClassTypeParameterName">
+      <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*))$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="MethodTypeParameterName">
+      <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="InterfaceTypeParameterName">
+      <property name="format" value="^(((T|K|V|W|X|R)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="LeftCurly">
+      <!-- Checks for placement of the left curly brace ('{'). -->
+      <property name="severity" value="error"/>
+    </module>
+    <module name="RightCurly">
+      <!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on
             the same line. e.g., the following example is fine:
             <pre>
               if {
@@ -318,7 +261,7 @@ page at http://checkstyle.sourceforge.net/config.html -->
               } else
             </pre>
             -->
-            <!-- This next example is not fine:
+      <!-- This next example is not fine:
             <pre>
               if {
                 ...
@@ -326,109 +269,84 @@ page at http://checkstyle.sourceforge.net/config.html -->
               else
             </pre>
             -->
-            <property name="option" value="same"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Checks for braces around if and else blocks -->
-        <module name="NeedBraces">
-            <property name="severity" value="error"/>
-            <property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
-        </module>
-
-        <module name="UpperEll">
-            <!-- Checks that long constants are defined with an upper ell.-->
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="FallThrough">
-            <!-- Warn about falling through to the next case statement.  Similar to
+      <property name="option" value="same"/>
+      <property name="severity" value="error"/>
+    </module>
+    <!-- Checks for braces around if and else blocks -->
+    <module name="NeedBraces">
+      <property name="severity" value="error"/>
+      <property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
+    </module>
+    <module name="UpperEll">
+      <!-- Checks that long constants are defined with an upper ell.-->
+      <property name="severity" value="error"/>
+    </module>
+    <module name="FallThrough">
+      <!-- Warn about falling through to the next case statement.  Similar to
             javac -Xlint:fallthrough, but the check is suppressed if a single-line comment
             on the last non-blank line preceding the fallen-into case contains 'fall through' (or
             some other variants that we don't publicized to promote consistency).
             -->
-            <property name="reliefPattern"
-                      value="fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <!-- Checks for over-complicated boolean expressions. -->
-        <module name="SimplifyBooleanExpression"/>
-
-        <!-- Detects empty statements (standalone ";" semicolon). -->
-        <module name="EmptyStatement"/>
-
-        <!--
+      <property name="reliefPattern" value="fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on"/>
+      <property name="severity" value="error"/>
+    </module>
+    <!-- Checks for over-complicated boolean expressions. -->
+    <module name="SimplifyBooleanExpression"/>
+    <!-- Detects empty statements (standalone ";" semicolon). -->
+    <module name="EmptyStatement"/>
+    <!--
 
         WHITESPACE CHECKS
 
         -->
-
-        <module name="WhitespaceAround">
-            <!-- Checks that various tokens are surrounded by whitespace.
+    <module name="WhitespaceAround">
+      <!-- Checks that various tokens are surrounded by whitespace.
                  This includes most binary operators and keywords followed
                  by regular or curly braces.
             -->
-            <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR,
-        BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,
-        EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
-        LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
-        LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,
-        MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,
-        SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="WhitespaceAfter">
-            <!-- Checks that commas, semicolons and typecasts are followed by
+      <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR,         BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,         EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,         LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,         LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,         MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,         SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="WhitespaceAfter">
+      <!-- Checks that commas, semicolons and typecasts are followed by
                  whitespace.
             -->
-            <property name="tokens" value="COMMA, SEMI, TYPECAST"/>
-        </module>
-
-        <module name="NoWhitespaceAfter">
-            <!-- Checks that there is no whitespace after various unary operators.
+      <property name="tokens" value="COMMA, SEMI, TYPECAST"/>
+    </module>
+    <module name="NoWhitespaceAfter">
+      <!-- Checks that there is no whitespace after various unary operators.
                  Linebreaks are allowed.
             -->
-            <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,
-        UNARY_PLUS"/>
-            <property name="allowLineBreaks" value="true"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="NoWhitespaceBefore">
-            <!-- Checks that there is no whitespace before various unary operators.
+      <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,         UNARY_PLUS"/>
+      <property name="allowLineBreaks" value="true"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="NoWhitespaceBefore">
+      <!-- Checks that there is no whitespace before various unary operators.
                  Linebreaks are allowed.
             -->
-            <property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
-            <property name="allowLineBreaks" value="true"/>
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="OperatorWrap">
-            <!-- Checks that operators like + and ? appear at newlines rather than
+      <property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
+      <property name="allowLineBreaks" value="true"/>
+      <property name="severity" value="error"/>
+    </module>
+    <module name="OperatorWrap">
+      <!-- Checks that operators like + and ? appear at newlines rather than
                  at the end of the previous line.
             -->
-            <property name="option" value="NL"/>
-            <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL,
-        GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD,
-        NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
-        </module>
-
-        <module name="OperatorWrap">
-            <!-- Checks that assignment operators are at the end of the line. -->
-            <property name="option" value="eol"/>
-            <property name="tokens" value="ASSIGN"/>
-        </module>
-
-        <module name="ParenPad">
-            <!-- Checks that there is no whitespace before close parens or after
+      <property name="option" value="NL"/>
+      <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL,         GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD,         NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
+    </module>
+    <module name="OperatorWrap">
+      <!-- Checks that assignment operators are at the end of the line. -->
+      <property name="option" value="eol"/>
+      <property name="tokens" value="ASSIGN"/>
+    </module>
+    <module name="ParenPad">
+      <!-- Checks that there is no whitespace before close parens or after
                  open parens.
             -->
-            <property name="severity" value="error"/>
-        </module>
-
-        <module name="ModifierOrder"/>
-
+      <property name="severity" value="error"/>
     </module>
+    <module name="ModifierOrder"/>
+  </module>
 </module>
diff --git a/buildtools/src/main/resources/pulsar/suppressions.xml b/buildtools/src/main/resources/pulsar/suppressions.xml
index 57a01c60f6a27..e558a8a0618fd 100644
--- a/buildtools/src/main/resources/pulsar/suppressions.xml
+++ b/buildtools/src/main/resources/pulsar/suppressions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,69 +19,60 @@
     under the License.
 
 -->
-<!DOCTYPE suppressions PUBLIC
-        "-//Puppy Crawl//DTD Suppressions 1.1//EN"
-        "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
-
+<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
 <suppressions>
-    <suppress checks="JavadocPackage" files=".*[\\/]src[\\/]test[\\/].*"/>
-    <suppress checks="JavadocPackage" files=".*[\\/]maven-archetypes[\\/].*"/>
-    <suppress checks="JavadocPackage" files=".*[\\/]examples[\\/].*"/>
-
-    <!-- suppress javadoc check for impl classes and package-info.java -->
-    <suppress checks="JavadocType" files=".*Impl\.java$" />
-    <suppress checks="JavadocStyle" files=".+[\\/]package-info\.java$" />
-
-    <!-- suppress all checks in the generated directories -->
-    <suppress checks=".*" files=".+[\\/]generated[\\/].+\.java"/>
-    <suppress checks=".*" files=".+[\\/]generated-sources[\\/].+\.java"/>
-    <suppress checks=".*" files=".+[\\/]generated-test-sources[\\/].+\.java"/>
-
-    <!-- suppress most all checks expect below-->
-    <suppress checks="^(?!.*(UnusedImports|IllegalImport)).*$" files=".*[\\/]src[\\/]test[\\/].*"/>
-
-    <suppress checks="IllegalImport" files="ProxyServiceStarter.java"/>
-
-    <!-- suppress all checks in the copied code -->
-    <suppress checks=".*" files=".+[\\/]com[\\/]scurrilous[\\/]circe[\\/].+\.java"/>
-
-    <suppress checks=".*" files="MLDataFormats.java"/>
-    <suppress checks=".*" files="BitSetRecyclable.java"/>
-    <!-- pulsar io -->
-    <suppress checks="RegexpSinglelineJava" files="KafkaConnectData.java"/>
-    <suppress checks="LineLength" files="KafkaConnectData.java"/>
-    <suppress checks="RegexpSinglelineJava" files="KafkaConnectSink.java"/>
-    <!-- pulsar io es -->
-    <suppress checks="LineLength" files="ElasticSearchConfig.java"/>
-    <suppress checks="LineLength" files="ElasticSearchClient.java"/>
-    <!-- pulsar io flume -->
-    <suppress checks="RegexpSingleline" files="Application.java"/>
-    <suppress checks="RegexpSinglelineJava" files="AbstractConfigurationProvider.java"/>
-    <suppress checks="RegexpSinglelineJava" files="AbstractZooKeeperConfigurationProvider.java"/>
-    <suppress checks="RegexpSinglelineJava" files="PollingPropertiesFileConfigurationProvider.java"/>
-    <suppress checks="RegexpSinglelineJava" files="EnvVarResolverProperties.java"/>
-    <!-- pulsar io hbase -->
-    <suppress checks="RegexpSinglelineJava" files="HbaseAbstractSink.java"/>
-    <suppress checks="RegexpSinglelineJava" files="HbaseAbstractConfig.java"/>
-    <suppress checks="RegexpSinglelineJava" files="HbaseSinkConfig.java"/>
-    <!-- pulsar io kafka -->
-    <suppress checks="FallThrough" files="KafkaConnectData.java"/>
-    <!-- pulsar io influxdb -->
-    <suppress checks="RegexpSinglelineJava" files="InfluxDBSinkConfig.java"/>
-    <!-- pulsar io kinesis -->
-    <suppress checks="LineLength" files="KinesisSinkConfig.java"/>
-    <suppress checks="LineLength" files="KinesisSink.java"/>
-    <suppress checks=".*" files=".+[\\/]org[\\/]apache[\\/]pulsar[\\/]io[\\/]kinesis[\\/]fbs[\\/].+.java"/>
-    <!-- pulsar io mongo -->
-    <suppress checks="RegexpSinglelineJava" files="MongoSink.java"/>
-    <suppress checks="RegexpSinglelineJava" files="MongoConfig.java"/>
-    <!-- pulsar io rabbitmq -->
-    <suppress checks="RegexpSinglelineJava" files="RabbitMQAbstractConfig.java"/>
-    <suppress checks="RegexpSinglelineJava" files="RabbitMQSourceConfig.java"/>
-    <suppress checks="RegexpSinglelineJava" files="RabbitMQSinkConfig.java"/>
-    <!-- pulsar io reids -->
-    <suppress checks="RegexpSinglelineJava" files="RedisAbstractConfig.java"/>
-    <suppress checks="RegexpSinglelineJava" files="RedisSinkConfig.java"/>
-    <!-- pulsar io solr -->
-    <suppress checks="RegexpSinglelineJava" files="SolrSinkConfig.java"/>
+  <suppress checks="JavadocPackage" files=".*[\\/]src[\\/]test[\\/].*"/>
+  <suppress checks="JavadocPackage" files=".*[\\/]maven-archetypes[\\/].*"/>
+  <suppress checks="JavadocPackage" files=".*[\\/]examples[\\/].*"/>
+  <!-- suppress javadoc check for impl classes and package-info.java -->
+  <suppress checks="JavadocType" files=".*Impl\.java$"/>
+  <suppress checks="JavadocStyle" files=".+[\\/]package-info\.java$"/>
+  <!-- suppress all checks in the generated directories -->
+  <suppress checks=".*" files=".+[\\/]generated[\\/].+\.java"/>
+  <suppress checks=".*" files=".+[\\/]generated-sources[\\/].+\.java"/>
+  <suppress checks=".*" files=".+[\\/]generated-test-sources[\\/].+\.java"/>
+  <!-- suppress most all checks expect below-->
+  <suppress checks="^(?!.*(UnusedImports|IllegalImport)).*$" files=".*[\\/]src[\\/]test[\\/].*"/>
+  <suppress checks="IllegalImport" files="ProxyServiceStarter.java"/>
+  <!-- suppress all checks in the copied code -->
+  <suppress checks=".*" files=".+[\\/]com[\\/]scurrilous[\\/]circe[\\/].+\.java"/>
+  <suppress checks=".*" files="MLDataFormats.java"/>
+  <suppress checks=".*" files="BitSetRecyclable.java"/>
+  <!-- pulsar io -->
+  <suppress checks="RegexpSinglelineJava" files="KafkaConnectData.java"/>
+  <suppress checks="LineLength" files="KafkaConnectData.java"/>
+  <suppress checks="RegexpSinglelineJava" files="KafkaConnectSink.java"/>
+  <!-- pulsar io es -->
+  <suppress checks="LineLength" files="ElasticSearchConfig.java"/>
+  <suppress checks="LineLength" files="ElasticSearchClient.java"/>
+  <!-- pulsar io flume -->
+  <suppress checks="RegexpSingleline" files="Application.java"/>
+  <suppress checks="RegexpSinglelineJava" files="AbstractConfigurationProvider.java"/>
+  <suppress checks="RegexpSinglelineJava" files="AbstractZooKeeperConfigurationProvider.java"/>
+  <suppress checks="RegexpSinglelineJava" files="PollingPropertiesFileConfigurationProvider.java"/>
+  <suppress checks="RegexpSinglelineJava" files="EnvVarResolverProperties.java"/>
+  <!-- pulsar io hbase -->
+  <suppress checks="RegexpSinglelineJava" files="HbaseAbstractSink.java"/>
+  <suppress checks="RegexpSinglelineJava" files="HbaseAbstractConfig.java"/>
+  <suppress checks="RegexpSinglelineJava" files="HbaseSinkConfig.java"/>
+  <!-- pulsar io kafka -->
+  <suppress checks="FallThrough" files="KafkaConnectData.java"/>
+  <!-- pulsar io influxdb -->
+  <suppress checks="RegexpSinglelineJava" files="InfluxDBSinkConfig.java"/>
+  <!-- pulsar io kinesis -->
+  <suppress checks="LineLength" files="KinesisSinkConfig.java"/>
+  <suppress checks="LineLength" files="KinesisSink.java"/>
+  <suppress checks=".*" files=".+[\\/]org[\\/]apache[\\/]pulsar[\\/]io[\\/]kinesis[\\/]fbs[\\/].+.java"/>
+  <!-- pulsar io mongo -->
+  <suppress checks="RegexpSinglelineJava" files="MongoSink.java"/>
+  <suppress checks="RegexpSinglelineJava" files="MongoConfig.java"/>
+  <!-- pulsar io rabbitmq -->
+  <suppress checks="RegexpSinglelineJava" files="RabbitMQAbstractConfig.java"/>
+  <suppress checks="RegexpSinglelineJava" files="RabbitMQSourceConfig.java"/>
+  <suppress checks="RegexpSinglelineJava" files="RabbitMQSinkConfig.java"/>
+  <!-- pulsar io reids -->
+  <suppress checks="RegexpSinglelineJava" files="RedisAbstractConfig.java"/>
+  <suppress checks="RegexpSinglelineJava" files="RedisSinkConfig.java"/>
+  <!-- pulsar io solr -->
+  <suppress checks="RegexpSinglelineJava" files="SolrSinkConfig.java"/>
 </suppressions>
diff --git a/conf/filesystem_offload_core_site.xml b/conf/filesystem_offload_core_site.xml
index d26cec2cc60f0..3c7e6d94bbe50 100644
--- a/conf/filesystem_offload_core_site.xml
+++ b/conf/filesystem_offload_core_site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,30 +20,29 @@
 
 -->
 <configuration>
-    <!--file system uri, necessary-->
-    <property>
-        <name>fs.defaultFS</name>
-        <value></value>
-    </property>
-    <property>
-        <name>hadoop.tmp.dir</name>
-        <value>pulsar</value>
-    </property>
-    <property>
-        <name>io.file.buffer.size</name>
-        <value>4096</value>
-    </property>
-    <property>
-        <name>io.seqfile.compress.blocksize</name>
-        <value>1000000</value>
-    </property>
-    <property>
-        <name>io.seqfile.compression.type</name>
-        <value>BLOCK</value>
-    </property>
-    <property>
-        <name>io.map.index.interval</name>
-        <value>128</value>
-    </property>
-
+  <!--file system uri, necessary-->
+  <property>
+    <name>fs.defaultFS</name>
+    <value/>
+  </property>
+  <property>
+    <name>hadoop.tmp.dir</name>
+    <value>pulsar</value>
+  </property>
+  <property>
+    <name>io.file.buffer.size</name>
+    <value>4096</value>
+  </property>
+  <property>
+    <name>io.seqfile.compress.blocksize</name>
+    <value>1000000</value>
+  </property>
+  <property>
+    <name>io.seqfile.compression.type</name>
+    <value>BLOCK</value>
+  </property>
+  <property>
+    <name>io.map.index.interval</name>
+    <value>128</value>
+  </property>
 </configuration>
diff --git a/conf/functions_log4j2.xml b/conf/functions_log4j2.xml
index fd4042e82e82f..a1dcc6a1f654a 100644
--- a/conf/functions_log4j2.xml
+++ b/conf/functions_log4j2.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,112 +20,112 @@
 
 -->
 <Configuration>
-    <name>pulsar-functions-instance</name>
-    <monitorInterval>30</monitorInterval>
-    <Properties>
-        <Property>
-            <name>pulsar.log.appender</name>
-            <value>RollingFile</value>
-        </Property>
-        <Property>
-            <name>pulsar.log.level</name>
-            <value>info</value>
-        </Property>
-        <Property>
-            <name>bk.log.level</name>
-            <value>info</value>
-        </Property>
-    </Properties>
-    <Appenders>
-        <Console>
-            <name>Console</name>
-            <target>SYSTEM_OUT</target>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-        </Console>
-        <RollingFile>
-            <name>RollingFile</name>
-            <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.log</fileName>
-            <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
-            <immediateFlush>true</immediateFlush>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <TimeBasedTriggeringPolicy>
-                    <interval>1</interval>
-                    <modulate>true</modulate>
-                </TimeBasedTriggeringPolicy>
-                <SizeBasedTriggeringPolicy>
-                    <size>1 GB</size>
-                </SizeBasedTriggeringPolicy>
-                <CronTriggeringPolicy>
-                    <schedule>0 0 0 * * ?</schedule>
-                </CronTriggeringPolicy>
-            </Policies>
-            <DefaultRolloverStrategy>
-                <Delete>
-                    <basePath>${sys:pulsar.function.log.dir}</basePath>
-                    <maxDepth>2</maxDepth>
-                    <IfFileName>
-                        <glob>${sys:pulsar.function.log.file}*log.gz</glob>
-                    </IfFileName>
-                    <IfLastModified>
-                        <age>30d</age>
-                    </IfLastModified>
-                </Delete>
-            </DefaultRolloverStrategy>
-        </RollingFile>
-        <RollingRandomAccessFile>
-            <name>BkRollingFile</name>
-            <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk</fileName>
-            <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
-            <immediateFlush>true</immediateFlush>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <TimeBasedTriggeringPolicy>
-                    <interval>1</interval>
-                    <modulate>true</modulate>
-                </TimeBasedTriggeringPolicy>
-                <SizeBasedTriggeringPolicy>
-                    <size>1 GB</size>
-                </SizeBasedTriggeringPolicy>
-                <CronTriggeringPolicy>
-                    <schedule>0 0 0 * * ?</schedule>
-                </CronTriggeringPolicy>
-            </Policies>
-            <DefaultRolloverStrategy>
-                <Delete>
-                    <basePath>${sys:pulsar.function.log.dir}</basePath>
-                    <maxDepth>2</maxDepth>
-                    <IfFileName>
-                        <glob>${sys:pulsar.function.log.file}.bk*log.gz</glob>
-                    </IfFileName>
-                    <IfLastModified>
-                        <age>30d</age>
-                    </IfLastModified>
-                </Delete>
-            </DefaultRolloverStrategy>
-        </RollingRandomAccessFile>
-    </Appenders>
-    <Loggers>
-        <Logger>
-            <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
-            <level>${sys:bk.log.level}</level>
-            <additivity>false</additivity>
-            <AppenderRef>
-                <ref>BkRollingFile</ref>
-            </AppenderRef>
-        </Logger>
-        <Root>
-            <level>${sys:pulsar.log.level}</level>
-            <AppenderRef>
-                <ref>${sys:pulsar.log.appender}</ref>
-                <level>${sys:pulsar.log.level}</level>
-            </AppenderRef>
-        </Root>
-    </Loggers>
+  <name>pulsar-functions-instance</name>
+  <monitorInterval>30</monitorInterval>
+  <Properties>
+    <Property>
+      <name>pulsar.log.appender</name>
+      <value>RollingFile</value>
+    </Property>
+    <Property>
+      <name>pulsar.log.level</name>
+      <value>info</value>
+    </Property>
+    <Property>
+      <name>bk.log.level</name>
+      <value>info</value>
+    </Property>
+  </Properties>
+  <Appenders>
+    <Console>
+      <name>Console</name>
+      <target>SYSTEM_OUT</target>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+    </Console>
+    <RollingFile>
+      <name>RollingFile</name>
+      <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.log</fileName>
+      <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
+      <immediateFlush>true</immediateFlush>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <TimeBasedTriggeringPolicy>
+          <interval>1</interval>
+          <modulate>true</modulate>
+        </TimeBasedTriggeringPolicy>
+        <SizeBasedTriggeringPolicy>
+          <size>1 GB</size>
+        </SizeBasedTriggeringPolicy>
+        <CronTriggeringPolicy>
+          <schedule>0 0 0 * * ?</schedule>
+        </CronTriggeringPolicy>
+      </Policies>
+      <DefaultRolloverStrategy>
+        <Delete>
+          <basePath>${sys:pulsar.function.log.dir}</basePath>
+          <maxDepth>2</maxDepth>
+          <IfFileName>
+            <glob>${sys:pulsar.function.log.file}*log.gz</glob>
+          </IfFileName>
+          <IfLastModified>
+            <age>30d</age>
+          </IfLastModified>
+        </Delete>
+      </DefaultRolloverStrategy>
+    </RollingFile>
+    <RollingRandomAccessFile>
+      <name>BkRollingFile</name>
+      <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk</fileName>
+      <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
+      <immediateFlush>true</immediateFlush>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <TimeBasedTriggeringPolicy>
+          <interval>1</interval>
+          <modulate>true</modulate>
+        </TimeBasedTriggeringPolicy>
+        <SizeBasedTriggeringPolicy>
+          <size>1 GB</size>
+        </SizeBasedTriggeringPolicy>
+        <CronTriggeringPolicy>
+          <schedule>0 0 0 * * ?</schedule>
+        </CronTriggeringPolicy>
+      </Policies>
+      <DefaultRolloverStrategy>
+        <Delete>
+          <basePath>${sys:pulsar.function.log.dir}</basePath>
+          <maxDepth>2</maxDepth>
+          <IfFileName>
+            <glob>${sys:pulsar.function.log.file}.bk*log.gz</glob>
+          </IfFileName>
+          <IfLastModified>
+            <age>30d</age>
+          </IfLastModified>
+        </Delete>
+      </DefaultRolloverStrategy>
+    </RollingRandomAccessFile>
+  </Appenders>
+  <Loggers>
+    <Logger>
+      <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
+      <level>${sys:bk.log.level}</level>
+      <additivity>false</additivity>
+      <AppenderRef>
+        <ref>BkRollingFile</ref>
+      </AppenderRef>
+    </Logger>
+    <Root>
+      <level>${sys:pulsar.log.level}</level>
+      <AppenderRef>
+        <ref>${sys:pulsar.log.appender}</ref>
+        <level>${sys:pulsar.log.level}</level>
+      </AppenderRef>
+    </Root>
+  </Loggers>
 </Configuration>
diff --git a/distribution/io/pom.xml b/distribution/io/pom.xml
index 24474146bf419..0bc584f3f8acb 100644
--- a/distribution/io/pom.xml
+++ b/distribution/io/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,21 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>distribution</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-io-distribution</artifactId>
   <packaging>pom</packaging>
   <name>Pulsar :: Distribution :: IO</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -46,7 +43,6 @@
       <scope>provided</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -69,9 +65,32 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
-
   <profiles>
     <profile>
       <id>generator-connector-config</id>
@@ -151,5 +170,4 @@
       </build>
     </profile>
   </profiles>
-
 </project>
diff --git a/distribution/io/src/assemble/io.xml b/distribution/io/src/assemble/io.xml
index 5b652170fdbb5..71d5aaf69f76a 100644
--- a/distribution/io/src/assemble/io.xml
+++ b/distribution/io/src/assemble/io.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,9 +19,7 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
   <id>bin</id>
   <formats>
     <format>dir</format>
@@ -38,48 +37,120 @@
       <outputDirectory>.</outputDirectory>
       <fileMode>644</fileMode>
     </file>
-
     <!-- Include all connectors.
          There doesn't seem to be a straight way to automatically
          include all nars and place them in a single directory.
      -->
-
-    <file><source>${basedir}/../../pulsar-io/cassandra/target/pulsar-io-cassandra-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/twitter/target/pulsar-io-twitter-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/kafka/target/pulsar-io-kafka-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/http/target/pulsar-io-http-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/kinesis/target/pulsar-io-kinesis-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/rabbitmq/target/pulsar-io-rabbitmq-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/nsq/target/pulsar-io-nsq-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/jdbc/sqlite/target/pulsar-io-jdbc-sqlite-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/jdbc/mariadb/target/pulsar-io-jdbc-mariadb-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/jdbc/clickhouse/target/pulsar-io-jdbc-clickhouse-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/jdbc/postgres/target/pulsar-io-jdbc-postgres-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/jdbc/openmldb/target/pulsar-io-jdbc-openmldb-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/data-generator/target/pulsar-io-data-generator-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/batch-data-generator/target/pulsar-io-batch-data-generator-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/aerospike/target/pulsar-io-aerospike-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/elastic-search/target/pulsar-io-elastic-search-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/kafka-connect-adaptor-nar/target/pulsar-io-kafka-connect-adaptor-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/hbase/target/pulsar-io-hbase-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/kinesis/target/pulsar-io-kinesis-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/hdfs2/target/pulsar-io-hdfs2-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/hdfs3/target/pulsar-io-hdfs3-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/file/target/pulsar-io-file-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/data-generator/target/pulsar-io-data-generator-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/canal/target/pulsar-io-canal-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/netty/target/pulsar-io-netty-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/mongo/target/pulsar-io-mongo-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/debezium/mysql/target/pulsar-io-debezium-mysql-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/debezium/postgres/target/pulsar-io-debezium-postgres-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/debezium/oracle/target/pulsar-io-debezium-oracle-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/debezium/mssql/target/pulsar-io-debezium-mssql-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/debezium/mongodb/target/pulsar-io-debezium-mongodb-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/influxdb/target/pulsar-io-influxdb-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/redis/target/pulsar-io-redis-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/flume/target/pulsar-io-flume-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/solr/target/pulsar-io-solr-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/dynamodb/target/pulsar-io-dynamodb-${project.version}.nar</source></file>
-    <file><source>${basedir}/../../pulsar-io/alluxio/target/pulsar-io-alluxio-${project.version}.nar</source></file>
+    <file>
+      <source>${basedir}/../../pulsar-io/cassandra/target/pulsar-io-cassandra-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/twitter/target/pulsar-io-twitter-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/kafka/target/pulsar-io-kafka-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/http/target/pulsar-io-http-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/kinesis/target/pulsar-io-kinesis-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/rabbitmq/target/pulsar-io-rabbitmq-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/nsq/target/pulsar-io-nsq-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/jdbc/sqlite/target/pulsar-io-jdbc-sqlite-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/jdbc/mariadb/target/pulsar-io-jdbc-mariadb-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/jdbc/clickhouse/target/pulsar-io-jdbc-clickhouse-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/jdbc/postgres/target/pulsar-io-jdbc-postgres-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/jdbc/openmldb/target/pulsar-io-jdbc-openmldb-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/data-generator/target/pulsar-io-data-generator-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/batch-data-generator/target/pulsar-io-batch-data-generator-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/aerospike/target/pulsar-io-aerospike-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/elastic-search/target/pulsar-io-elastic-search-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/kafka-connect-adaptor-nar/target/pulsar-io-kafka-connect-adaptor-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/hbase/target/pulsar-io-hbase-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/kinesis/target/pulsar-io-kinesis-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/hdfs2/target/pulsar-io-hdfs2-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/hdfs3/target/pulsar-io-hdfs3-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/file/target/pulsar-io-file-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/data-generator/target/pulsar-io-data-generator-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/canal/target/pulsar-io-canal-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/netty/target/pulsar-io-netty-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/mongo/target/pulsar-io-mongo-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/debezium/mysql/target/pulsar-io-debezium-mysql-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/debezium/postgres/target/pulsar-io-debezium-postgres-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/debezium/oracle/target/pulsar-io-debezium-oracle-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/debezium/mssql/target/pulsar-io-debezium-mssql-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/debezium/mongodb/target/pulsar-io-debezium-mongodb-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/influxdb/target/pulsar-io-influxdb-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/redis/target/pulsar-io-redis-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/flume/target/pulsar-io-flume-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/solr/target/pulsar-io-solr-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/dynamodb/target/pulsar-io-dynamodb-${project.version}.nar</source>
+    </file>
+    <file>
+      <source>${basedir}/../../pulsar-io/alluxio/target/pulsar-io-alluxio-${project.version}.nar</source>
+    </file>
   </files>
 </assembly>
diff --git a/distribution/offloaders/pom.xml b/distribution/offloaders/pom.xml
index bde404ffe898f..ad8d901792970 100644
--- a/distribution/offloaders/pom.xml
+++ b/distribution/offloaders/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,21 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>distribution</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-offloader-distribution</artifactId>
   <packaging>pom</packaging>
   <name>Pulsar :: Distribution :: Offloader</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -66,7 +63,6 @@
       </exclusions>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -90,6 +86,30 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/distribution/offloaders/src/assemble/offloaders.xml b/distribution/offloaders/src/assemble/offloaders.xml
index 38f7eee906064..19c60f68c21d4 100644
--- a/distribution/offloaders/src/assemble/offloaders.xml
+++ b/distribution/offloaders/src/assemble/offloaders.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,9 +19,7 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
   <id>bin</id>
   <formats>
     <format>tar.gz</format>
@@ -38,13 +37,11 @@
       <outputDirectory>.</outputDirectory>
       <fileMode>644</fileMode>
     </file>
-
     <file>
       <source>${basedir}/../../tiered-storage/jcloud/target/tiered-storage-jcloud-${project.version}.nar</source>
       <outputDirectory>offloaders</outputDirectory>
       <fileMode>644</fileMode>
     </file>
-
     <file>
       <source>${basedir}/../../tiered-storage/file-system/target/tiered-storage-file-system-${project.version}.nar</source>
       <outputDirectory>offloaders</outputDirectory>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 118b6e5c8d27a..52cf15a48a5d5 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,23 +19,18 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>distribution</artifactId>
   <packaging>pom</packaging>
   <name>Pulsar :: Distribution</name>
-
   <profiles>
-
     <profile>
       <id>main</id>
       <activation>
@@ -47,7 +43,6 @@
         <module>shell</module>
       </modules>
     </profile>
-
     <profile>
       <id>core-modules</id>
       <modules>
@@ -55,7 +50,6 @@
       </modules>
     </profile>
   </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -65,6 +59,30 @@
           <skip>${skipBuildDistribution}</skip>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/distribution/server/pom.xml b/distribution/server/pom.xml
index e7a95ad3795f8..938123559fe2a 100644
--- a/distribution/server/pom.xml
+++ b/distribution/server/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,64 +19,53 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>distribution</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-server-distribution</artifactId>
   <packaging>pom</packaging>
   <name>Pulsar :: Distribution :: Server</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-docs-tools</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-proxy</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-auth-oidc</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-auth-sasl</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-auth-sasl</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
       <version>${jline.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper-prometheus-metrics</artifactId>
@@ -95,7 +85,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-bookkeeper-storage</artifactId>
@@ -107,13 +96,11 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-filesystem-storage</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-tools</artifactId>
@@ -125,33 +112,27 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-testclient</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-web</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-graphite</artifactId>
@@ -162,44 +143,36 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-jvm</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.xerial.snappy</groupId>
       <artifactId>snappy-java</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper.stats</groupId>
       <artifactId>prometheus-metrics-provider</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_log4j2</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>bouncy-castle-bc</artifactId>
       <version>${project.version}</version>
       <classifier>pkg</classifier>
     </dependency>
-
     <!-- function examples -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -214,7 +187,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-worker</artifactId>
@@ -231,7 +203,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <!-- runtime-all -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -246,7 +217,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <!-- local-runner -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -259,7 +229,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <!-- grpc -->
     <dependency>
       <groupId>io.grpc</groupId>
@@ -269,13 +238,11 @@
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-jdk18on</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.perfmark</groupId>
       <artifactId>perfmark-api</artifactId>
       <scope>compile</scope>
     </dependency>
-
     <!-- bookkeeper http server -->
     <dependency>
       <groupId>org.apache.bookkeeper.http</groupId>
@@ -297,7 +264,6 @@
       <artifactId>vertx-web</artifactId>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -338,6 +304,30 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
     <pluginManagement>
       <plugins>
diff --git a/distribution/server/src/assemble/bin.xml b/distribution/server/src/assemble/bin.xml
index 41ac24d0582da..f65a8e2fb7260 100644
--- a/distribution/server/src/assemble/bin.xml
+++ b/distribution/server/src/assemble/bin.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,9 +19,7 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
   <id>bin</id>
   <formats>
     <format>tar.gz</format>
@@ -131,14 +130,11 @@
       <!-- Include 'groupId' in the dependencies Jar names to better identify
            the provenance of the jar -->
       <outputFileNameMapping>${artifact.groupId}-${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
-
       <excludes>
-        <exclude>org.apache.pulsar:pulsar-functions-runtime-all</exclude>
-
+        <exclude>io.streamnative:pulsar-functions-runtime-all</exclude>
         <exclude>org.projectlombok:lombok</exclude>
-
         <!-- prevent adding pulsar-functions-api-examples in lib -->
-        <exclude>org.apache.pulsar:pulsar-functions-api-examples</exclude>
+        <exclude>io.streamnative:pulsar-functions-api-examples</exclude>
         <!-- prevent adding any distribution .tar.gz files in lib -->
         <exclude>*:tar.gz</exclude>
       </excludes>
diff --git a/distribution/shell/pom.xml b/distribution/shell/pom.xml
index 7a0b9dc79d983..08ce6894cd8fe 100644
--- a/distribution/shell/pom.xml
+++ b/distribution/shell/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,33 +19,27 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>distribution</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-shell-distribution</artifactId>
   <packaging>pom</packaging>
   <name>Pulsar :: Distribution :: Shell</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-tools</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-web</artifactId>
@@ -53,14 +48,11 @@
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_log4j2</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -101,6 +93,30 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/distribution/shell/src/assemble/shell.xml b/distribution/shell/src/assemble/shell.xml
index f823e0258b231..cd11bd8a1ef57 100644
--- a/distribution/shell/src/assemble/shell.xml
+++ b/distribution/shell/src/assemble/shell.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,9 +19,7 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
   <id>bin</id>
   <formats>
     <format>tar.gz</format>
@@ -46,7 +45,6 @@
       <outputDirectory>.</outputDirectory>
       <fileMode>644</fileMode>
     </file>
-
     <file>
       <outputDirectory>bin</outputDirectory>
       <source>${basedir}/../../bin/pulsar-admin-common.sh</source>
@@ -76,7 +74,6 @@
       <source>${basedir}/../../conf/log4j2.yaml</source>
     </file>
   </files>
-
   <dependencySets>
     <dependencySet>
       <outputDirectory>lib</outputDirectory>
diff --git a/docker/pom.xml b/docker/pom.xml
index 454d4f0f8c285..a6b00df789129 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,14 +19,13 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <packaging>pom</packaging>
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <artifactId>docker-images</artifactId>
   <name>Apache Pulsar :: Docker Images</name>
@@ -39,6 +38,30 @@
           <skip>${skipBuildDistribution}</skip>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
   <profiles>
diff --git a/docker/pulsar-all/pom.xml b/docker/pulsar-all/pom.xml
index e7c152e4b0afd..b2e5eb338eb99 100644
--- a/docker/pulsar-all/pom.xml
+++ b/docker/pulsar-all/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>pulsar-all-docker-image</artifactId>
   <name>Apache Pulsar :: Docker Images :: Pulsar Latest Version (Include All Components)</name>
   <packaging>pom</packaging>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -64,7 +63,6 @@
       </exclusions>
     </dependency>
   </dependencies>
-
   <profiles>
     <profile>
       <id>git-commit-id-no-git</id>
@@ -177,7 +175,6 @@
         </plugins>
       </build>
     </profile>
-
     <profile>
       <id>docker-push</id>
       <build>
@@ -200,6 +197,5 @@
         </plugins>
       </build>
     </profile>
-
   </profiles>
 </project>
diff --git a/docker/pulsar/pom.xml b/docker/pulsar/pom.xml
index ebbf7bc141c9f..f02960a9177e9 100644
--- a/docker/pulsar/pom.xml
+++ b/docker/pulsar/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>pulsar-docker-image</artifactId>
   <name>Apache Pulsar :: Docker Images :: Pulsar Latest Version</name>
   <packaging>pom</packaging>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -46,12 +45,10 @@
       </exclusions>
     </dependency>
   </dependencies>
-
   <properties>
     <UBUNTU_MIRROR>mirror://mirrors.ubuntu.com/mirrors.txt</UBUNTU_MIRROR>
     <UBUNTU_SECURITY_MIRROR>http://security.ubuntu.com/ubuntu/</UBUNTU_SECURITY_MIRROR>
   </properties>
-
   <profiles>
     <profile>
       <id>git-commit-id-no-git</id>
@@ -128,7 +125,6 @@
         </plugins>
       </build>
     </profile>
-
     <profile>
       <id>docker-push</id>
       <build>
@@ -151,6 +147,5 @@
         </plugins>
       </build>
     </profile>
-
   </profiles>
 </project>
diff --git a/jclouds-shaded/pom.xml b/jclouds-shaded/pom.xml
index e84e844c7bddc..f17ee04105509 100644
--- a/jclouds-shaded/pom.xml
+++ b/jclouds-shaded/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,22 +19,17 @@
     under the License.
 
 -->
-<project
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>jclouds-shaded</artifactId>
   <name>Apache Pulsar :: Jclouds shaded</name>
-
   <dependencies>
-
     <dependency>
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-allblobstore</artifactId>
@@ -66,7 +61,6 @@
       <artifactId>javax.annotation-api</artifactId>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -82,7 +76,6 @@
               <createDependencyReducedPom>true</createDependencyReducedPom>
               <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
               <minimizeJar>false</minimizeJar>
-
               <artifactSet>
                 <includes>
                   <include>com.google.guava:guava</include>
@@ -106,7 +99,6 @@
                   <include>com.google.errorprone:*</include>
                 </includes>
               </artifactSet>
-
               <relocations>
                 <relocation>
                   <pattern>com.google</pattern>
@@ -140,21 +132,20 @@
                   <pattern>com.google.errorprone</pattern>
                   <shadedPattern>org.apache.pulsar.jcloud.shade.com.google.errorprone</shadedPattern>
                 </relocation>
-
               </relocations>
               <transformers>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
               </transformers>
               <filters>
-              <filter>
-                <artifact>org.apache.jclouds:jclouds-core</artifact>
-                <excludes>
-                  <!-- jclouds-core is a mixed uber jar containing a gson vulnerable version-->
-                  <exclude>lib/gson*jar</exclude>
-                </excludes>
-              </filter>
-            </filters>
+                <filter>
+                  <artifact>org.apache.jclouds:jclouds-core</artifact>
+                  <excludes>
+                    <!-- jclouds-core is a mixed uber jar containing a gson vulnerable version-->
+                    <exclude>lib/gson*jar</exclude>
+                  </excludes>
+                </filter>
+              </filters>
             </configuration>
           </execution>
         </executions>
diff --git a/managed-ledger/pom.xml b/managed-ledger/pom.xml
index 5649b55fe0db9..c595e835242aa 100644
--- a/managed-ledger/pom.xml
+++ b/managed-ledger/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,31 +19,25 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>managed-ledger</artifactId>
   <name>Managed Ledger</name>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper.stats</groupId>
       <artifactId>prometheus-metrics-provider</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper.stats</groupId>
       <artifactId>codahale-metrics-provider</artifactId>
@@ -54,36 +49,30 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-metadata</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
@@ -105,29 +94,25 @@
       </exclusions>
     </dependency>
     <dependency>
-       <groupId>io.dropwizard.metrics</groupId>
-       <artifactId>metrics-core</artifactId>
-       <scope>test</scope>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+      <scope>test</scope>
     </dependency>
     <dependency>
-       <groupId>org.xerial.snappy</groupId>
-       <artifactId>snappy-java</artifactId>
-       <scope>test</scope>
+      <groupId>org.xerial.snappy</groupId>
+      <artifactId>snappy-java</artifactId>
+      <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -147,7 +132,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index 0a66f1c322c87..287ee8fdb6309 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,7 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
@@ -28,30 +27,24 @@
     <artifactId>apache</artifactId>
     <version>29</version>
   </parent>
-
-  <groupId>org.apache.pulsar</groupId>
+  <groupId>io.streamnative</groupId>
   <artifactId>pulsar</artifactId>
-
-  <version>3.1.2</version>
-
+  <version>3.1.2.2</version>
   <name>Pulsar</name>
   <description>Pulsar is a distributed pub-sub messaging platform with a very
 flexible messaging model and an intuitive client API.</description>
   <url>https://github.com/apache/pulsar</url>
-
   <organization>
     <name>Apache Software Foundation</name>
     <url>https://www.apache.org/</url>
   </organization>
   <inceptionYear>2017</inceptionYear>
-
   <developers>
     <developer>
       <organization>Apache Pulsar developers</organization>
       <organizationUrl>https://pulsar.apache.org/</organizationUrl>
     </developer>
   </developers>
-
   <licenses>
     <license>
       <name>Apache License, Version 2.0</name>
@@ -59,47 +52,38 @@ flexible messaging model and an intuitive client API.</description>
       <distribution>repo</distribution>
     </license>
   </licenses>
-
   <scm>
-    <url>https://github.com/apache/pulsar</url>
-    <connection>scm:git:https://github.com/apache/pulsar.git</connection>
-    <developerConnection>scm:git:ssh://git@github.com:apache/pulsar.git</developerConnection>
+    <url>https://github.com/streamnative/pulsar</url>
+    <connection>scm:git:https://github.com/streamnative/pulsar.git</connection>
+    <developerConnection>scm:git:ssh://git@github.com:streamnative/pulsar.git</developerConnection>
   </scm>
-
   <ciManagement>
     <system>GitHub Actions</system>
     <url>https://github.com/apache/pulsar/actions</url>
   </ciManagement>
-
   <issueManagement>
     <system>Github</system>
     <url>https://github.com/apache/pulsar/issues</url>
   </issueManagement>
-
   <properties>
     <maven.compiler.source>17</maven.compiler.source>
     <maven.compiler.target>17</maven.compiler.target>
     <pulsar.broker.compiler.release>${maven.compiler.target}</pulsar.broker.compiler.release>
     <pulsar.client.compiler.release>8</pulsar.client.compiler.release>
-
     <pulsar.client.python.version>3.4.0</pulsar.client.python.version>
-
     <!--config keys to configure test selection -->
     <include>**/Test*.java,**/*Test.java,**/*Tests.java,**/*TestCase.java</include>
     <exclude/>
     <groups/>
     <excludedGroups>quarantine</excludedGroups>
-
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <project.build.outputTimestamp>2023-11-30T15:05:59Z</project.build.outputTimestamp>
+    <project.build.outputTimestamp>2024-02-01T03:30:33Z</project.build.outputTimestamp>
     <redirectTestOutputToFile>true</redirectTestOutputToFile>
-
     <!-- By default build for local Docker platform.
          To create multi-arch image, pass -Ddocker.platforms=linux/arm64,linux/amd64
     -->
-    <docker.platforms></docker.platforms>
-
+    <docker.platforms/>
     <!-- required for running tests on JDK11+ -->
     <test.additional.args>
       --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
@@ -116,7 +100,7 @@ flexible messaging model and an intuitive client API.</description>
     <testRealAWS>false</testRealAWS>
     <testRetryCount>1</testRetryCount>
     <testFailFast>true</testFailFast>
-    <testFailFastFile></testFailFastFile>
+    <testFailFastFile/>
     <testJacocoAgentArgument/>
     <integrationtest.coverage.enabled>false</integrationtest.coverage.enabled>
     <integrationtest.coverage.dir>${project.build.directory}</integrationtest.coverage.dir>
@@ -129,16 +113,16 @@ flexible messaging model and an intuitive client API.</description>
     <skipBuildDistribution>false</skipBuildDistribution>
     <shadePluginPhase>package</shadePluginPhase>
     <narPluginPhase>package</narPluginPhase>
-
     <!-- apache commons -->
     <commons-compress.version>1.21</commons-compress.version>
-
     <bookkeeper.version>4.16.4</bookkeeper.version>
     <zookeeper.version>3.9.1</zookeeper.version>
     <commons-cli.version>1.5.0</commons-cli.version>
     <commons-text.version>1.10.0</commons-text.version>
-    <snappy.version>1.1.10.5</snappy.version> <!-- ZooKeeper server -->
-    <dropwizardmetrics.version>4.1.12.1</dropwizardmetrics.version> <!-- ZooKeeper server -->
+    <snappy.version>1.1.10.5</snappy.version>
+    <!-- ZooKeeper server -->
+    <dropwizardmetrics.version>4.1.12.1</dropwizardmetrics.version>
+    <!-- ZooKeeper server -->
     <curator.version>5.1.0</curator.version>
     <netty.version>4.1.100.Final</netty.version>
     <netty-iouring.version>0.0.21.Final</netty-iouring.version>
@@ -249,11 +233,9 @@ flexible messaging model and an intuitive client API.</description>
     <disruptor.version>3.4.3</disruptor.version>
     <zstd-jni.version>1.5.2-3</zstd-jni.version>
     <netty-reactive-streams.version>2.0.6</netty-reactive-streams.version>
-
     <!-- test dependencies -->
     <testcontainers.version>1.18.3</testcontainers.version>
     <hamcrest.version>2.2</hamcrest.version>
-
     <!-- Set docker-java.version to the version of docker-java used in Testcontainers -->
     <docker-java.version>3.3.0</docker-java.version>
     <kerby.version>1.1.1</kerby.version>
@@ -266,7 +248,6 @@ flexible messaging model and an intuitive client API.</description>
     <jettison.version>1.5.4</jettison.version>
     <woodstox.version>5.4.0</woodstox.version>
     <wiremock.version>2.33.2</wiremock.version>
-
     <!-- Plugin dependencies -->
     <protobuf-maven-plugin.version>0.6.1</protobuf-maven-plugin.version>
     <exec-maven-plugin.version>3.0.0</exec-maven-plugin.version>
@@ -300,20 +281,16 @@ flexible messaging model and an intuitive client API.</description>
     <roaringbitmap.version>0.9.44</roaringbitmap.version>
     <extra-enforcer-rules.version>1.6.1</extra-enforcer-rules.version>
     <oshi.version>6.4.0</oshi.version>
-
     <!-- Used to configure rename.netty.native. Libs -->
     <rename.netty.native.libs>rename-netty-native-libs.sh</rename.netty.native.libs>
   </properties>
-
   <dependencyManagement>
     <dependencies>
-
       <dependency>
         <groupId>org.jline</groupId>
         <artifactId>jline</artifactId>
         <version>${jline3.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.asynchttpclient</groupId>
         <artifactId>async-http-client</artifactId>
@@ -329,45 +306,39 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>${testng.version}</version>
         <exclusions>
-            <exclusion>
-                <groupId>org.yaml</groupId>
-                <artifactId>*</artifactId>
-            </exclusion>
+          <exclusion>
+            <groupId>org.yaml</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.hamcrest</groupId>
         <artifactId>hamcrest</artifactId>
         <version>${hamcrest.version}</version>
         <scope>test</scope>
       </dependency>
-
       <dependency>
         <groupId>org.awaitility</groupId>
         <artifactId>awaitility</artifactId>
         <version>${awaitility.version}</version>
         <scope>test</scope>
       </dependency>
-
       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <version>${mockito.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-inline</artifactId>
         <version>${mockito.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
@@ -443,7 +414,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
         <artifactId>bookkeeper-server</artifactId>
@@ -472,13 +442,11 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
         <artifactId>cpu-affinity</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.vertx</groupId>
         <artifactId>vertx-core</artifactId>
@@ -489,38 +457,33 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>vertx-web</artifactId>
         <version>${vertx.version}</version>
       </dependency>
-
       <dependency>
-         <groupId>org.apache.curator</groupId>
-         <artifactId>curator-recipes</artifactId>
-         <version>${curator.version}</version>
-         <exclusions>
-             <exclusion>
-                 <groupId>org.apache.zookeeper</groupId>
-                 <artifactId>*</artifactId>
-             </exclusion>
-         </exclusions>
+        <groupId>org.apache.curator</groupId>
+        <artifactId>curator-recipes</artifactId>
+        <version>${curator.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
         <artifactId>bookkeeper-common-allocator</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
         <artifactId>bookkeeper-tools-framework</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <!-- reflection libs -->
       <dependency>
         <groupId>org.reflections</groupId>
         <artifactId>reflections</artifactId>
         <version>${reflections.version}</version>
       </dependency>
-
       <!-- exclude the grpc version from bookkeeper and use the one defined here -->
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
@@ -549,7 +512,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <!-- exclude the grpc version from bookkeeper and use the one defined here -->
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
@@ -582,19 +544,16 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper</groupId>
         <artifactId>bookkeeper-common</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper.stats</groupId>
         <artifactId>bookkeeper-stats-api</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper.stats</groupId>
         <artifactId>datasketches-metrics-provider</artifactId>
@@ -606,37 +565,31 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.bookkeeper.stats</groupId>
         <artifactId>prometheus-metrics-provider</artifactId>
         <version>${bookkeeper.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.rocksdb</groupId>
         <artifactId>rocksdbjni</artifactId>
         <version>${rocksdb.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-server</artifactId>
         <version>${jetty.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-alpn-conscrypt-server</artifactId>
         <version>${jetty.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.conscrypt</groupId>
         <artifactId>conscrypt-openjdk-uber</artifactId>
         <version>${conscrypt.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-bom</artifactId>
@@ -644,7 +597,6 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-bom</artifactId>
@@ -652,7 +604,6 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>io.netty.incubator</groupId>
         <artifactId>netty-incubator-transport-classes-io_uring</artifactId>
@@ -675,79 +626,66 @@ flexible messaging model and an intuitive client API.</description>
         <version>${netty-iouring.version}</version>
         <classifier>linux-aarch_64</classifier>
       </dependency>
-
       <dependency>
         <groupId>com.beust</groupId>
         <artifactId>jcommander</artifactId>
         <version>${jcommander.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>${guava.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.inject</groupId>
         <artifactId>guice</artifactId>
         <version>${guice.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.inject.extensions</groupId>
         <artifactId>guice-assistedinject</artifactId>
         <version>${guice.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>${commons-lang3.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
         <version>${commons-compress.version}</version>
       </dependency>
-
       <dependency>
         <groupId>commons-configuration</groupId>
         <artifactId>commons-configuration</artifactId>
         <version>${commons-configuration.version}</version>
       </dependency>
-
       <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
         <version>${commons-io.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-text</artifactId>
         <version>${commons-text.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-simple</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-bom</artifactId>
@@ -755,49 +693,41 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>commons-codec</groupId>
         <artifactId>commons-codec</artifactId>
         <version>${commons-codec.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.core</groupId>
         <artifactId>jersey-server</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.core</groupId>
         <artifactId>jersey-client</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.inject</groupId>
         <artifactId>jersey-hk2</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.containers</groupId>
         <artifactId>jersey-container-servlet-core</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.containers</groupId>
         <artifactId>jersey-container-servlet</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>javax.ws.rs</groupId>
         <artifactId>javax.ws.rs-api</artifactId>
         <version>${javax.ws.rs-api.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.media</groupId>
         <artifactId>jersey-media-json-jackson</artifactId>
@@ -809,19 +739,16 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.glassfish.jersey.media</groupId>
         <artifactId>jersey-media-multipart</artifactId>
         <version>${jersey.version}</version>
       </dependency>
-
       <dependency>
         <groupId>net.java.dev.jna</groupId>
         <artifactId>jna</artifactId>
         <version>${jna.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.github.docker-java</groupId>
         <artifactId>docker-java-core</artifactId>
@@ -843,7 +770,6 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>docker-java-transport-zerodep</artifactId>
         <version>${docker-java.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.fasterxml.jackson</groupId>
         <artifactId>jackson-bom</artifactId>
@@ -851,56 +777,46 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>org.codehaus.jettison</groupId>
         <artifactId>jettison</artifactId>
         <version>${jettison.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.fasterxml.woodstox</groupId>
         <artifactId>woodstox-core</artifactId>
         <version>${woodstox.version}</version>
       </dependency>
-
-
       <dependency>
         <groupId>org.hdrhistogram</groupId>
         <artifactId>HdrHistogram</artifactId>
         <version>${hdrHistogram.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.swagger</groupId>
         <artifactId>swagger-core</artifactId>
         <version>${swagger.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.swagger</groupId>
         <artifactId>swagger-annotations</artifactId>
         <version>${swagger.version}</version>
       </dependency>
-
       <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>${javax.servlet-api}</version>
       </dependency>
-
       <dependency>
         <groupId>com.github.ben-manes.caffeine</groupId>
         <artifactId>caffeine</artifactId>
         <version>${caffeine.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.bouncycastle</groupId>
         <artifactId>bcpkix-jdk18on</artifactId>
         <version>${bouncycastle.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.cronutils</groupId>
         <artifactId>cron-utils</artifactId>
@@ -912,19 +828,16 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>com.yahoo.athenz</groupId>
         <artifactId>athenz-zts-java-client-core</artifactId>
         <version>${athenz.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.yahoo.athenz</groupId>
         <artifactId>athenz-zpe-java-client</artifactId>
         <version>${athenz.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.yahoo.athenz</groupId>
         <artifactId>athenz-cert-refresher</artifactId>
@@ -936,7 +849,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>com.yahoo.athenz</groupId>
         <artifactId>athenz-auth-core</artifactId>
@@ -948,67 +860,56 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>com.github.zafarkhaja</groupId>
         <artifactId>java-semver</artifactId>
         <version>${java-semver.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient_hotspot</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient_log4j2</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient_servlet</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient_jetty</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.prometheus</groupId>
         <artifactId>simpleclient_caffeine</artifactId>
         <version>${prometheus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.carrotsearch</groupId>
         <artifactId>hppc</artifactId>
         <version>${hppc.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.etcd</groupId>
         <artifactId>jetcd-core</artifactId>
         <version>${jetcd.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.etcd</groupId>
         <artifactId>jetcd-test</artifactId>
         <version>${jetcd.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.spark</groupId>
         <artifactId>spark-streaming_2.10</artifactId>
@@ -1036,7 +937,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>io.jsonwebtoken</groupId>
         <artifactId>jjwt-api</artifactId>
@@ -1052,13 +952,11 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>jjwt-jackson</artifactId>
         <version>${jsonwebtoken.version}</version>
       </dependency>
-
       <dependency>
         <groupId>net.jodah</groupId>
         <artifactId>typetools</artifactId>
         <version>${typetools.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-bom</artifactId>
@@ -1066,7 +964,6 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-all</artifactId>
@@ -1090,7 +987,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-xds</artifactId>
@@ -1102,25 +998,21 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client</artifactId>
         <version>${google-http-client.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-jackson2</artifactId>
         <version>${google-http-client.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-gson</artifactId>
         <version>${google-http-client.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.perfmark</groupId>
         <artifactId>perfmark-api</artifactId>
@@ -1133,7 +1025,6 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>com.google.protobuf</groupId>
         <artifactId>protobuf-bom</artifactId>
@@ -1141,19 +1032,16 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
         <version>${gson.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.yahoo.datasketches</groupId>
         <artifactId>sketches-core</artifactId>
         <version>${sketches.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.amazonaws</groupId>
         <artifactId>aws-java-sdk-bom</artifactId>
@@ -1161,7 +1049,6 @@ flexible messaging model and an intuitive client API.</description>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
-
       <dependency>
         <groupId>org.apache.distributedlog</groupId>
         <artifactId>distributedlog-core</artifactId>
@@ -1174,13 +1061,11 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-collections4</artifactId>
         <version>${commons.collections4.version}</version>
       </dependency>
-
       <!-- test dependencies -->
       <dependency>
         <groupId>com.lmax</groupId>
@@ -1204,103 +1089,86 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>assertj-core</artifactId>
         <version>${assertj-core.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>${lombok.version}</version>
       </dependency>
-
       <dependency>
         <groupId>javax.annotation</groupId>
         <artifactId>javax.annotation-api</artifactId>
         <version>${javax.annotation-api.version}</version>
       </dependency>
-
       <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
         <version>${jaxb-api}</version>
       </dependency>
-
       <dependency>
         <groupId>jakarta.xml.bind</groupId>
         <artifactId>jakarta.xml.bind-api</artifactId>
         <version>${jakarta.xml.bind.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.sun.activation</groupId>
         <artifactId>javax.activation</artifactId>
         <version>${javax.activation.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.sun.activation</groupId>
         <artifactId>jakarta.activation</artifactId>
         <version>${jakarta.activation.version}</version>
       </dependency>
-
       <dependency>
         <groupId>jakarta.activation</groupId>
         <artifactId>jakarta.activation-api</artifactId>
         <version>${jakarta.activation.version}</version>
       </dependency>
-
       <dependency>
         <groupId>jakarta.validation</groupId>
         <artifactId>jakarta.validation-api</artifactId>
         <version>${jakarta.validation.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.opencensus</groupId>
         <artifactId>opencensus-api</artifactId>
         <version>${opencensus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.opencensus</groupId>
         <artifactId>opencensus-contrib-http-util</artifactId>
         <version>${opencensus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.opencensus</groupId>
         <artifactId>opencensus-contrib-grpc-metrics</artifactId>
         <version>${opencensus.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.opensearch.client</groupId>
         <artifactId>opensearch-rest-high-level-client</artifactId>
         <version>${opensearch.version}</version>
       </dependency>
-
       <dependency>
         <groupId>co.elastic.clients</groupId>
         <artifactId>elasticsearch-java</artifactId>
         <version>${elasticsearch-java.version}</version>
       </dependency>
-
       <dependency>
         <groupId>joda-time</groupId>
         <artifactId>joda-time</artifactId>
         <version>${joda.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.javassist</groupId>
         <artifactId>javassist</artifactId>
         <version>${javassist.version}</version>
       </dependency>
-
       <dependency>
         <groupId>net.jcip</groupId>
         <artifactId>jcip-annotations</artifactId>
         <version>${jcip.version}</version>
       </dependency>
-
       <dependency>
         <groupId>io.airlift</groupId>
         <artifactId>aircompressor</artifactId>
@@ -1312,25 +1180,21 @@ flexible messaging model and an intuitive client API.</description>
           </exclusion>
         </exclusions>
       </dependency>
-
       <dependency>
         <groupId>org.objenesis</groupId>
         <artifactId>objenesis</artifactId>
         <version>${objenesis.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient</artifactId>
         <version>${apache-http-client.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpcore</artifactId>
         <version>${apache-httpcomponents.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-annotations</artifactId>
@@ -1338,31 +1202,26 @@ flexible messaging model and an intuitive client API.</description>
         <scope>provided</scope>
         <optional>true</optional>
       </dependency>
-
       <dependency>
         <groupId>com.google.errorprone</groupId>
         <artifactId>error_prone_annotations</artifactId>
         <version>${errorprone.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.google.j2objc</groupId>
         <artifactId>j2objc-annotations</artifactId>
         <version>${j2objc-annotations.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.yaml</groupId>
         <artifactId>snakeyaml</artifactId>
         <version>${snakeyaml.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.ant</groupId>
         <artifactId>ant</artifactId>
         <version>${ant.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.squareup.okhttp3</groupId>
         <artifactId>okhttp</artifactId>
@@ -1383,7 +1242,6 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>okio</artifactId>
         <version>${okio.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId>
         <artifactId>kotlin-stdlib</artifactId>
@@ -1394,25 +1252,21 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>kotlin-stdlib-common</artifactId>
         <version>${kotlin-stdlib.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId>
         <artifactId>kotlin-stdlib-jdk8</artifactId>
         <version>${kotlin-stdlib.version}</version>
       </dependency>
-
       <dependency>
         <groupId>com.github.luben</groupId>
         <artifactId>zstd-jni</artifactId>
         <version>${zstd-jni.version}</version>
       </dependency>
-
       <dependency>
-          <groupId>com.typesafe.netty</groupId>
-          <artifactId>netty-reactive-streams</artifactId>
-          <version>${netty-reactive-streams.version}</version>
+        <groupId>com.typesafe.netty</groupId>
+        <artifactId>netty-reactive-streams</artifactId>
+        <version>${netty-reactive-streams.version}</version>
       </dependency>
-
       <dependency>
         <groupId>org.roaringbitmap</groupId>
         <artifactId>RoaringBitmap</artifactId>
@@ -1425,47 +1279,40 @@ flexible messaging model and an intuitive client API.</description>
       </dependency>
     </dependencies>
   </dependencyManagement>
-
   <dependencies>
     <!-- These dependencies are common to all the submodules -->
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>buildtools</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-inline</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.stefanbirkner</groupId>
       <artifactId>system-lambda</artifactId>
       <version>${system-lambda.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.assertj</groupId>
       <artifactId>assertj-core</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
@@ -1476,7 +1323,6 @@ flexible messaging model and an intuitive client API.</description>
       <artifactId>javax.annotation-api</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <!-- We use MockedBookKeeper in many unit tests -->
       <groupId>org.apache.bookkeeper</groupId>
@@ -1486,8 +1332,8 @@ flexible messaging model and an intuitive client API.</description>
       <classifier>tests</classifier>
       <exclusions>
         <exclusion>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>*</artifactId>
+          <groupId>org.bouncycastle</groupId>
+          <artifactId>*</artifactId>
         </exclusion>
         <exclusion>
           <groupId>org.slf4j</groupId>
@@ -1521,8 +1367,12 @@ flexible messaging model and an intuitive client API.</description>
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-layout-template-json</artifactId>
+      <version>2.20.0</version>
+    </dependency>
   </dependencies>
-
   <build>
     <finalName>${project.artifactId}</finalName>
     <plugins>
@@ -1597,7 +1447,6 @@ flexible messaging model and an intuitive client API.</description>
           </dependency>
         </dependencies>
       </plugin>
-
       <plugin>
         <groupId>org.commonjava.maven.plugins</groupId>
         <artifactId>directory-maven-plugin</artifactId>
@@ -1612,14 +1461,13 @@ flexible messaging model and an intuitive client API.</description>
             <configuration>
               <property>pulsar.basedir</property>
               <project>
-                <groupId>org.apache.pulsar</groupId>
+                <groupId>io.streamnative</groupId>
                 <artifactId>pulsar</artifactId>
               </project>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>pl.project13.maven</groupId>
         <artifactId>git-commit-id-plugin</artifactId>
@@ -1644,7 +1492,6 @@ flexible messaging model and an intuitive client API.</description>
           </gitDescribe>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>com.mycila</groupId>
         <artifactId>license-maven-plugin</artifactId>
@@ -1745,33 +1592,26 @@ flexible messaging model and an intuitive client API.</description>
             <exclude>src/assemble/README.bin.txt</exclude>
             <exclude>src/assemble/LICENSE.bin.txt</exclude>
             <exclude>src/assemble/NOTICE.bin.txt</exclude>
-
             <!-- These files are generated automatically by the Protobuf compiler
                  and are included in source tree for convenience -->
             <exclude>src/main/java/org/apache/bookkeeper/mledger/proto/MLDataFormats.java</exclude>
             <exclude>src/main/java/org/apache/pulsar/broker/service/schema/proto/SchemaRegistryFormat.java</exclude>
             <exclude>bin/proto/MLDataFormats_pb2.py</exclude>
-
             <!-- These files are generated automatically by the Avro compiler
                  and are included in source tree for convenience -->
             <exclude>**/avro/generated/*.java</exclude>
-
             <!-- Avro schema definitions - JSON format -->
             <exclude>**/*.avsc</exclude>
-
             <!-- pulasr-io-connector kinesis : auto generated files from flatbuffer schema -->
             <exclude>src/main/java/org/apache/pulsar/io/kinesis/fbs/CompressionType.java</exclude>
             <exclude>src/main/java/org/apache/pulsar/io/kinesis/fbs/EncryptionCtx.java</exclude>
             <exclude>src/main/java/org/apache/pulsar/io/kinesis/fbs/EncryptionKey.java</exclude>
             <exclude>src/main/java/org/apache/pulsar/io/kinesis/fbs/KeyValue.java</exclude>
             <exclude>src/main/java/org/apache/pulsar/io/kinesis/fbs/Message.java</exclude>
-
             <!-- Imported from Netty - Apache License v2 -->
             <exclude>src/main/java/org/apache/bookkeeper/mledger/util/AbstractCASReferenceCounted.java</exclude>
-
             <!-- This is generated during maven build -->
             <exclude>dependency-reduced-pom.xml</exclude>
-
             <!-- These files is go module configs -->
             <exclude>pulsar-client-go/go.mod</exclude>
             <exclude>pulsar-client-go/go.sum</exclude>
@@ -1779,15 +1619,12 @@ flexible messaging model and an intuitive client API.</description>
             <exclude>pulsar-function-go/go.sum</exclude>
             <exclude>pulsar-function-go/examples/go.mod</exclude>
             <exclude>pulsar-function-go/examples/go.sum</exclude>
-
             <!-- This is a text property file that contains just a class name -->
             <exclude>**/META-INF/services/com.scurrilous.circe.HashProvider</exclude>
             <exclude>**/META-INF/services/io.trino.spi.Plugin</exclude>
-
             <!-- Django generated code -->
             <exclude>**/django/stats/migrations/*.py</exclude>
             <exclude>**/conf/uwsgi_params</exclude>
-
             <!-- Exclude certificates used for tests -->
             <exclude>**/*.crt</exclude>
             <exclude>**/*.key</exclude>
@@ -1800,21 +1637,16 @@ flexible messaging model and an intuitive client API.</description>
             <exclude>certificate-authority/index.txt</exclude>
             <exclude>certificate-authority/serial</exclude>
             <exclude>certificate-authority/README.md</exclude>
-
             <!-- Exclude ZK test data file -->
             <exclude>**/zk-3.5-test-data/*</exclude>
-
             <!-- Python requirements files -->
             <exclude>**/requirements.txt</exclude>
-
             <!-- Configuration Templates -->
             <exclude>conf/schema_example.json</exclude>
             <exclude>**/templates/*.tpl</exclude>
-
             <!-- helm files -->
             <exclude>**/.helmignore</exclude>
             <exclude>**/_helpers.tpl</exclude>
-
             <!-- project ignored files -->
             <exclude>**/*.md</exclude>
             <exclude>.github/**</exclude>
@@ -1843,6 +1675,7 @@ flexible messaging model and an intuitive client API.</description>
             <exclude>**/*.so.*</exclude>
             <exclude>**/*.dylib</exclude>
             <exclude>src/test/resources/*.txt</exclude>
+            <exclude>**/dependency-reduced-pom.xml</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -1851,55 +1684,107 @@ flexible messaging model and an intuitive client API.</description>
         <artifactId>maven-enforcer-plugin</artifactId>
         <version>${maven-enforcer-plugin.version}</version>
         <executions>
-            <execution>
-                <id>enforce-maven</id>
-                <goals>
-                    <goal>enforce</goal>
-                </goals>
-              <configuration>
-                <rules>
-                  <requireJavaVersion>
-                    <version>17</version>
-                    <message>Java 17+ is required to build Pulsar.</message>
-                  </requireJavaVersion>
-                  <requireMavenVersion>
-                    <version>3.6.1</version>
-                  </requireMavenVersion>
-                </rules>
-              </configuration>
-            </execution>
+          <execution>
+            <id>enforce-maven</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireJavaVersion>
+                  <version>17</version>
+                  <message>Java 17+ is required to build Pulsar.</message>
+                </requireJavaVersion>
+                <requireMavenVersion>
+                  <version>3.6.1</version>
+                </requireMavenVersion>
+              </rules>
+            </configuration>
+          </execution>
         </executions>
       </plugin>
       <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>${maven-assembly-plugin.version}</version>
-          <inherited>false</inherited>
-          <executions>
-              <execution>
-                  <id>source-release-assembly-tar-gz</id>
-                  <phase>generate-sources</phase>
-                  <goals>
-                      <goal>single</goal>
-                  </goals>
-                  <configuration>
-                      <skipAssembly>${skipSourceReleaseAssembly}</skipAssembly>
-                      <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
-                      <descriptors>
-                        <descriptor>src/assembly-source-package.xml</descriptor>
-                      </descriptors>
-                      <finalName>apache-pulsar-${project.version}-src</finalName>
-                      <appendAssemblyId>false</appendAssemblyId>
-                      <formats>
-                          <format>tar.gz</format>
-                      </formats>
-                      <tarLongFileMode>posix</tarLongFileMode>
-                  </configuration>
-              </execution>
-          </executions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>${maven-assembly-plugin.version}</version>
+        <inherited>false</inherited>
+        <executions>
+          <execution>
+            <id>source-release-assembly-tar-gz</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+            <configuration>
+              <skipAssembly>${skipSourceReleaseAssembly}</skipAssembly>
+              <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
+              <descriptors>
+                <descriptor>src/assembly-source-package.xml</descriptor>
+              </descriptors>
+              <finalName>apache-pulsar-${project.version}-src</finalName>
+              <appendAssemblyId>false</appendAssemblyId>
+              <formats>
+                <format>tar.gz</format>
+              </formats>
+              <tarLongFileMode>posix</tarLongFileMode>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.sonatype.plugins</groupId>
+        <artifactId>nexus-staging-maven-plugin</artifactId>
+        <version>1.6.13</version>
+        <extensions>true</extensions>
+        <configuration>
+          <serverId>ossrh</serverId>
+          <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
+          <stagingProfileId>60285aee9d4161</stagingProfileId>
+          <skipStagingRepositoryClose>true</skipStagingRepositoryClose>
+          <autoReleaseAfterClose>false</autoReleaseAfterClose>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>attach-sources</id>
+            <goals>
+              <goal>jar-no-fork</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-javadocs</id>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <doclint>none</doclint>
+              <failOnError>false</failOnError>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <version>3.0.0-M1</version>
+        <configuration>
+          <autoVersionSubmodules>true</autoVersionSubmodules>
+          <useReleaseProfile>false</useReleaseProfile>
+          <releaseProfiles>release</releaseProfiles>
+          <goals>deploy</goals>
+        </configuration>
       </plugin>
     </plugins>
-
     <pluginManagement>
       <plugins>
         <plugin>
@@ -1920,10 +1805,10 @@ flexible messaging model and an intuitive client API.</description>
           <artifactId>maven-surefire-plugin</artifactId>
           <configuration>
             <includes>
-                <include>${include}</include>
+              <include>${include}</include>
             </includes>
             <excludes>
-                <exclude>**/*$*,${exclude}</exclude>
+              <exclude>**/*$*,${exclude}</exclude>
             </excludes>
             <groups>${groups}</groups>
             <excludedGroups>${excludedGroups}</excludedGroups>
@@ -2007,13 +1892,13 @@ flexible messaging model and an intuitive client API.</description>
           <groupId>com.github.spotbugs</groupId>
           <artifactId>spotbugs-maven-plugin</artifactId>
           <version>${spotbugs-maven-plugin.version}</version>
-            <dependencies>
-              <dependency>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs</artifactId>
-                <version>${spotbugs.version}</version>
-              </dependency>
-            </dependencies>
+          <dependencies>
+            <dependency>
+              <groupId>com.github.spotbugs</groupId>
+              <artifactId>spotbugs</artifactId>
+              <version>${spotbugs.version}</version>
+            </dependency>
+          </dependencies>
         </plugin>
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
@@ -2025,6 +1910,16 @@ flexible messaging model and an intuitive client API.</description>
           <artifactId>docker-maven-plugin</artifactId>
           <version>${docker-maven.version}</version>
         </plugin>
+        <plugin>
+          <groupId>org.sonatype.plugins</groupId>
+          <artifactId>nexus-staging-maven-plugin</artifactId>
+          <version>1.6.13</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-source-plugin</artifactId>
+          <version>3.2.0</version>
+        </plugin>
       </plugins>
     </pluginManagement>
     <extensions>
@@ -2040,7 +1935,6 @@ flexible messaging model and an intuitive client API.</description>
       </extension>
     </extensions>
   </build>
-
   <profiles>
     <profile>
       <!-- used for running integration tests on Java 8 -->
@@ -2149,7 +2043,6 @@ flexible messaging model and an intuitive client API.</description>
         <module>tests</module>
       </modules>
     </profile>
-
     <profile>
       <!-- Checks style and licensing requirements. This is a good
            idea to run for contributions and for the release process. While it would
@@ -2158,43 +2051,42 @@ flexible messaging model and an intuitive client API.</description>
            using multiple threads. The stability issues seen with Checkstyle in multi-module
            builds include false-positives and false negatives. -->
       <id>contrib-check</id>
-         <build>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.rat</groupId>
-                    <artifactId>apache-rat-plugin</artifactId>
-                    <executions>
-                      <execution>
-                          <goals>
-                              <goal>check</goal>
-                          </goals>
-                          <phase>verify</phase>
-                      </execution>
-                   </executions>
-                </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-checkstyle-plugin</artifactId>
-                    <executions>
-                       <execution>
-                          <id>check-style</id>
-                          <phase>verify</phase>
-                         <configuration>
-                           <configLocation>${pulsar.basedir}/buildtools/src/main/resources/pulsar/checkstyle.xml</configLocation>
-                           <suppressionsLocation>${pulsar.basedir}/buildtools/src/main/resources/pulsar/suppressions.xml</suppressionsLocation>
-                           <encoding>UTF-8</encoding>
-                           <excludes>**/proto/*</excludes>
-                         </configuration>
-                          <goals>
-                             <goal>check</goal>
-                          </goals>
-                       </execution>
-                    </executions>
-                </plugin>
-             </plugins>
-         </build>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.rat</groupId>
+            <artifactId>apache-rat-plugin</artifactId>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>check</goal>
+                </goals>
+                <phase>verify</phase>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-checkstyle-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>check-style</id>
+                <phase>verify</phase>
+                <configuration>
+                  <configLocation>${pulsar.basedir}/buildtools/src/main/resources/pulsar/checkstyle.xml</configLocation>
+                  <suppressionsLocation>${pulsar.basedir}/buildtools/src/main/resources/pulsar/suppressions.xml</suppressionsLocation>
+                  <encoding>UTF-8</encoding>
+                  <excludes>**/proto/*</excludes>
+                </configuration>
+                <goals>
+                  <goal>check</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
     </profile>
-
     <profile>
       <id>windows</id>
       <activation>
@@ -2205,7 +2097,6 @@ flexible messaging model and an intuitive client API.</description>
       <properties>
         <rename.netty.native.libs>rename-netty-native-libs.cmd</rename.netty.native.libs>
       </properties>
-
     </profile>
     <!-- Primary Module profile -->
     <profile>
@@ -2250,37 +2141,27 @@ flexible messaging model and an intuitive client API.</description>
         <module>pulsar-broker-auth-sasl</module>
         <module>pulsar-client-auth-sasl</module>
         <module>pulsar-config-validation</module>
-
         <module>structured-event-log</module>
-
         <!-- transaction related modules -->
         <module>pulsar-transaction</module>
-
         <!-- functions-related modules -->
         <module>pulsar-functions</module>
-
         <!-- connector-related modules -->
         <module>pulsar-io</module>
-
         <!-- Bouncy Castle Provider loaders-->
         <module>bouncy-castle</module>
-
         <module>pulsar-client-messagecrypto-bc</module>
-
         <module>pulsar-metadata</module>
         <module>jclouds-shaded</module>
-
         <!-- package management releated modules (begin) -->
         <module>pulsar-package-management</module>
         <!-- package management releated modules (end) -->
-
         <!-- all these 3 modules should be put at the end in this exact sequence -->
         <module>distribution</module>
         <module>docker</module>
         <module>tests</module>
       </modules>
     </profile>
-
     <!-- core profile focused of pulsar java modules -->
     <profile>
       <id>core-modules</id>
@@ -2310,31 +2191,23 @@ flexible messaging model and an intuitive client API.</description>
         <module>pulsar-broker-auth-sasl</module>
         <module>pulsar-client-auth-sasl</module>
         <module>pulsar-config-validation</module>
-
         <!-- transaction related modules -->
         <module>pulsar-transaction</module>
-
         <!-- functions-related modules -->
         <module>pulsar-functions</module>
-
         <!-- connector-related modules -->
         <module>pulsar-io</module>
-
         <!-- Bouncy Castle Provider loaders-->
         <module>bouncy-castle</module>
-
         <module>pulsar-client-messagecrypto-bc</module>
-
         <!-- all these modules should be put at the end in this exact sequence -->
         <module>distribution</module>
         <module>pulsar-metadata</module>
-
         <!-- package management releated modules (begin) -->
         <module>pulsar-package-management</module>
         <!-- package management releated modules (end) -->
       </modules>
     </profile>
-
     <!--
          Configure Google Error Prone static code analyser, http://errorprone.info
 
@@ -2506,36 +2379,56 @@ flexible messaging model and an intuitive client API.</description>
         </plugins>
       </reporting>
     </profile>
-
     <profile>
       <id>pulsar-io-tests</id>
       <modules>
         <module>pulsar-io</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-io-elastic-tests</id>
       <modules>
         <module>pulsar-io</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-io-kafka-connect-tests</id>
       <modules>
         <module>pulsar-io</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-sql-tests</id>
       <modules>
         <module>pulsar-sql</module>
       </modules>
     </profile>
+    <profile>
+      <id>release-sign-artifacts</id>
+      <activation>
+        <property>
+          <name>performRelease</name>
+          <value>true</value>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-gpg-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>sign-artifacts</id>
+                <phase>verify</phase>
+                <goals>
+                  <goal>sign</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
-
   <repositories>
     <repository>
       <id>central</id>
@@ -2561,4 +2454,14 @@ flexible messaging model and an intuitive client API.</description>
       </snapshots>
     </repository>
   </repositories>
+  <distributionManagement>
+    <snapshotRepository>
+      <id>ossrh</id>
+      <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
+    </snapshotRepository>
+    <repository>
+      <id>ossrh</id>
+      <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+    </repository>
+  </distributionManagement>
 </project>
diff --git a/pulsar-broker-auth-athenz/pom.xml b/pulsar-broker-auth-athenz/pom.xml
index e66d234e7a698..a019cef02cefc 100644
--- a/pulsar-broker-auth-athenz/pom.xml
+++ b/pulsar-broker-auth-athenz/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,47 +19,37 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-broker-auth-athenz</artifactId>
   <packaging>jar</packaging>
   <description>Athenz authentication plugin for broker</description>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.yahoo.athenz</groupId>
       <artifactId>athenz-zpe-java-client</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-jdk18on</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -79,7 +69,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -97,7 +86,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -111,7 +99,6 @@
           </execution>
         </executions>
       </plugin>
-
     </plugins>
   </build>
 </project>
diff --git a/pulsar-broker-auth-athenz/src/test/resources/findbugsExclude.xml b/pulsar-broker-auth-athenz/src/test/resources/findbugsExclude.xml
index ddde8120ba518..47c3d73af5f06 100644
--- a/pulsar-broker-auth-athenz/src/test/resources/findbugsExclude.xml
+++ b/pulsar-broker-auth-athenz/src/test/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,4 +20,4 @@
 
 -->
 <FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-broker-auth-oidc/pom.xml b/pulsar-broker-auth-oidc/pom.xml
index 217e0668a328a..e3ef958b0bf8c 100644
--- a/pulsar-broker-auth-oidc/pom.xml
+++ b/pulsar-broker-auth-oidc/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,26 +19,20 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-broker-auth-oidc</artifactId>
   <packaging>jar</packaging>
   <description>Open ID Connect authentication plugin for broker</description>
-
   <properties>
     <jsonwebtoken.version>0.11.5</jsonwebtoken.version>
   </properties>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-common</artifactId>
@@ -50,29 +44,24 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>com.auth0</groupId>
       <artifactId>java-jwt</artifactId>
       <version>4.3.0</version>
     </dependency>
-
     <dependency>
       <groupId>com.auth0</groupId>
       <artifactId>jwks-rsa</artifactId>
       <version>0.22.0</version>
     </dependency>
-
     <dependency>
       <groupId>com.github.ben-manes.caffeine</groupId>
       <artifactId>caffeine</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.asynchttpclient</groupId>
       <artifactId>async-http-client</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.kubernetes</groupId>
       <artifactId>client-java</artifactId>
@@ -97,7 +86,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-api</artifactId>
@@ -110,16 +98,13 @@
       <version>${jsonwebtoken.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.tomakehurst</groupId>
       <artifactId>wiremock-jre8</artifactId>
       <version>${wiremock.version}</version>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <profiles>
     <profile>
       <!-- enables builds with -Dmaven.test.skip=true -->
@@ -141,8 +126,6 @@
       </dependencies>
     </profile>
   </profiles>
-
-
   <build>
     <plugins>
       <plugin>
@@ -162,7 +145,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-broker-auth-sasl/pom.xml b/pulsar-broker-auth-sasl/pom.xml
index 5962c0f8f1446..edf4dfe22bfb1 100644
--- a/pulsar-broker-auth-sasl/pom.xml
+++ b/pulsar-broker-auth-sasl/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,28 +19,22 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-broker-auth-sasl</artifactId>
   <packaging>jar</packaging>
   <description>SASL authentication plugin for broker</description>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerby-config</artifactId>
@@ -53,7 +47,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerb-simplekdc</artifactId>
@@ -66,30 +59,25 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-proxy</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-auth-sasl</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <profiles>
     <profile>
       <!-- enables builds with -Dmaven.test.skip=true -->
@@ -111,8 +99,6 @@
       </dependencies>
     </profile>
   </profiles>
-
-
   <build>
     <plugins>
       <plugin>
@@ -132,7 +118,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-broker-common/pom.xml b/pulsar-broker-common/pom.xml
index 7995a62073917..597e08fbf147c 100644
--- a/pulsar-broker-common/pom.xml
+++ b/pulsar-broker-common/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,56 +19,45 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-broker-common</artifactId>
   <description>Common classes used in multiple broker modules</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-metadata</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_jetty</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>javax.servlet-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>javax.ws.rs-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-impl</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-jackson</artifactId>
     </dependency>
-
     <!-- test -->
     <dependency>
       <groupId>org.bouncycastle</groupId>
@@ -76,14 +65,12 @@
       <version>${bouncycastle.bc-fips.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -103,7 +90,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -117,7 +103,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <executions>
diff --git a/pulsar-broker/pom.xml b/pulsar-broker/pom.xml
index 28f6e5a4172c9..68e518366a7e6 100644
--- a/pulsar-broker/pom.xml
+++ b/pulsar-broker/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,81 +19,66 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-broker</artifactId>
   <packaging>jar</packaging>
   <name>Pulsar Broker</name>
-
   <dependencies>
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-transport</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-websocket</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>managed-ledger</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.curator</groupId>
       <artifactId>curator-recipes</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>stream-storage-server</artifactId>
@@ -119,170 +105,139 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-tools-framework</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-transaction-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-batch-discovery-triggerers</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.tomakehurst</groupId>
       <artifactId>wiremock-jre8</artifactId>
       <version>${wiremock.version}</version>
       <scope>test</scope>
     </dependency>
-
     <!-- zookeeper server -->
     <dependency>
-       <groupId>io.dropwizard.metrics</groupId>
-       <artifactId>metrics-core</artifactId>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
     </dependency>
-
     <!-- zookeeper server -->
     <dependency>
-       <groupId>org.xerial.snappy</groupId>
-       <artifactId>snappy-java</artifactId>
+      <groupId>org.xerial.snappy</groupId>
+      <artifactId>snappy-java</artifactId>
     </dependency>
-
     <!-- functions related dependencies (begin) -->
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-worker</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-local-runner-original</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-messagecrypto-bc</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
     <!-- functions related dependencies (end) -->
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-alpn-conscrypt-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlets</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-json-jackson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.test-framework</groupId>
       <artifactId>jersey-test-framework-core</artifactId>
       <scope>test</scope>
       <version>${jersey.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.test-framework.providers</groupId>
       <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
       <scope>test</scope>
       <version>${jersey.version}</version>
     </dependency>
-
     <dependency>
       <groupId>jakarta.activation</groupId>
       <artifactId>jakarta.activation-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.inject</groupId>
       <artifactId>jersey-hk2</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.module</groupId>
       <artifactId>jackson-module-jsonSchema</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-docs-tools</artifactId>
@@ -294,80 +249,65 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_jetty</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_hotspot</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_caffeine</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-core</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.hdrhistogram</groupId>
       <artifactId>HdrHistogram</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.github.zafarkhaja</groupId>
       <artifactId>java-semver</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.carrotsearch</groupId>
       <artifactId>hppc</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.roaringbitmap</groupId>
       <artifactId>RoaringBitmap</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.github.oshi</groupId>
       <artifactId>oshi-core-java11</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api-examples</artifactId>
@@ -375,7 +315,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api-examples-builtin</artifactId>
@@ -383,7 +322,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-batch-data-generator</artifactId>
@@ -391,7 +329,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-data-generator</artifactId>
@@ -399,7 +336,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-metadata</artifactId>
@@ -407,7 +343,6 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
@@ -418,42 +353,33 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>com.sun.activation</groupId>
       <artifactId>javax.activation</artifactId>
     </dependency>
-
     <!-- transaction related dependencies (begin) -->
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-transaction-coordinator</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <!-- transaction related dependencies (end) -->
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.etcd</groupId>
       <artifactId>jetcd-test</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-filesystem-storage</artifactId>
       <version>${project.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -476,7 +402,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -507,7 +432,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
@@ -560,7 +484,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
@@ -576,7 +499,6 @@
           </systemPropertyVariables>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.xolstice.maven.plugins</groupId>
         <artifactId>protobuf-maven-plugin</artifactId>
@@ -646,7 +568,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <executions>
@@ -677,7 +598,6 @@
       </resource>
     </resources>
   </build>
-
   <profiles>
     <profile>
       <!-- enables builds with -Dmaven.test.skip=true -->
@@ -696,7 +616,6 @@
           <type>test-jar</type>
           <scope>test</scope>
         </dependency>
-
         <dependency>
           <groupId>${project.groupId}</groupId>
           <artifactId>pulsar-package-core</artifactId>
@@ -704,7 +623,6 @@
           <type>test-jar</type>
           <scope>test</scope>
         </dependency>
-
         <dependency>
           <groupId>${project.groupId}</groupId>
           <artifactId>pulsar-metadata</artifactId>
diff --git a/pulsar-client-1x-base/pom.xml b/pulsar-client-1x-base/pom.xml
index 2b4ff954a70a6..be2db35197877 100644
--- a/pulsar-client-1x-base/pom.xml
+++ b/pulsar-client-1x-base/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,26 +19,21 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-1x-base</artifactId>
   <name>Pulsar Client 1.x Compatibility Base</name>
   <packaging>pom</packaging>
-
   <modules>
     <module>pulsar-client-2x-shaded</module>
     <module>pulsar-client-1x</module>
   </modules>
-
   <build>
     <plugins>
       <plugin>
@@ -61,7 +57,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -77,5 +72,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-client-1x-base/pulsar-client-1x/pom.xml b/pulsar-client-1x-base/pulsar-client-1x/pom.xml
index 8184886685227..63a6ae8169544 100644
--- a/pulsar-client-1x-base/pulsar-client-1x/pom.xml
+++ b/pulsar-client-1x-base/pulsar-client-1x/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,39 +19,31 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-client-1x-base</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-1x</artifactId>
   <name>Pulsar Client 1.x Compatibility API</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-2x-shaded</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
   </dependencies>
-
-
   <build>
     <plugins>
       <plugin>
@@ -70,7 +63,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -90,5 +82,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-client-1x-base/pulsar-client-1x/src/main/resources/findbugsExclude.xml b/pulsar-client-1x-base/pulsar-client-1x/src/main/resources/findbugsExclude.xml
index 7938e60bf4330..d191e191d52ca 100644
--- a/pulsar-client-1x-base/pulsar-client-1x/src/main/resources/findbugsExclude.xml
+++ b/pulsar-client-1x-base/pulsar-client-1x/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-client-1x-base/pulsar-client-2x-shaded/pom.xml b/pulsar-client-1x-base/pulsar-client-2x-shaded/pom.xml
index 3f6ea980a936c..4c58d3e51e574 100644
--- a/pulsar-client-1x-base/pulsar-client-2x-shaded/pom.xml
+++ b/pulsar-client-1x-base/pulsar-client-2x-shaded/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-client-1x-base</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-2x-shaded</artifactId>
   <name>Pulsar Client 2.x Shaded API</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -39,10 +36,9 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
-       <plugin>
+      <plugin>
         <!-- Shade all the dependencies to avoid conflicts -->
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
@@ -56,16 +52,15 @@
               <createDependencyReducedPom>true</createDependencyReducedPom>
               <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
               <minimizeJar>false</minimizeJar>
-
               <artifactSet>
                 <includes>
-                  <include>org.apache.pulsar:pulsar-client</include>
-                  <include>org.apache.pulsar:pulsar-client-api</include>
+                  <include>io.streamnative:pulsar-client</include>
+                  <include>io.streamnative:pulsar-client-api</include>
                 </includes>
               </artifactSet>
               <filters>
                 <filter>
-                  <artifact>org.apache.pulsar:pulsar-client</artifact>
+                  <artifact>io.streamnative:pulsar-client</artifact>
                   <includes>
                     <include>**</include>
                   </includes>
@@ -93,6 +88,30 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/pulsar-client-admin-api/pom.xml b/pulsar-client-admin-api/pom.xml
index a6c2476f10d32..47f0629af01d7 100644
--- a/pulsar-client-admin-api/pom.xml
+++ b/pulsar-client-admin-api/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,75 +19,66 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>pulsar-client-admin-api</artifactId>
-    <name>Pulsar Client Admin :: API</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <release>${pulsar.client.compiler.release}</release>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>8</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-client-admin-api</artifactId>
+  <name>Pulsar Client Admin :: API</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <release>${pulsar.client.compiler.release}</release>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>8</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-client-admin-shaded/pom.xml b/pulsar-client-admin-shaded/pom.xml
index 915394c848fc0..77f5a6cedfc98 100644
--- a/pulsar-client-admin-shaded/pom.xml
+++ b/pulsar-client-admin-shaded/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,20 +19,16 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-admin</artifactId>
   <name>Pulsar Client Admin</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -74,7 +70,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
@@ -87,15 +82,12 @@
             <configuration>
               <target>
                 <!-- shade the AsyncHttpClient ahc-default.properties files -->
-                <replace token= "org.asynchttpclient."
-                         value="org.apache.pulsar.shade.org.asynchttpclient."
-                         file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
+                <replace token="org.asynchttpclient." value="org.apache.pulsar.shade.org.asynchttpclient." file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
               </target>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
@@ -108,11 +100,10 @@
             <configuration>
               <createDependencyReducedPom>true</createDependencyReducedPom>
               <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
-
               <artifactSet>
                 <includes>
-                  <include>org.apache.pulsar:pulsar-client-original</include>
-                  <include>org.apache.pulsar:pulsar-client-admin-original</include>
+                  <include>io.streamnative:pulsar-client-original</include>
+                  <include>io.streamnative:pulsar-client-admin-original</include>
                   <include>org.apache.commons:commons-lang3</include>
                   <include>commons-codec:commons-codec</include>
                   <include>commons-collections:commons-collections</include>
@@ -126,7 +117,7 @@
                   <include>com.fasterxml.jackson.*:*</include>
                   <include>io.netty:*</include>
                   <include>io.netty.incubator:*</include>
-                  <include>org.apache.pulsar:pulsar-common</include>
+                  <include>io.streamnative:pulsar-common</include>
                   <include>org.apache.bookkeeper:*</include>
                   <include>com.yahoo.datasketches:sketches-core</include>
                   <include>org.glassfish.jersey*:*</include>
@@ -148,7 +139,7 @@
                   <include>org.yaml:snakeyaml</include>
                   <include>io.swagger:*</include>
                   <!-- Issue #6834, Since Netty ByteBuf shaded, we need also shade this module -->
-                  <include>org.apache.pulsar:pulsar-client-messagecrypto-bc</include>
+                  <include>io.streamnative:pulsar-client-messagecrypto-bc</include>
                 </includes>
                 <excludes>
                   <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>
@@ -156,7 +147,7 @@
               </artifactSet>
               <filters>
                 <filter>
-                  <artifact>org.apache.pulsar:pulsar-client-original</artifact>
+                  <artifact>io.streamnative:pulsar-client-original</artifact>
                   <includes>
                     <include>**</include>
                   </includes>
@@ -166,7 +157,7 @@
                   </excludes>
                 </filter>
                 <filter>
-                  <artifact>org.apache.pulsar:pulsar-client-admin-original</artifact>
+                  <artifact>io.streamnative:pulsar-client-admin-original</artifact>
                   <includes>
                     <include>**</include>
                   </includes>
@@ -177,7 +168,7 @@
                 </filter>
               </filters>
               <relocations>
-               <relocation>
+                <relocation>
                   <pattern>org.asynchttpclient</pattern>
                   <shadedPattern>org.apache.pulsar.shade.org.asynchttpclient</shadedPattern>
                 </relocation>
@@ -259,51 +250,75 @@
                   <pattern>org.reactivestreams</pattern>
                   <shadedPattern>org.apache.pulsar.shade.org.reactivestreams</shadedPattern>
                 </relocation>
-                  <relocation>
-                      <pattern>io.grpc</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.io.grpc</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>okio</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.okio</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>com.squareup</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.com.squareup</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>io.opencensus</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.io.opencensus</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>org.eclipse.jetty</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>org.objenesis</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.org.objenesis</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>org.yaml</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.org.yaml</shadedPattern>
-                  </relocation>
-                  <relocation>
-                      <pattern>io.swagger</pattern>
-                      <shadedPattern>org.apache.pulsar.shade.io.swagger</shadedPattern>
-                  </relocation>
-                  <relocation>
-                    <pattern>org.apache.bookkeeper</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.org.apache.bookkeeper</shadedPattern>
-                  </relocation>
+                <relocation>
+                  <pattern>io.grpc</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.io.grpc</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>okio</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.okio</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.squareup</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.com.squareup</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.opencensus</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.io.opencensus</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.eclipse.jetty</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.objenesis</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.objenesis</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.yaml</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.yaml</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.swagger</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.io.swagger</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.bookkeeper</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.apache.bookkeeper</shadedPattern>
+                </relocation>
               </relocations>
               <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
               </transformers>
             </configuration>
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/pulsar-client-admin/pom.xml b/pulsar-client-admin/pom.xml
index b65482ea07e14..06cae93ee7df7 100644
--- a/pulsar-client-admin/pom.xml
+++ b/pulsar-client-admin/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,63 +19,51 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-admin-original</artifactId>
   <name>Pulsar Client Admin Original</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-client</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-json-jackson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>jakarta.activation</groupId>
       <artifactId>jakarta.activation-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-multipart</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.inject</groupId>
       <artifactId>jersey-hk2</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
@@ -91,30 +79,25 @@
       <artifactId>javax.activation</artifactId>
       <scope>runtime</scope>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -141,7 +124,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-client-all/pom.xml b/pulsar-client-all/pom.xml
index 7ca51d780f451..1db0b4e13e88e 100644
--- a/pulsar-client-all/pom.xml
+++ b/pulsar-client-all/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-all</artifactId>
   <name>Pulsar Client All</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -70,7 +67,6 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -108,7 +104,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
@@ -121,15 +116,12 @@
             <configuration>
               <target>
                 <!-- shade the AsyncHttpClient ahc-default.properties files -->
-                <replace token= "org.asynchttpclient."
-                         value="org.apache.pulsar.shade.org.asynchttpclient."
-                         file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
+                <replace token="org.asynchttpclient." value="org.apache.pulsar.shade.org.asynchttpclient." file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
               </target>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <!-- Shade all the dependencies to avoid conflicts -->
         <groupId>org.apache.maven.plugins</groupId>
@@ -146,11 +138,10 @@
               <createDependencyReducedPom>true</createDependencyReducedPom>
               <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
               <minimizeJar>false</minimizeJar>
-
               <artifactSet>
                 <includes>
-                  <include>org.apache.pulsar:pulsar-client-original</include>
-                  <include>org.apache.pulsar:pulsar-client-admin-original</include>
+                  <include>io.streamnative:pulsar-client-original</include>
+                  <include>io.streamnative:pulsar-client-admin-original</include>
                   <include>org.apache.commons:commons-lang3</include>
                   <include>commons-codec:commons-codec</include>
                   <include>commons-collections:commons-collections</include>
@@ -176,8 +167,7 @@
                   <include>commons-*:*</include>
                   <include>io.swagger:*</include>
                   <include>io.airlift:*</include>
-
-                  <include>org.apache.pulsar:pulsar-common</include>
+                  <include>io.streamnative:pulsar-common</include>
                   <include>org.apache.bookkeeper:*</include>
                   <include>com.yahoo.datasketches:sketches-core</include>
                   <include>org.glassfish.jersey*:*</include>
@@ -205,7 +195,7 @@
                   <include>org.apache.commons:commons-compress</include>
                   <include>org.tukaani:xz</include>
                   <!-- Issue #6834, Since Netty ByteBuf shaded, we need also shade this module -->
-                  <include>org.apache.pulsar:pulsar-client-messagecrypto-bc</include>
+                  <include>io.streamnative:pulsar-client-messagecrypto-bc</include>
                 </includes>
                 <excludes>
                   <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>
@@ -213,7 +203,7 @@
               </artifactSet>
               <filters>
                 <filter>
-                  <artifact>org.apache.pulsar:pulsar-client-original</artifact>
+                  <artifact>io.streamnative:pulsar-client-original</artifact>
                   <includes>
                     <include>**</include>
                   </includes>
@@ -315,24 +305,24 @@
                   <shadedPattern>org.apache.pulsar.shade.org.glassfish</shadedPattern>
                 </relocation>
                 <relocation>
-                    <pattern>io.grpc</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.io.grpc</shadedPattern>
+                  <pattern>io.grpc</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.io.grpc</shadedPattern>
                 </relocation>
                 <relocation>
-                    <pattern>okio</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.okio</shadedPattern>
+                  <pattern>okio</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.okio</shadedPattern>
                 </relocation>
                 <relocation>
-                    <pattern>com.squareup</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.com.squareup</shadedPattern>
+                  <pattern>com.squareup</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.com.squareup</shadedPattern>
                 </relocation>
                 <relocation>
-                    <pattern>io.opencensus</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.io.opencensus</shadedPattern>
+                  <pattern>io.opencensus</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.io.opencensus</shadedPattern>
                 </relocation>
                 <relocation>
-                    <pattern>org.eclipse.jetty</pattern>
-                    <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
+                  <pattern>org.eclipse.jetty</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
                 </relocation>
                 <relocation>
                   <pattern>org.objenesis</pattern>
@@ -389,14 +379,13 @@
                 </relocation>
               </relocations>
               <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
               </transformers>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <!-- This plugin is used to run a script after the package phase in order to rename
             libnetty_transport_native_epoll_x86_64.so from Netty into
@@ -451,6 +440,30 @@
           </dependency>
         </dependencies>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/pulsar-client-api/pom.xml b/pulsar-client-api/pom.xml
index 24042de4d3af5..36caf4d0bcecf 100644
--- a/pulsar-client-api/pom.xml
+++ b/pulsar-client-api/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,87 +19,77 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>pulsar-client-api</artifactId>
-    <name>Pulsar Client :: API</name>
-
-    <dependencies>
-        <!--
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-client-api</artifactId>
+  <name>Pulsar Client :: API</name>
+  <dependencies>
+    <!--
             This module is meant to be free of any dependencies, because we don't want to have external symbols
             exposed directly in our API.
 
             The exception here is Protobuf, in order to support Protobuf schema. The library is marked as provided
             so it's the user responsibility to add it to the classpath.
         -->
-
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <release>${pulsar.client.compiler.release}</release>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>8</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <release>${pulsar.client.compiler.release}</release>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>8</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-client-api/src/main/resources/findbugsExclude.xml b/pulsar-client-api/src/main/resources/findbugsExclude.xml
index 9d73ac29a7bdb..353f01a7bb285 100644
--- a/pulsar-client-api/src/main/resources/findbugsExclude.xml
+++ b/pulsar-client-api/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -36,15 +37,13 @@
     <Class name="org.apache.pulsar.common.schema.SchemaInfo$SchemaInfoBuilder"/>
     <Bug pattern="EI_EXPOSE_REP2"/>
   </Match>
-
   <Match>
     <Class name="org.apache.pulsar.common.api.AuthData"/>
     <Bug pattern="EI_EXPOSE_REP"/>
   </Match>
-
   <!-- The implementation of Schema#encode may have side effect so the return value can be ignored -->
   <Match>
     <Class name="org.apache.pulsar.client.api.Schema"/>
     <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/>
   </Match>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-client-auth-athenz/pom.xml b/pulsar-client-auth-athenz/pom.xml
index 5b7d173d6b23e..f7952a666a3db 100644
--- a/pulsar-client-auth-athenz/pom.xml
+++ b/pulsar-client-auth-athenz/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,56 +19,45 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-auth-athenz</artifactId>
   <packaging>jar</packaging>
   <description>Athenz authentication plugin for java client</description>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.parent.version}</version>
       <optional>true</optional>
     </dependency>
-
     <dependency>
       <groupId>com.yahoo.athenz</groupId>
       <artifactId>athenz-zts-java-client-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.yahoo.athenz</groupId>
       <artifactId>athenz-cert-refresher</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-jdk18on</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -77,7 +67,6 @@
           <release>${pulsar.client.compiler.release}</release>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
@@ -108,7 +97,6 @@
           </dependency>
         </dependencies>
       </plugin>
-
       <plugin>
         <groupId>org.gaul</groupId>
         <artifactId>modernizer-maven-plugin</artifactId>
@@ -126,7 +114,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -144,7 +131,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-client-auth-athenz/src/test/resources/findbugsExclude.xml b/pulsar-client-auth-athenz/src/test/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-client-auth-athenz/src/test/resources/findbugsExclude.xml
+++ b/pulsar-client-auth-athenz/src/test/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-client-auth-sasl/pom.xml b/pulsar-client-auth-sasl/pom.xml
index ffafaa48ecbb8..69dc73937e960 100644
--- a/pulsar-client-auth-sasl/pom.xml
+++ b/pulsar-client-auth-sasl/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,57 +19,45 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-auth-sasl</artifactId>
   <packaging>jar</packaging>
   <description>SASL authentication plugin for java client</description>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.parent.version}</version>
       <optional>true</optional>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>javax.ws.rs-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-client</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -78,7 +67,6 @@
           <release>${pulsar.client.compiler.release}</release>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
@@ -109,7 +97,6 @@
           </dependency>
         </dependencies>
       </plugin>
-
       <plugin>
         <groupId>org.gaul</groupId>
         <artifactId>modernizer-maven-plugin</artifactId>
@@ -127,7 +114,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-client-messagecrypto-bc/pom.xml b/pulsar-client-messagecrypto-bc/pom.xml
index 67b0fd5a9f822..3ea9fc8e72c10 100644
--- a/pulsar-client-messagecrypto-bc/pom.xml
+++ b/pulsar-client-messagecrypto-bc/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,21 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-messagecrypto-bc</artifactId>
   <packaging>jar</packaging>
   <description>Message crypto for End to End encryption with BouncyCastleProvider</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -40,7 +37,6 @@
       <version>${project.parent.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>bouncy-castle-bc</artifactId>
@@ -48,9 +44,7 @@
       <classifier>pkg</classifier>
       <optional>true</optional>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-client-shaded/pom.xml b/pulsar-client-shaded/pom.xml
index 8c3dc2cf73714..07d116ce5deee 100644
--- a/pulsar-client-shaded/pom.xml
+++ b/pulsar-client-shaded/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client</artifactId>
   <name>Pulsar Client Java</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -49,11 +46,8 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
-
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
@@ -89,7 +83,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
@@ -102,15 +95,12 @@
             <configuration>
               <target>
                 <!-- shade the AsyncHttpClient ahc-default.properties files -->
-                <replace token= "org.asynchttpclient."
-                         value="org.apache.pulsar.shade.org.asynchttpclient."
-                         file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
+                <replace token="org.asynchttpclient." value="org.apache.pulsar.shade.org.asynchttpclient." file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
               </target>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <!-- Shade all the dependencies to avoid conflicts -->
         <groupId>org.apache.maven.plugins</groupId>
@@ -125,10 +115,9 @@
               <createDependencyReducedPom>true</createDependencyReducedPom>
               <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
               <minimizeJar>false</minimizeJar>
-
               <artifactSet>
                 <includes>
-                  <include>org.apache.pulsar:pulsar-client-original</include>
+                  <include>io.streamnative:pulsar-client-original</include>
                   <include>org.apache.bookkeeper:*</include>
                   <include>org.apache.commons:commons-lang3</include>
                   <include>commons-codec:commons-codec</include>
@@ -154,19 +143,17 @@
                   <include>commons-*:*</include>
                   <include>io.swagger:*</include>
                   <include>io.airlift:*</include>
-
-                  <include>org.apache.pulsar:pulsar-common</include>
+                  <include>io.streamnative:pulsar-common</include>
                   <include>com.yahoo.datasketches:sketches-core</include>
                   <include>org.objenesis:*</include>
                   <include>org.yaml:snakeyaml</include>
-
                   <include>org.apache.avro:*</include>
                   <!-- Avro transitive dependencies-->
                   <include>com.thoughtworks.paranamer:paranamer</include>
                   <include>org.apache.commons:commons-compress</include>
                   <include>org.tukaani:xz</include>
                   <!-- Issue #6834, Since Netty ByteBuf shaded, we need also shade this module -->
-                  <include>org.apache.pulsar:pulsar-client-messagecrypto-bc</include>
+                  <include>io.streamnative:pulsar-client-messagecrypto-bc</include>
                 </includes>
                 <excludes>
                   <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>
@@ -174,7 +161,7 @@
               </artifactSet>
               <filters>
                 <filter>
-                  <artifact>org.apache.pulsar:pulsar-client-original</artifact>
+                  <artifact>io.streamnative:pulsar-client-original</artifact>
                   <includes>
                     <include>**</include>
                   </includes>
@@ -302,14 +289,13 @@
                 </relocation>
               </relocations>
               <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
               </transformers>
             </configuration>
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -323,7 +309,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <!-- This plugin is used to run a script after the package phase in order to rename
             libnetty_transport_native_epoll_x86_64.so from Netty into
@@ -348,6 +333,30 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/pulsar-client-tools-api/pom.xml b/pulsar-client-tools-api/pom.xml
index c92ed95042085..b089ca8567ec4 100644
--- a/pulsar-client-tools-api/pom.xml
+++ b/pulsar-client-tools-api/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-tools-api</artifactId>
   <name>Pulsar Client Tools API</name>
   <description>Pulsar Client Tools API</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -66,7 +64,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -82,5 +79,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-client-tools-customcommand-example/pom.xml b/pulsar-client-tools-customcommand-example/pom.xml
index 23daa30b2303d..b130a8d090bae 100644
--- a/pulsar-client-tools-customcommand-example/pom.xml
+++ b/pulsar-client-tools-customcommand-example/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,9 +21,9 @@
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -31,7 +32,7 @@
   <name>Pulsar CLI Custom command example</name>
   <dependencies>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-client-tools-api</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
diff --git a/pulsar-client-tools-test/pom.xml b/pulsar-client-tools-test/pom.xml
index 74977b2b883f1..a64af817b9375 100644
--- a/pulsar-client-tools-test/pom.xml
+++ b/pulsar-client-tools-test/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-tools-test</artifactId>
   <name>Pulsar Client Tools Test</name>
   <description>Pulsar Client Tools Test</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -89,7 +87,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>
@@ -126,8 +123,8 @@
             <configuration>
               <target>
                 <echo>copy filters</echo>
-                <mkdir dir="${project.build.outputDirectory}/cliextensions" />
-                <copy verbose="true" file="${basedir}/../pulsar-client-tools-customcommand-example/target/customCommands-nar.nar" tofile="${project.build.outputDirectory}/cliextensions/customCommands-nar.nar" />
+                <mkdir dir="${project.build.outputDirectory}/cliextensions"/>
+                <copy verbose="true" file="${basedir}/../pulsar-client-tools-customcommand-example/target/customCommands-nar.nar" tofile="${project.build.outputDirectory}/cliextensions/customCommands-nar.nar"/>
               </target>
             </configuration>
           </execution>
diff --git a/pulsar-client-tools-test/src/test/resources/findbugsExclude.xml b/pulsar-client-tools-test/src/test/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-client-tools-test/src/test/resources/findbugsExclude.xml
+++ b/pulsar-client-tools-test/src/test/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-client-tools/pom.xml b/pulsar-client-tools/pom.xml
index 9ce3e6e3ba35f..bb984e55d7591 100644
--- a/pulsar-client-tools/pom.xml
+++ b/pulsar-client-tools/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-tools</artifactId>
   <name>Pulsar Client Tools</name>
   <description>Pulsar Client Tools</description>
-
   <dependencies>
     <dependency>
       <groupId>com.beust</groupId>
@@ -109,7 +107,6 @@
       <artifactId>swagger-core</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <!-- functions related dependencies (begin) -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -117,9 +114,8 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-io-batch-discovery-triggerers</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
@@ -137,9 +133,7 @@
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-text</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -159,7 +153,6 @@
           </execution>
         </executions>
       </plugin>
-
       <!-- this task is used for copy all python files together to provide a instance directory
            for running python instance -->
       <plugin>
@@ -179,7 +172,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -195,5 +187,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-client/pom.xml b/pulsar-client/pom.xml
index 694a4ebde9d8a..7e3fd196a3fbd 100644
--- a/pulsar-client/pom.xml
+++ b/pulsar-client/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,40 +19,33 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-client-original</artifactId>
   <name>Pulsar Client Java</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-api</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>bouncy-castle-bc</artifactId>
       <version>${project.parent.version}</version>
       <classifier>pkg</classifier>
     </dependency>
-
     <dependency>
       <!-- this module only need by the real client, client inside broker no need this module -->
       <groupId>${project.groupId}</groupId>
@@ -59,7 +53,6 @@
       <version>${project.parent.version}</version>
       <optional>true</optional>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-codec-http</artifactId>
@@ -72,13 +65,11 @@
       <groupId>io.netty</groupId>
       <artifactId>netty-codec-socks</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-resolver-dns</artifactId>
@@ -93,50 +84,40 @@
       <artifactId>netty-resolver-dns-native-macos</artifactId>
       <classifier>osx-x86_64</classifier>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.asynchttpclient</groupId>
       <artifactId>async-http-client</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.typesafe.netty</groupId>
       <artifactId>netty-reactive-streams</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.yahoo.datasketches</groupId>
       <artifactId>sketches-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <!--Schema dependencies-->
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro-protobuf</artifactId>
@@ -148,36 +129,30 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>joda-time</groupId>
       <artifactId>joda-time</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.module</groupId>
       <artifactId>jackson-module-jsonSchema</artifactId>
     </dependency>
-
     <dependency>
       <groupId>net.jcip</groupId>
       <artifactId>jcip-annotations</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
       <scope>provided</scope>
       <optional>true</optional>
     </dependency>
-
     <!-- Testing dependencies -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -185,22 +160,18 @@
       <version>${project.parent.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.skyscreamer</groupId>
       <artifactId>jsonassert</artifactId>
       <version>${skyscreamer.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <resources>
       <resource>
@@ -234,7 +205,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -248,7 +218,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.xolstice.maven.plugins</groupId>
         <artifactId>protobuf-maven-plugin</artifactId>
diff --git a/pulsar-client/src/main/resources/findbugsExclude.xml b/pulsar-client/src/main/resources/findbugsExclude.xml
index 67c012ad30b8f..1412601fec937 100644
--- a/pulsar-client/src/main/resources/findbugsExclude.xml
+++ b/pulsar-client/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,998 +20,977 @@
 
 -->
 <FindBugsFilter>
-
-    <Match>
-        <Class name="~org.apache.pulsar.client.impl.*"/>
-        <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-    </Match>
-
-    <Match>
-        <Class name="~org.apache.pulsar.client.impl.schema.generic.*"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerResponse"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataBasic"/>
-        <Bug pattern="DM_DEFAULT_ENCODING"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerResponse"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerImpl"/>
-        <Bug pattern="IS2_INCONSISTENT_SYNC"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataTls"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ZeroQueueConsumerImpl"/>
-        <Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.BooleanSchema"/>
-        <Bug pattern="NP_BOOLEAN_RETURN_NULL"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-
-    <Match>
-      <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl$SchemaInfoImplBuilder"/>
-      <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-
-
-    <Match>
-        <Class name="~org.apache.pulsar.client.impl.ConsumerImpl.*"/>
-        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
-    </Match>
-
-    <Match>
-        <Class name="~org.apache.pulsar.client.impl.ConsumerImpl.*"/>
-        <Bug pattern="REC_CATCH_EXCEPTION"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerStatsRecorderImpl"/>
-        <Bug pattern="SE_BAD_FIELD"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerImpl."/>
-        <Bug pattern="IS2_INCONSISTENT_SYNC"/>
-    </Match>
-
-    <!-- Needed for compatibility with TopicMessageIdImpl -->
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageIdImpl"/>
-        <Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
-        <Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/>
-    </Match>
-
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.Hash"/>
-        <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/>
-    </Match>
-
-    <!-- Allow existing EI_EXPOSE_REP and EI_EXPOSE_REP2 warnings -->
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AbstractBatchMessageContainer"/>
-        <Method name="setProducer"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataKeyStoreTls"/>
-        <Method name="getTlsKeyStoreParams"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataKeyStoreTls"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.oauth2.protocol.TokenExchangeException"/>
-        <Method name="getError"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.auth.oauth2.protocol.TokenExchangeException"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getPulsarClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getSecondary"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getSecondaryAuthentications"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getSecondaryTlsTrustCertsFilePaths"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getSecondaryTlsTrustStorePasswords"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="getSecondaryTlsTrustStorePaths"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="initialize"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="setPulsarClient"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="setSecondaryTlsTrustStorePasswords"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
-        <Method name="setSecondaryTlsTrustStorePaths"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
-        <Method name="secondary"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
-        <Method name="secondaryAuthentication"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
-        <Method name="secondaryTlsTrustCertsFilePath"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
-        <Method name="secondaryTlsTrustStorePassword"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
-        <Method name="secondaryTlsTrustStorePath"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
-        <Method name="getAcker"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.BinaryProtoLookupService"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ChunkMessageIdImpl"/>
-        <Method name="getFirstChunkMessageId"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ChunkMessageIdImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ClientBuilderImpl"/>
-        <Method name="getClientConfigurationData"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ClientBuilderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ClientCnx"/>
-        <Method name="getPendingRequests"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ClientCnxIdleState"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="getAuthParamMap"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="getTlsCiphers"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="getTlsProtocols"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="setAuthParamMap"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="setTlsCiphers"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
-        <Method name="setTlsProtocols"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="getDeadLetterPolicy"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="getMessageCrypto"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="getSubscriptionProperties"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="getTopicConfigurations"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="getTopicNames"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="setDeadLetterPolicy"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="setMessageCrypto"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="setSubscriptionProperties"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="setTopicConfigurations"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
-        <Method name="setTopicNames"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="getPrivateKeys"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="getPublicKeys"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="setPrivateKeys"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
-        <Method name="setPublicKeys"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="getEncryptionKeys"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="getMessageCrypto"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="setEncryptionKeys"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
-        <Method name="setMessageCrypto"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="getKeyHashRanges"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="getReaderInterceptorList"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="getTopicNames"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="setKeyHashRanges"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="setReaderInterceptorList"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="setTopicNames"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
-        <Method name="clone"/>
-        <Bug pattern="MC_OVERRIDABLE_METHOD_CALL_IN_CLONE"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConnectionPool"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerBase"/>
-        <Method name="subscribeFuture"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
-        <Method name="getClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
-        <Method name="getConf"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
-        <Method name="getInterceptorList"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
-        <Method name="getSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
-        <Method name="getConnectionHandler"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
-        <Method name="getPossibleSendToDeadLetterTopicMessages"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
-        <Method name="getUnAckedMessageTracker"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerInterceptors"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ConsumerStatsRecorderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ControlledClusterFailover"/>
-        <Method name="initialize"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ControlledClusterFailover$ControlledClusterFailoverBuilderImpl"/>
-        <Method name="urlProviderHeader"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getBrokerEntryMetadata"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getCnx"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getDataBuffer"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getMessageBuilder"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getProperties"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="getSchemaInternal"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
-        <Method name="setBrokerEntryMetadata"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MessagePayloadImpl"/>
-        <Method name="getByteBuf"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MultiMessageIdImpl"/>
-        <Method name="getMap"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MultiTopicConsumerStatsRecorderImpl"/>
-        <Method name="getPartitionStats"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MultiTopicsConsumerImpl"/>
-        <Method name="getUnAckedMessageTracker"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.MultiTopicsReaderImpl"/>
-        <Method name="getMultiTopicsConsumer"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.NonPersistentAcknowledgmentGroupingTracker"/>
-        <Method name="of"/>
-        <Bug pattern="MS_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PartitionedProducerImpl"/>
-        <Method name="getPartitionsAutoUpdateFuture"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PartitionedTopicProducerStatsRecorderImpl"/>
-        <Method name="getPartitionStats"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PersistentAcknowledgmentsGroupingTracker"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBase"/>
-        <Method name="getConfiguration"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBase"/>
-        <Method name="producerCreatedFuture"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
-        <Method name="getClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
-        <Method name="getConf"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
-        <Method name="getInterceptorList"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
-        <Method name="getSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
-        <Method name="schema"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerImpl"/>
-        <Method name="getConnectionHandler"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerInterceptors"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerStatsRecorderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ProducerStatsRecorderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
-        <Method name="getConfiguration"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
-        <Method name="getState"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
-        <Method name="getTcClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.PulsarClientImpl$PulsarClientImplBuilder"/>
-        <Method name="conf"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
-        <Method name="getClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
-        <Method name="getConf"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
-        <Method name="getSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ReaderImpl"/>
-        <Method name="getConsumer"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
-        <Method name="getProperties"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
-        <Method name="setProperties"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.AutoProduceBytesSchema"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.AutoProduceBytesSchema"/>
-        <Method name="setSchema"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.AvroBaseStructSchema"/>
-        <Method name="getAvroSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericAvroRecord"/>
-        <Method name="getAvroRecord"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericAvroRecord"/>
-        <Method name="getNativeObject"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeRecord"/>
-        <Method name="getNativeObject"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeRecord"/>
-        <Method name="getProtobufRecord"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeSchema"/>
-        <Method name="getProtobufNativeSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.GenericSchemaImpl"/>
-        <Method name="getFields"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.generic.MultiVersionSchemaInfoProvider"/>
-        <Method name="getPulsarClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
-        <Method name="getKeySchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
-        <Method name="getValueSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
-        <Method name="kvBytes"/>
-        <Bug pattern="MS_EXPOSE_REP"/>
-    </Match>
-    <!--  org.apache.avro.Schema is logically immutable  -->
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.NativeAvroBytesSchema"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.ProtobufNativeSchema$ProtoBufParsingInfo"/>
-        <Method name="getDefinition"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.ProtobufNativeSchema$ProtoBufParsingInfo"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.ProtobufSchema$ProtoBufParsingInfo"/>
-        <Method name="getDefinition"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.ProtobufSchema$ProtoBufParsingInfo"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.AbstractMultiVersionAvroBaseReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.AbstractMultiVersionReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.reader.MultiVersionAvroReader"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
-        <Method name="withClassLoader"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
-        <Method name="withProperties"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
-        <Method name="withSchemaReader"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
-        <Method name="withSchemaWriter"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
-        <Method name="getClassLoader"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.StructSchema"/>
-        <Method name="getAvroSchema"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.writer.AvroWriter"/>
-        <Method name="getEncoder"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.writer.JacksonJsonWriter"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.schema.writer.JsonWriter"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TopicListWatcher"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionBuilderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionBuilderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionCoordinatorClientImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
-        <Method name="getClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
-        <Method name="getOpFuture"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
-        <Method name="getRegisterPartitionMap"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
-        <Method name="getRegisterSubscriptionMap"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
-        <Method name="getTcClient"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TransactionMetaStoreHandler"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
-        <Method name="getContent"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
-        <Method name="getMetadataBuilder"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
-        <Method name="&lt;init&gt;"/>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.util.ExecutorProvider$ExtendedThreadFactory"/>
-        <Method name="getThread"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
-        <Method name="getAckSet"/>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
+  <Match>
+    <Class name="~org.apache.pulsar.client.impl.*"/>
+    <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
+  </Match>
+  <Match>
+    <Class name="~org.apache.pulsar.client.impl.schema.generic.*"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerResponse"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataBasic"/>
+    <Bug pattern="DM_DEFAULT_ENCODING"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerResponse"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerImpl"/>
+    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataTls"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ZeroQueueConsumerImpl"/>
+    <Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.BooleanSchema"/>
+    <Bug pattern="NP_BOOLEAN_RETURN_NULL"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaInfoImpl$SchemaInfoImplBuilder"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="~org.apache.pulsar.client.impl.ConsumerImpl.*"/>
+    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
+  </Match>
+  <Match>
+    <Class name="~org.apache.pulsar.client.impl.ConsumerImpl.*"/>
+    <Bug pattern="REC_CATCH_EXCEPTION"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerStatsRecorderImpl"/>
+    <Bug pattern="SE_BAD_FIELD"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerImpl."/>
+    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
+  </Match>
+  <!-- Needed for compatibility with TopicMessageIdImpl -->
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageIdImpl"/>
+    <Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
+    <Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.Hash"/>
+    <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/>
+  </Match>
+  <!-- Allow existing EI_EXPOSE_REP and EI_EXPOSE_REP2 warnings -->
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AbstractBatchMessageContainer"/>
+    <Method name="setProducer"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataKeyStoreTls"/>
+    <Method name="getTlsKeyStoreParams"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.AuthenticationDataKeyStoreTls"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.oauth2.protocol.TokenExchangeException"/>
+    <Method name="getError"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.auth.oauth2.protocol.TokenExchangeException"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getPulsarClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getSecondary"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getSecondaryAuthentications"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getSecondaryTlsTrustCertsFilePaths"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getSecondaryTlsTrustStorePasswords"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="getSecondaryTlsTrustStorePaths"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="initialize"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="setPulsarClient"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="setSecondaryTlsTrustStorePasswords"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover"/>
+    <Method name="setSecondaryTlsTrustStorePaths"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
+    <Method name="secondary"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
+    <Method name="secondaryAuthentication"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
+    <Method name="secondaryTlsTrustCertsFilePath"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
+    <Method name="secondaryTlsTrustStorePassword"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.AutoClusterFailover$AutoClusterFailoverBuilderImpl"/>
+    <Method name="secondaryTlsTrustStorePath"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
+    <Method name="getAcker"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.BinaryProtoLookupService"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ChunkMessageIdImpl"/>
+    <Method name="getFirstChunkMessageId"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ChunkMessageIdImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ClientBuilderImpl"/>
+    <Method name="getClientConfigurationData"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ClientBuilderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ClientCnx"/>
+    <Method name="getPendingRequests"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ClientCnxIdleState"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="getAuthParamMap"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="getTlsCiphers"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="getTlsProtocols"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="setAuthParamMap"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="setTlsCiphers"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ClientConfigurationData"/>
+    <Method name="setTlsProtocols"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="getDeadLetterPolicy"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="getMessageCrypto"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="getSubscriptionProperties"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="getTopicConfigurations"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="getTopicNames"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="setDeadLetterPolicy"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="setMessageCrypto"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="setSubscriptionProperties"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="setTopicConfigurations"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ConsumerConfigurationData"/>
+    <Method name="setTopicNames"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="getPrivateKeys"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="getPublicKeys"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="setPrivateKeys"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.DefaultCryptoKeyReaderConfigurationData"/>
+    <Method name="setPublicKeys"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="getEncryptionKeys"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="getMessageCrypto"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="setEncryptionKeys"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ProducerConfigurationData"/>
+    <Method name="setMessageCrypto"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="getKeyHashRanges"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="getReaderInterceptorList"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="getTopicNames"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="setKeyHashRanges"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="setReaderInterceptorList"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="setTopicNames"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.conf.ReaderConfigurationData"/>
+    <Method name="clone"/>
+    <Bug pattern="MC_OVERRIDABLE_METHOD_CALL_IN_CLONE"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConnectionPool"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerBase"/>
+    <Method name="subscribeFuture"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
+    <Method name="getClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
+    <Method name="getConf"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
+    <Method name="getInterceptorList"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerBuilderImpl"/>
+    <Method name="getSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
+    <Method name="getConnectionHandler"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
+    <Method name="getPossibleSendToDeadLetterTopicMessages"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerImpl"/>
+    <Method name="getUnAckedMessageTracker"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerInterceptors"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ConsumerStatsRecorderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ControlledClusterFailover"/>
+    <Method name="initialize"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ControlledClusterFailover$ControlledClusterFailoverBuilderImpl"/>
+    <Method name="urlProviderHeader"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getBrokerEntryMetadata"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getCnx"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getDataBuffer"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getMessageBuilder"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getProperties"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="getSchemaInternal"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessageImpl"/>
+    <Method name="setBrokerEntryMetadata"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MessagePayloadImpl"/>
+    <Method name="getByteBuf"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MultiMessageIdImpl"/>
+    <Method name="getMap"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MultiTopicConsumerStatsRecorderImpl"/>
+    <Method name="getPartitionStats"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MultiTopicsConsumerImpl"/>
+    <Method name="getUnAckedMessageTracker"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.MultiTopicsReaderImpl"/>
+    <Method name="getMultiTopicsConsumer"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.NonPersistentAcknowledgmentGroupingTracker"/>
+    <Method name="of"/>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PartitionedProducerImpl"/>
+    <Method name="getPartitionsAutoUpdateFuture"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PartitionedTopicProducerStatsRecorderImpl"/>
+    <Method name="getPartitionStats"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PersistentAcknowledgmentsGroupingTracker"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBase"/>
+    <Method name="getConfiguration"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBase"/>
+    <Method name="producerCreatedFuture"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
+    <Method name="getClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
+    <Method name="getConf"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
+    <Method name="getInterceptorList"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
+    <Method name="getSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerBuilderImpl"/>
+    <Method name="schema"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerImpl"/>
+    <Method name="getConnectionHandler"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerInterceptors"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerStatsRecorderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ProducerStatsRecorderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
+    <Method name="getConfiguration"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
+    <Method name="getState"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PulsarClientImpl"/>
+    <Method name="getTcClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.PulsarClientImpl$PulsarClientImplBuilder"/>
+    <Method name="conf"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
+    <Method name="getClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
+    <Method name="getConf"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ReaderBuilderImpl"/>
+    <Method name="getSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ReaderImpl"/>
+    <Method name="getConsumer"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
+    <Method name="getProperties"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.ResetCursorData"/>
+    <Method name="setProperties"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.AutoProduceBytesSchema"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.AutoProduceBytesSchema"/>
+    <Method name="setSchema"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.AvroBaseStructSchema"/>
+    <Method name="getAvroSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericAvroRecord"/>
+    <Method name="getAvroRecord"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericAvroRecord"/>
+    <Method name="getNativeObject"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeRecord"/>
+    <Method name="getNativeObject"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeRecord"/>
+    <Method name="getProtobufRecord"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericProtobufNativeSchema"/>
+    <Method name="getProtobufNativeSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.GenericSchemaImpl"/>
+    <Method name="getFields"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.generic.MultiVersionSchemaInfoProvider"/>
+    <Method name="getPulsarClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
+    <Method name="getKeySchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
+    <Method name="getValueSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.KeyValueSchemaImpl"/>
+    <Method name="kvBytes"/>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
+  <!--  org.apache.avro.Schema is logically immutable  -->
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.NativeAvroBytesSchema"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.ProtobufNativeSchema$ProtoBufParsingInfo"/>
+    <Method name="getDefinition"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.ProtobufNativeSchema$ProtoBufParsingInfo"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.ProtobufSchema$ProtoBufParsingInfo"/>
+    <Method name="getDefinition"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.ProtobufSchema$ProtoBufParsingInfo"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.AbstractMultiVersionAvroBaseReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.AbstractMultiVersionReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.AvroReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.reader.MultiVersionAvroReader"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
+    <Method name="withClassLoader"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
+    <Method name="withProperties"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
+    <Method name="withSchemaReader"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionBuilderImpl"/>
+    <Method name="withSchemaWriter"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
+    <Method name="getClassLoader"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.SchemaDefinitionImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.StructSchema"/>
+    <Method name="getAvroSchema"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.writer.AvroWriter"/>
+    <Method name="getEncoder"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.writer.JacksonJsonWriter"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.schema.writer.JsonWriter"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TopicListWatcher"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionBuilderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionBuilderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionCoordinatorClientImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
+    <Method name="getClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
+    <Method name="getOpFuture"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
+    <Method name="getRegisterPartitionMap"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
+    <Method name="getRegisterSubscriptionMap"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.transaction.TransactionImpl"/>
+    <Method name="getTcClient"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TransactionMetaStoreHandler"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
+    <Method name="getContent"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
+    <Method name="getMetadataBuilder"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.TypedMessageBuilderImpl"/>
+    <Method name="&lt;init&gt;"/>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.util.ExecutorProvider$ExtendedThreadFactory"/>
+    <Method name="getThread"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.client.impl.BatchMessageIdImpl"/>
+    <Method name="getAckSet"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
 </FindBugsFilter>
diff --git a/pulsar-common/pom.xml b/pulsar-common/pom.xml
index ef21f97302de5..08c0fec72ed47 100644
--- a/pulsar-common/pom.xml
+++ b/pulsar-common/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,92 +19,75 @@
     under the License.
 
 -->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-common</artifactId>
   <name>Pulsar Common</name>
   <description>Common libraries needed by client/broker/tools</description>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.module</groupId>
       <artifactId>jackson-module-parameter-names</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-jsr310</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-jdk8</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-handler</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-resolver-dns</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-transport-native-epoll</artifactId>
       <classifier>linux-x86_64</classifier>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-transport-native-unix-common</artifactId>
       <classifier>linux-x86_64</classifier>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-common-allocator</artifactId>
@@ -115,17 +98,14 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>cpu-affinity</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.airlift</groupId>
       <artifactId>aircompressor</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>circe-checksum</artifactId>
@@ -141,66 +121,54 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-tcnative-boringssl-static</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty.incubator</groupId>
       <artifactId>netty-incubator-transport-classes-io_uring</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.netty.incubator</groupId>
       <artifactId>netty-incubator-transport-native-io_uring</artifactId>
       <classifier>linux-x86_64</classifier>
     </dependency>
-
     <dependency>
       <groupId>io.netty.incubator</groupId>
       <artifactId>netty-incubator-transport-native-io_uring</artifactId>
       <classifier>linux-aarch_64</classifier>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-codec-haproxy</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>javax.ws.rs-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
       <scope>provided</scope>
       <optional>true</optional>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
-	  <artifactId>protobuf-java</artifactId>
+      <artifactId>protobuf-java</artifactId>
     </dependency>
-
     <!-- test -->
     <dependency>
       <groupId>org.bouncycastle</groupId>
@@ -208,38 +176,32 @@
       <version>${bouncycastle.bc-fips.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.lz4</groupId>
       <artifactId>lz4-java</artifactId>
       <version>1.5.0</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.luben</groupId>
       <artifactId>zstd-jni</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.xerial.snappy</groupId>
       <artifactId>snappy-java</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -249,7 +211,6 @@
           <release>${pulsar.client.compiler.release}</release>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.gaul</groupId>
         <artifactId>modernizer-maven-plugin</artifactId>
@@ -267,7 +228,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.splunk.lightproto</groupId>
         <artifactId>lightproto-maven-plugin</artifactId>
@@ -280,7 +240,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>pl.project13.maven</groupId>
         <artifactId>git-commit-id-plugin</artifactId>
@@ -305,7 +264,6 @@
           </gitDescribe>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>templating-maven-plugin</artifactId>
diff --git a/pulsar-common/src/main/resources/findbugsExclude.xml b/pulsar-common/src/main/resources/findbugsExclude.xml
index df161c4b621a7..8216948c12408 100644
--- a/pulsar-common/src/main/resources/findbugsExclude.xml
+++ b/pulsar-common/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,38 +20,35 @@
 
 -->
 <FindBugsFilter>
-    <Match>
-        <Class name="org.apache.pulsar.PulsarVersion"/>
-    </Match>
-
-    <Match>
-        <Class name="~org\.apache\.pulsar\.shaded\.com\.google\.protobuf.*"/>
-    </Match>
-
-    <Match>
-        <Class name="~org\.apache\.pulsar\.common\.api\.proto.*"/>
-    </Match>
-
-    <Match>
-        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
-    </Match>
-    <Match>
-        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
-    </Match>
-    <Match>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Bug pattern="MS_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.common.policies.data.NonPersistentTopicStats"/>
-        <Bug pattern="MF_CLASS_MASKS_FIELD"/>
-    </Match>
+  <Match>
+    <Class name="org.apache.pulsar.PulsarVersion"/>
+  </Match>
+  <Match>
+    <Class name="~org\.apache\.pulsar\.shaded\.com\.google\.protobuf.*"/>
+  </Match>
+  <Match>
+    <Class name="~org\.apache\.pulsar\.common\.api\.proto.*"/>
+  </Match>
+  <Match>
+    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
+  </Match>
+  <Match>
+    <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
+  </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.common.policies.data.NonPersistentTopicStats"/>
+    <Bug pattern="MF_CLASS_MASKS_FIELD"/>
+  </Match>
 </FindBugsFilter>
diff --git a/pulsar-config-validation/pom.xml b/pulsar-config-validation/pom.xml
index 4556aa295f1fe..1d597b79957b6 100644
--- a/pulsar-config-validation/pom.xml
+++ b/pulsar-config-validation/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,65 +19,59 @@
     under the License.
 
 -->
-<project
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>pulsar-config-validation</artifactId>
-    <description>Annotation based config validation for Pulsar</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>17</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-config-validation</artifactId>
+  <description>Annotation based config validation for Pulsar</description>
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>17</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pulsar-docs-tools/pom.xml b/pulsar-docs-tools/pom.xml
index 1a11829cf9671..dca77e09c2802 100644
--- a/pulsar-docs-tools/pom.xml
+++ b/pulsar-docs-tools/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,33 +19,27 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-docs-tools</artifactId>
-    <name>Pulsar Documentation Generators</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.beust</groupId>
-            <artifactId>jcommander</artifactId>
-        </dependency>
-    </dependencies>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-docs-tools</artifactId>
+  <name>Pulsar Documentation Generators</name>
+  <dependencies>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.beust</groupId>
+      <artifactId>jcommander</artifactId>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/pulsar-functions/api-java/pom.xml b/pulsar-functions/api-java/pom.xml
index e9af235c541c4..a35c407b08426 100644
--- a/pulsar-functions/api-java/pom.xml
+++ b/pulsar-functions/api-java/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,25 +19,20 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-api</artifactId>
   <name>Pulsar Functions :: API</name>
-
   <dependencies>
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>net.jodah</groupId>
       <artifactId>typetools</artifactId>
@@ -48,16 +44,13 @@
       <version>${project.version}</version>
       <scope>compile</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-api</artifactId>
       <version>${project.version}</version>
       <scope>compile</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -81,16 +74,15 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
         <executions>
-            <execution>
-                <id>checkstyle</id>
-                <phase>verify</phase>
-                <goals>
-                    <goal>check</goal>
-                </goals>
-            </execution>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/api-java/src/main/resources/findbugsExclude.xml b/pulsar-functions/api-java/src/main/resources/findbugsExclude.xml
index 9638cfcca8da9..b74af4c8ceb2a 100644
--- a/pulsar-functions/api-java/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/api-java/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -39,4 +40,4 @@
     <Method name="schema"/>
     <Bug pattern="EI_EXPOSE_REP2"/>
   </Match>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-functions/instance/pom.xml b/pulsar-functions/instance/pom.xml
index e83bcde5e7da5..b87776eac0786 100644
--- a/pulsar-functions/instance/pom.xml
+++ b/pulsar-functions/instance/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,21 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-instance</artifactId>
   <name>Pulsar Functions :: Instance</name>
-
   <dependencies>
-
     <!-- logging -->
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
@@ -46,55 +42,46 @@
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-utils</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-metadata</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-secrets</artifactId>
       <version>${project.version}</version>
     </dependency>
-
-     <dependency>
+    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
-     <dependency>
+    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-messagecrypto-bc</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>stream-storage-java-client</artifactId>
@@ -109,24 +96,20 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-stub</artifactId>
     </dependency>
-
     <!-- `grpc-all` is excluded from `stream-storage-server` at root pom file -->
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-all</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.perfmark</groupId>
       <artifactId>perfmark-api</artifactId>
       <scope>runtime</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-common</artifactId>
@@ -141,61 +124,50 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>com.yahoo.datasketches</groupId>
       <artifactId>sketches-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
-
     <dependency>
       <groupId>net.jodah</groupId>
       <artifactId>typetools</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient</artifactId>
       <version>${prometheus.version}</version>
     </dependency>
-
     <!-- Hotspot JVM metrics-->
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_hotspot</artifactId>
       <version>${prometheus.version}</version>
     </dependency>
-
     <!-- Exposition HTTPServer-->
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_httpserver</artifactId>
       <version>${prometheus.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus.jmx</groupId>
       <artifactId>collector</artifactId>
       <version>${prometheus-jmx.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -215,7 +187,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <!-- this task is used for copy all python files together to provide a instance directory
            for running python instance -->
       <plugin>
@@ -271,5 +242,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/instance/src/main/resources/findbugsExclude.xml b/pulsar-functions/instance/src/main/resources/findbugsExclude.xml
index 7fe247d2ab20a..4c04f27f66fbe 100644
--- a/pulsar-functions/instance/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/instance/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-functions/java-examples-builtin/pom.xml b/pulsar-functions/java-examples-builtin/pom.xml
index 23e6a54b2feb9..f754221fe354a 100644
--- a/pulsar-functions/java-examples-builtin/pom.xml
+++ b/pulsar-functions/java-examples-builtin/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-api-examples-builtin</artifactId>
   <name>Pulsar Functions :: API Examples (NAR)</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -37,14 +35,36 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
         <groupId>org.apache.nifi</groupId>
         <artifactId>nifi-nar-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/java-examples/pom.xml b/pulsar-functions/java-examples/pom.xml
index bb348ea5dfb96..f9bbbc64a1498 100644
--- a/pulsar-functions/java-examples/pom.xml
+++ b/pulsar-functions/java-examples/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,24 +19,20 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-api-examples</artifactId>
   <name>Pulsar Functions :: API Examples</name>
-
   <dependencies>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api</artifactId>
@@ -52,7 +49,6 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -87,5 +83,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/java-examples/src/main/resources/findbugsExclude.xml b/pulsar-functions/java-examples/src/main/resources/findbugsExclude.xml
index ddde8120ba518..47c3d73af5f06 100644
--- a/pulsar-functions/java-examples/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/java-examples/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,4 +20,4 @@
 
 -->
 <FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-functions/localrun-shaded/pom.xml b/pulsar-functions/localrun-shaded/pom.xml
index 6cdb81a60731c..31f6784d8220e 100644
--- a/pulsar-functions/localrun-shaded/pom.xml
+++ b/pulsar-functions/localrun-shaded/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,420 +19,435 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-functions</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>pulsar-functions-local-runner</artifactId>
-    <name>Pulsar Functions :: Local Runner Shaded</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-local-runner-original</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>unpack</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.asynchttpclient</groupId>
-                                    <artifactId>async-http-client</artifactId>
-                                    <version>${asynchttpclient.version}</version>
-                                    <type>jar</type>
-                                    <overWrite>true</overWrite>
-                                    <includes>org/asynchttpclient/config/ahc-default.properties</includes>
-                                    <outputDirectory>${project.build.directory}/classes</outputDirectory>
-                                </artifactItem>
-                            </artifactItems>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>shade-ahc-properties</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                        <configuration>
-                            <target>
-                                <!-- shade the AsyncHttpClient ahc-default.properties files -->
-                                <replace token= "org.asynchttpclient."
-                                         value="org.apache.pulsar.functions.runtime.shaded.org.asynchttpclient."
-                                         file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
-                            </target>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>${shadePluginPhase}</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <minimizeJar>false</minimizeJar>
-                            <transformers>
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
-                            </transformers>
-                            <artifactSet>
-                                <includes>
-                                    <include>org.apache.pulsar:*</include>
-                                    <include>org.apache.bookkeeper:*</include>
-                                    <include>commons-*:*</include>
-                                    <include>org.apache.commons:*</include>
-                                    <include>com.fasterxml.jackson.*:*</include>
-                                    <include>io.netty:*</include>
-                                    <include>com.google.*:*</include>
-                                    <include>javax.servlet:*</include>
-                                    <include>org.reactivestreams:reactive-streams</include>
-                                    <include>org.apache.commons:*</include>
-                                    <include>io.swagger:*</include>
-                                    <include>org.yaml:snakeyaml</include>
-                                    <include>io.perfmark:*</include>
-                                    <include>io.prometheus:*</include>
-                                    <include>io.prometheus.jmx:*</include>
-                                    <include>javax.ws.rs:*</include>
-                                    <include>org.tukaani:xz</include>
-                                    <include>com.github.zafarkhaja:java-semver</include>
-                                    <include>net.java.dev.jna:*</include>
-                                    <include>org.apache.zookeeper:*</include>
-                                    <include>com.thoughtworks.paranamer:paranamer</include>
-                                    <include>jline:*</include>
-                                    <include>org.rocksdb:*</include>
-                                    <include>org.eclipse.jetty*:*</include>
-                                    <include>org.apache.avro:avro</include>
-                                    <include>com.beust:*</include>
-                                    <include>net.jodah:*</include>
-                                    <include>io.airlift:*</include>
-                                    <include>com.yahoo.datasketches:*</include>
-                                    <include>io.netty.resolver:*</include>
-                                </includes>
-                            </artifactSet>
-                            <filters>
-                                <filter>
-                                    <artifact>org.apache.pulsar:pulsar-client-original</artifact>
-                                    <includes>
-                                        <include>**</include>
-                                    </includes>
-                                    <excludes>
-                                        <!-- bouncycastle jars could not be shaded, or the signatures will be wrong-->
-                                        <exclude>org/bouncycastle/**</exclude>
-                                    </excludes>
-                                </filter>
-                            </filters>
-                            <relocations>
-                                <!-- Netty cannot be shaded, this is causing java.lang.NoSuchMethodError -->
-                                <!-- <relocation>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-functions</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-functions-local-runner</artifactId>
+  <name>Pulsar Functions :: Local Runner Shaded</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-local-runner-original</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>unpack</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>unpack</goal>
+            </goals>
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.asynchttpclient</groupId>
+                  <artifactId>async-http-client</artifactId>
+                  <version>${asynchttpclient.version}</version>
+                  <type>jar</type>
+                  <overWrite>true</overWrite>
+                  <includes>org/asynchttpclient/config/ahc-default.properties</includes>
+                  <outputDirectory>${project.build.directory}/classes</outputDirectory>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>shade-ahc-properties</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <!-- shade the AsyncHttpClient ahc-default.properties files -->
+                <replace token="org.asynchttpclient." value="org.apache.pulsar.functions.runtime.shaded.org.asynchttpclient." file="${project.build.directory}/classes/org/asynchttpclient/config/ahc-default.properties"/>
+              </target>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>${shadePluginPhase}</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <minimizeJar>false</minimizeJar>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
+              </transformers>
+              <artifactSet>
+                <includes>
+                  <include>io.streamnative:*</include>
+                  <include>org.apache.bookkeeper:*</include>
+                  <include>commons-*:*</include>
+                  <include>org.apache.commons:*</include>
+                  <include>com.fasterxml.jackson.*:*</include>
+                  <include>io.netty:*</include>
+                  <include>com.google.*:*</include>
+                  <include>javax.servlet:*</include>
+                  <include>org.reactivestreams:reactive-streams</include>
+                  <include>org.apache.commons:*</include>
+                  <include>io.swagger:*</include>
+                  <include>org.yaml:snakeyaml</include>
+                  <include>io.perfmark:*</include>
+                  <include>io.prometheus:*</include>
+                  <include>io.prometheus.jmx:*</include>
+                  <include>javax.ws.rs:*</include>
+                  <include>org.tukaani:xz</include>
+                  <include>com.github.zafarkhaja:java-semver</include>
+                  <include>net.java.dev.jna:*</include>
+                  <include>org.apache.zookeeper:*</include>
+                  <include>com.thoughtworks.paranamer:paranamer</include>
+                  <include>jline:*</include>
+                  <include>org.rocksdb:*</include>
+                  <include>org.eclipse.jetty*:*</include>
+                  <include>org.apache.avro:avro</include>
+                  <include>com.beust:*</include>
+                  <include>net.jodah:*</include>
+                  <include>io.airlift:*</include>
+                  <include>com.yahoo.datasketches:*</include>
+                  <include>io.netty.resolver:*</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>io.streamnative:pulsar-client-original</artifact>
+                  <includes>
+                    <include>**</include>
+                  </includes>
+                  <excludes>
+                    <!-- bouncycastle jars could not be shaded, or the signatures will be wrong-->
+                    <exclude>org/bouncycastle/**</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+              <relocations>
+                <!-- Netty cannot be shaded, this is causing java.lang.NoSuchMethodError -->
+                <!-- <relocation>
                                     <pattern>com.typesafe.netty</pattern>
                                     <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.typesafe.netty</shadedPattern>
                                 </relocation> -->
-                                <relocation>
-                                    <pattern>com.google</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.google</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.jute</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.jute</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.servlet</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.servlet</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>net.jodah</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.jodah</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.lz4</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.lz4</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.reactivestreams</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.reactivestreams</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.commons</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.commons</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.swagger</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.swagger</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.yaml</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.yaml</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.jctools</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.jctools</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.squareup.okhttp</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.squareup.okhttp</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.grpc</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.grpc</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.perfmark</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.perfmark</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.joda</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.joda</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.ws.rs</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.ws.rs</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.kubernetes</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.kubernetes</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.opencensus</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.opencensus</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>net.jpountz</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.jpountz</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>commons-configuration</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-configuration</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.tukaani</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.tukaani</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.github</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.github</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>commons-io</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-io</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.distributedlog</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.distributedlog</shadedPattern>
-                                </relocation>
-                                <!-- Jackson cannot be shaded, this is causing java.lang.NoSuchMethodError when calling getThreadLocalYaml-->
-                                <relocation>
-                                    <pattern>com.fasterxml</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.fasterxml</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.inferred</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.inferred</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.bookkeeper</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.bookkeeper</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.bookkeeper</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>dlshade</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.dlshade</shadedPattern>
-                                </relocation>
-                                <!-- This refers to an older version of Jackson -->
-                                <relocation>
-                                    <pattern>org.codehaus.jackson</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.codehaus.jackson</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>net.java.dev.jna</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.java.dev.jna</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.curator</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.curator</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.validation</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.validation</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.activation</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.activation</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.prometheus</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.prometheus</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.prometheus.jmx</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.prometheus.jmx</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.zookeeper</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.zookeeper</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.jsonwebtoken</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.jsonwebtoken</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>commons-codec</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-codec</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.thoughtworks.paranamer</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.thoughtworks.paranamer</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.codehaus.mojo</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.codehaus.mojo</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.github.luben</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.github.luben</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>jline</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.jline</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.xerial.snappy</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.xerial.snappy</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.annotation</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.annotation</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.checkerframework</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.checkerframework</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.yetus</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.yetus</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>commons-cli</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-cli</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>commons-lang</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-lang</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.squareup.okio</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.squareup.okio</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.rocksdb</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.rocksdb</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.objenesis</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.objenesis</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.eclipse.jetty</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.eclipse.jetty</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.apache.avro</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.avro</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>avro.shaded</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.avo.shaded</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.yahoo.datasketches</pattern>
-                                    <shadedPattern>org.apache.pulsar.shaded.com.yahoo.datasketches</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.yahoo.sketches</pattern>
-                                    <shadedPattern>org.apache.pulsar.shaded.com.yahoo.sketches</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.beust</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.beust</shadedPattern>
-                                </relocation>
-                                <!-- Netty cannot be shaded, this is causing java.lang.NoSuchMethodError -->
-                                <relocation>
-                                    <pattern>io.netty</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.netty</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.hamcrest</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.hamcrest</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>aj.org</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.aj.org</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>com.scurrilous</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.scurrilous</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>okio</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.okio</shadedPattern>
-                                </relocation>
-                                <!--
+                <relocation>
+                  <pattern>com.google</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.google</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.jute</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.jute</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.servlet</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.servlet</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>net.jodah</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.jodah</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.lz4</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.lz4</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.reactivestreams</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.reactivestreams</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.commons</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.commons</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.swagger</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.swagger</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.yaml</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.yaml</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.jctools</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.jctools</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.squareup.okhttp</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.squareup.okhttp</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.grpc</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.grpc</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.perfmark</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.perfmark</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.joda</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.joda</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.ws.rs</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.ws.rs</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.kubernetes</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.kubernetes</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.opencensus</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.opencensus</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>net.jpountz</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.jpountz</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>commons-configuration</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-configuration</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.tukaani</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.tukaani</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.github</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.github</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>commons-io</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-io</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.distributedlog</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.distributedlog</shadedPattern>
+                </relocation>
+                <!-- Jackson cannot be shaded, this is causing java.lang.NoSuchMethodError when calling getThreadLocalYaml-->
+                <relocation>
+                  <pattern>com.fasterxml</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.fasterxml</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.inferred</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.inferred</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.bookkeeper</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.bookkeeper</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.bookkeeper</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>dlshade</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.dlshade</shadedPattern>
+                </relocation>
+                <!-- This refers to an older version of Jackson -->
+                <relocation>
+                  <pattern>org.codehaus.jackson</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.codehaus.jackson</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>net.java.dev.jna</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.net.java.dev.jna</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.curator</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.curator</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.validation</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.validation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.activation</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.activation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.prometheus</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.prometheus</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.prometheus.jmx</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.prometheus.jmx</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.zookeeper</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.zookeeper</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.jsonwebtoken</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.jsonwebtoken</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>commons-codec</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-codec</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.thoughtworks.paranamer</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.thoughtworks.paranamer</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.codehaus.mojo</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.codehaus.mojo</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.github.luben</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.github.luben</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>jline</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.jline</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.xerial.snappy</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.xerial.snappy</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.annotation</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.javax.annotation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.checkerframework</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.checkerframework</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.yetus</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.yetus</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>commons-cli</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-cli</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>commons-lang</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.commons-lang</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.squareup.okio</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.squareup.okio</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.rocksdb</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.rocksdb</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.objenesis</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.objenesis</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.eclipse.jetty</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.eclipse.jetty</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.avro</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.avro</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>avro.shaded</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.avo.shaded</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.yahoo.datasketches</pattern>
+                  <shadedPattern>org.apache.pulsar.shaded.com.yahoo.datasketches</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.yahoo.sketches</pattern>
+                  <shadedPattern>org.apache.pulsar.shaded.com.yahoo.sketches</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.beust</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.beust</shadedPattern>
+                </relocation>
+                <!-- Netty cannot be shaded, this is causing java.lang.NoSuchMethodError -->
+                <relocation>
+                  <pattern>io.netty</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.netty</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.hamcrest</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.hamcrest</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>aj.org</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.aj.org</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>com.scurrilous</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.com.scurrilous</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>okio</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.okio</shadedPattern>
+                </relocation>
+                <!--
                                     asynchttpclient can only be shaded to be under `org.apache.pulsar.shade`
                                     see {@link https://github.com/apache/incubator-pulsar/pull/390}
                                     and {@link https://github.com/apache/incubator-pulsar/blob/master/pulsar-client/src/main/resources/ahc.properties}
                                 -->
-                                <relocation>
-                                    <pattern>org.asynchttpclient</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.asynchttpclient</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>io.airlift</pattern>
-                                    <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.airlift</shadedPattern>
-                                </relocation>
-                                <!-- DONT ever shade log4j, otherwise logging won't work anymore in running functions in process mode
+                <relocation>
+                  <pattern>org.asynchttpclient</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.asynchttpclient</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>io.airlift</pattern>
+                  <shadedPattern>org.apache.pulsar.functions.runtime.shaded.io.airlift</shadedPattern>
+                </relocation>
+                <!-- DONT ever shade log4j, otherwise logging won't work anymore in running functions in process mode
                                 <relocation>
                                   <pattern>org.apache.logging</pattern>
                                   <shadedPattern>org.apache.pulsar.functions.runtime.shaded.org.apache.logging</shadedPattern>
                                 </relocation>
                                 -->
-                            </relocations>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+              </relocations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-functions/localrun/pom.xml b/pulsar-functions/localrun/pom.xml
index 4e75a6d8907be..47e6bca447c28 100644
--- a/pulsar-functions/localrun/pom.xml
+++ b/pulsar-functions/localrun/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,86 +19,77 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-functions</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>pulsar-functions-local-runner-original</artifactId>
-    <name>Pulsar Functions :: Local Runner original</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-runtime</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-
-        <!-- logging -->
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-all</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.perfmark</groupId>
-            <artifactId>perfmark-api</artifactId>
-            <scope>runtime</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>check</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-functions</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-functions-local-runner-original</artifactId>
+  <name>Pulsar Functions :: Local Runner original</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-runtime</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <!-- logging -->
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-all</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.perfmark</groupId>
+      <artifactId>perfmark-api</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>check</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-functions/localrun/src/main/resources/findbugsExclude.xml b/pulsar-functions/localrun/src/main/resources/findbugsExclude.xml
index ad183eb5d9427..c7c41fe9ea252 100644
--- a/pulsar-functions/localrun/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/localrun/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-functions/localrun/src/main/resources/log4j2.xml b/pulsar-functions/localrun/src/main/resources/log4j2.xml
index a7714c3f48835..aa28dda160b02 100644
--- a/pulsar-functions/localrun/src/main/resources/log4j2.xml
+++ b/pulsar-functions/localrun/src/main/resources/log4j2.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,14 +20,14 @@
 
 -->
 <Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n"/>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Root level="info">
+      <AppenderRef ref="Console"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/pulsar-functions/pom.xml b/pulsar-functions/pom.xml
index d8559da3311cc..1cc9fb8f68a53 100644
--- a/pulsar-functions/pom.xml
+++ b/pulsar-functions/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions</artifactId>
   <name>Pulsar Functions :: Parent</name>
-
   <profiles>
     <profile>
       <id>main</id>
@@ -41,24 +39,23 @@
           <value>!true</value>
         </property>
       </activation>
-        <modules>
-          <module>proto</module>
-          <module>api-java</module>
-          <module>java-examples</module>
-          <module>java-examples-builtin</module>
-          <module>utils</module>
-          <module>instance</module>
-          <module>runtime</module>
-          <module>runtime-all</module>
-          <module>worker</module>
-          <module>secrets</module>
-          <module>localrun</module>
-          <module>localrun-shaded</module>
-        </modules>
+      <modules>
+        <module>proto</module>
+        <module>api-java</module>
+        <module>java-examples</module>
+        <module>java-examples-builtin</module>
+        <module>utils</module>
+        <module>instance</module>
+        <module>runtime</module>
+        <module>runtime-all</module>
+        <module>worker</module>
+        <module>secrets</module>
+        <module>localrun</module>
+        <module>localrun-shaded</module>
+      </modules>
     </profile>
-
-  <profile>
-    <id>core-modules</id>
+    <profile>
+      <id>core-modules</id>
       <modules>
         <module>proto</module>
         <module>api-java</module>
@@ -72,8 +69,6 @@
         <module>secrets</module>
         <module>localrun</module>
       </modules>
-  </profile>
-
+    </profile>
   </profiles>
-
 </project>
diff --git a/pulsar-functions/proto/pom.xml b/pulsar-functions/proto/pom.xml
index d1ae5c379223e..1e8f491ad11cf 100644
--- a/pulsar-functions/proto/pom.xml
+++ b/pulsar-functions/proto/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,78 +19,66 @@
     under the License.
 
 -->
-<project
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-functions</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-functions-proto</artifactId>
-    <name>Pulsar Functions :: Proto</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java-util</artifactId>
-        </dependency>
-        
-        <dependency>
-          <groupId>javax.annotation</groupId>
-          <artifactId>javax.annotation-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-all</artifactId>
-            <exclusions>
-              <exclusion>
-                <groupId>io.netty</groupId>
-                <artifactId>*</artifactId>
-              </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>io.perfmark</groupId>
-            <artifactId>perfmark-api</artifactId>
-            <scope>runtime</scope>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.xolstice.maven.plugins</groupId>
-                <artifactId>protobuf-maven-plugin</artifactId>
-                <version>${protobuf-maven-plugin.version}</version>
-                <configuration>
-                    <protocArtifact>com.google.protobuf:protoc:${protoc3.version}:exe:${os.detected.classifier}</protocArtifact>
-                    <checkStaleness>true</checkStaleness>
-                    <pluginId>grpc-java</pluginId>
-                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier}</pluginArtifact>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>compile</goal>
-                            <goal>compile-custom</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-functions</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-functions-proto</artifactId>
+  <name>Pulsar Functions :: Proto</name>
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java-util</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-all</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>io.netty</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>io.perfmark</groupId>
+      <artifactId>perfmark-api</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>${protobuf-maven-plugin.version}</version>
+        <configuration>
+          <protocArtifact>com.google.protobuf:protoc:${protoc3.version}:exe:${os.detected.classifier}</protocArtifact>
+          <checkStaleness>true</checkStaleness>
+          <pluginId>grpc-java</pluginId>
+          <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier}</pluginArtifact>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>compile</goal>
+              <goal>compile-custom</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-functions/runtime-all/pom.xml b/pulsar-functions/runtime-all/pom.xml
index ff5c60acce432..74fa12fb60cc4 100644
--- a/pulsar-functions/runtime-all/pom.xml
+++ b/pulsar-functions/runtime-all/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,17 +19,14 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <!--
 
     THIS MODULE SHOULD ONLY CONTAIN THE INTERFACES THAT PULSAR FUNCTION'S FRAMEWORK USES TO INTERACT WITH USER CODE.
@@ -44,41 +41,34 @@
     8. AVRO
     9. protobuf-java
   -->
-
   <artifactId>pulsar-functions-runtime-all</artifactId>
   <name>Pulsar Functions :: Runtime All</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <!-- avro and its dependencies, with pinned version -->
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <!--In order to support protobuf schema, this dependency needs to be added-->
     <dependency>
       <groupId>com.google.protobuf</groupId>
@@ -95,30 +85,24 @@
       <artifactId>gson</artifactId>
       <version>${gson.version}</version>
     </dependency>
-
     <!-- logging -->
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <!--
@@ -133,7 +117,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
diff --git a/pulsar-functions/runtime-all/src/main/resources/findbugsExclude.xml b/pulsar-functions/runtime-all/src/main/resources/findbugsExclude.xml
index b4a4e5926de3f..976abe7c54bb2 100644
--- a/pulsar-functions/runtime-all/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/runtime-all/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,13 +20,13 @@
 
 -->
 <FindBugsFilter>
-    <!-- these public fields may be used in other modules -->
-    <Match>
-        <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
-        <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
-        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
-    </Match>
-</FindBugsFilter>
\ No newline at end of file
+  <!-- these public fields may be used in other modules -->
+  <Match>
+    <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
+    <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
+    <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
+  </Match>
+</FindBugsFilter>
diff --git a/pulsar-functions/runtime-all/src/main/resources/java_instance_log4j2.xml b/pulsar-functions/runtime-all/src/main/resources/java_instance_log4j2.xml
index 190d9be92940b..84e6ce44f51e4 100644
--- a/pulsar-functions/runtime-all/src/main/resources/java_instance_log4j2.xml
+++ b/pulsar-functions/runtime-all/src/main/resources/java_instance_log4j2.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,112 +20,112 @@
 
 -->
 <Configuration>
-    <name>pulsar-functions-instance</name>
-    <monitorInterval>30</monitorInterval>
-    <Properties>
-        <Property>
-            <name>pulsar.log.appender</name>
-            <value>RollingFile</value>
-        </Property>
-        <Property>
-            <name>pulsar.log.level</name>
-            <value>info</value>
-        </Property>
-        <Property>
-            <name>bk.log.level</name>
-            <value>info</value>
-        </Property>
-    </Properties>
-    <Appenders>
-        <Console>
-            <name>Console</name>
-            <target>SYSTEM_OUT</target>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-        </Console>
-        <RollingFile>
-            <name>RollingFile</name>
-            <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.log</fileName>
-            <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
-            <immediateFlush>true</immediateFlush>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <TimeBasedTriggeringPolicy>
-                    <interval>1</interval>
-                    <modulate>true</modulate>
-                </TimeBasedTriggeringPolicy>
-                <SizeBasedTriggeringPolicy>
-                    <size>1 GB</size>
-                </SizeBasedTriggeringPolicy>
-                <CronTriggeringPolicy>
-                    <schedule>0 0 0 * * ?</schedule>
-                </CronTriggeringPolicy>
-            </Policies>
-            <DefaultRolloverStrategy>
-                <Delete>
-                    <basePath>${sys:pulsar.function.log.dir}</basePath>
-                    <maxDepth>2</maxDepth>
-                    <IfFileName>
-                        <glob>*/${sys:pulsar.function.log.file}*log.gz</glob>
-                    </IfFileName>
-                    <IfLastModified>
-                        <age>30d</age>
-                    </IfLastModified>
-                </Delete>
-            </DefaultRolloverStrategy>
-        </RollingFile>
-        <RollingRandomAccessFile>
-            <name>BkRollingFile</name>
-            <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk</fileName>
-            <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
-            <immediateFlush>true</immediateFlush>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <TimeBasedTriggeringPolicy>
-                    <interval>1</interval>
-                    <modulate>true</modulate>
-                </TimeBasedTriggeringPolicy>
-                <SizeBasedTriggeringPolicy>
-                    <size>1 GB</size>
-                </SizeBasedTriggeringPolicy>
-                <CronTriggeringPolicy>
-                    <schedule>0 0 0 * * ?</schedule>
-                </CronTriggeringPolicy>
-            </Policies>
-            <DefaultRolloverStrategy>
-                <Delete>
-                    <basePath>${sys:pulsar.function.log.dir}</basePath>
-                    <maxDepth>2</maxDepth>
-                    <IfFileName>
-                        <glob>*/${sys:pulsar.function.log.file}.bk*log.gz</glob>
-                    </IfFileName>
-                    <IfLastModified>
-                        <age>30d</age>
-                    </IfLastModified>
-                </Delete>
-            </DefaultRolloverStrategy>
-        </RollingRandomAccessFile>
-    </Appenders>
-    <Loggers>
-        <Logger>
-            <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
-            <level>${sys:bk.log.level}</level>
-            <additivity>false</additivity>
-            <AppenderRef>
-                <ref>BkRollingFile</ref>
-            </AppenderRef>
-        </Logger>
-        <Root>
-            <level>info</level>
-            <AppenderRef>
-                <ref>${sys:pulsar.log.appender}</ref>
-                <level>${sys:pulsar.log.level}</level>
-            </AppenderRef>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file
+  <name>pulsar-functions-instance</name>
+  <monitorInterval>30</monitorInterval>
+  <Properties>
+    <Property>
+      <name>pulsar.log.appender</name>
+      <value>RollingFile</value>
+    </Property>
+    <Property>
+      <name>pulsar.log.level</name>
+      <value>info</value>
+    </Property>
+    <Property>
+      <name>bk.log.level</name>
+      <value>info</value>
+    </Property>
+  </Properties>
+  <Appenders>
+    <Console>
+      <name>Console</name>
+      <target>SYSTEM_OUT</target>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+    </Console>
+    <RollingFile>
+      <name>RollingFile</name>
+      <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.log</fileName>
+      <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
+      <immediateFlush>true</immediateFlush>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <TimeBasedTriggeringPolicy>
+          <interval>1</interval>
+          <modulate>true</modulate>
+        </TimeBasedTriggeringPolicy>
+        <SizeBasedTriggeringPolicy>
+          <size>1 GB</size>
+        </SizeBasedTriggeringPolicy>
+        <CronTriggeringPolicy>
+          <schedule>0 0 0 * * ?</schedule>
+        </CronTriggeringPolicy>
+      </Policies>
+      <DefaultRolloverStrategy>
+        <Delete>
+          <basePath>${sys:pulsar.function.log.dir}</basePath>
+          <maxDepth>2</maxDepth>
+          <IfFileName>
+            <glob>*/${sys:pulsar.function.log.file}*log.gz</glob>
+          </IfFileName>
+          <IfLastModified>
+            <age>30d</age>
+          </IfLastModified>
+        </Delete>
+      </DefaultRolloverStrategy>
+    </RollingFile>
+    <RollingRandomAccessFile>
+      <name>BkRollingFile</name>
+      <fileName>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk</fileName>
+      <filePattern>${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
+      <immediateFlush>true</immediateFlush>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <TimeBasedTriggeringPolicy>
+          <interval>1</interval>
+          <modulate>true</modulate>
+        </TimeBasedTriggeringPolicy>
+        <SizeBasedTriggeringPolicy>
+          <size>1 GB</size>
+        </SizeBasedTriggeringPolicy>
+        <CronTriggeringPolicy>
+          <schedule>0 0 0 * * ?</schedule>
+        </CronTriggeringPolicy>
+      </Policies>
+      <DefaultRolloverStrategy>
+        <Delete>
+          <basePath>${sys:pulsar.function.log.dir}</basePath>
+          <maxDepth>2</maxDepth>
+          <IfFileName>
+            <glob>*/${sys:pulsar.function.log.file}.bk*log.gz</glob>
+          </IfFileName>
+          <IfLastModified>
+            <age>30d</age>
+          </IfLastModified>
+        </Delete>
+      </DefaultRolloverStrategy>
+    </RollingRandomAccessFile>
+  </Appenders>
+  <Loggers>
+    <Logger>
+      <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
+      <level>${sys:bk.log.level}</level>
+      <additivity>false</additivity>
+      <AppenderRef>
+        <ref>BkRollingFile</ref>
+      </AppenderRef>
+    </Logger>
+    <Root>
+      <level>info</level>
+      <AppenderRef>
+        <ref>${sys:pulsar.log.appender}</ref>
+        <level>${sys:pulsar.log.level}</level>
+      </AppenderRef>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/pulsar-functions/runtime-all/src/main/resources/kubernetes_instance_log4j2.xml b/pulsar-functions/runtime-all/src/main/resources/kubernetes_instance_log4j2.xml
index f86d03e41793f..fe478be5b8667 100644
--- a/pulsar-functions/runtime-all/src/main/resources/kubernetes_instance_log4j2.xml
+++ b/pulsar-functions/runtime-all/src/main/resources/kubernetes_instance_log4j2.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,42 +20,42 @@
 
 -->
 <Configuration>
-    <name>pulsar-functions-kubernetes-instance</name>
-    <monitorInterval>30</monitorInterval>
-    <Properties>
-        <Property>
-            <name>pulsar.log.level</name>
-            <value>info</value>
-        </Property>
-        <Property>
-            <name>bk.log.level</name>
-            <value>info</value>
-        </Property>
-    </Properties>
-    <Appenders>
-        <Console>
-            <name>Console</name>
-            <target>SYSTEM_OUT</target>
-            <PatternLayout>
-                <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
-            </PatternLayout>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Logger>
-            <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
-            <level>${sys:bk.log.level}</level>
-            <additivity>false</additivity>
-            <AppenderRef>
-                <ref>Console</ref>
-            </AppenderRef>
-        </Logger>
-        <Root>
-            <level>info</level>
-            <AppenderRef>
-                <ref>Console</ref>
-                <level>${sys:pulsar.log.level}</level>
-            </AppenderRef>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file
+  <name>pulsar-functions-kubernetes-instance</name>
+  <monitorInterval>30</monitorInterval>
+  <Properties>
+    <Property>
+      <name>pulsar.log.level</name>
+      <value>info</value>
+    </Property>
+    <Property>
+      <name>bk.log.level</name>
+      <value>info</value>
+    </Property>
+  </Properties>
+  <Appenders>
+    <Console>
+      <name>Console</name>
+      <target>SYSTEM_OUT</target>
+      <PatternLayout>
+        <Pattern>%d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n</Pattern>
+      </PatternLayout>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Logger>
+      <name>org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper</name>
+      <level>${sys:bk.log.level}</level>
+      <additivity>false</additivity>
+      <AppenderRef>
+        <ref>Console</ref>
+      </AppenderRef>
+    </Logger>
+    <Root>
+      <level>info</level>
+      <AppenderRef>
+        <ref>Console</ref>
+        <level>${sys:pulsar.log.level}</level>
+      </AppenderRef>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/pulsar-functions/runtime/pom.xml b/pulsar-functions/runtime/pom.xml
index b87032a53fe5b..7af8361448dd5 100644
--- a/pulsar-functions/runtime/pom.xml
+++ b/pulsar-functions/runtime/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,48 +19,38 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-runtime</artifactId>
   <name>Pulsar Functions :: Runtime</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-instance</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-secrets</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.kubernetes</groupId>
       <artifactId>client-java</artifactId>
@@ -84,9 +75,7 @@
       <artifactId>pulsar-broker-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -106,7 +95,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <!-- this task will copy config files to resources for the test to work -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -154,5 +142,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/runtime/src/main/resources/findbugsExclude.xml b/pulsar-functions/runtime/src/main/resources/findbugsExclude.xml
index b4a4e5926de3f..976abe7c54bb2 100644
--- a/pulsar-functions/runtime/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/runtime/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,13 +20,13 @@
 
 -->
 <FindBugsFilter>
-    <!-- these public fields may be used in other modules -->
-    <Match>
-        <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
-        <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
-        <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
-    </Match>
-</FindBugsFilter>
\ No newline at end of file
+  <!-- these public fields may be used in other modules -->
+  <Match>
+    <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
+    <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.functions.instance.JavaInstanceMain"/>
+    <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
+  </Match>
+</FindBugsFilter>
diff --git a/pulsar-functions/secrets/pom.xml b/pulsar-functions/secrets/pom.xml
index bf68589272664..9c077d74d705b 100644
--- a/pulsar-functions/secrets/pom.xml
+++ b/pulsar-functions/secrets/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-secrets</artifactId>
   <name>Pulsar Functions :: Secrets</name>
-
   <dependencies>
     <dependency>
       <groupId>io.kubernetes</groupId>
@@ -50,7 +48,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-proto</artifactId>
@@ -76,7 +73,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -109,5 +105,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/secrets/src/main/resources/findbugsExclude.xml b/pulsar-functions/secrets/src/main/resources/findbugsExclude.xml
index 0cab8ae6a418a..7d4464ae1c08d 100644
--- a/pulsar-functions/secrets/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/secrets/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -29,4 +30,4 @@
     <Method name="&lt;init&gt;"/>
     <Bug pattern="EI_EXPOSE_REP2"/>
   </Match>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-functions/utils/pom.xml b/pulsar-functions/utils/pom.xml
index 9a460ebf1dec5..c7cdf4266a8cd 100644
--- a/pulsar-functions/utils/pom.xml
+++ b/pulsar-functions/utils/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,94 +19,77 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-functions-utils</artifactId>
   <name>Pulsar Functions :: Utils</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-proto</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-config-validation</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>net.jodah</groupId>
       <artifactId>typetools</artifactId>
     </dependency>
-
     <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>pulsar-client-original</artifactId>
-        <version>${project.version}</version>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-package-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.github.tomakehurst</groupId>
       <artifactId>wiremock-jre8</artifactId>
       <version>${wiremock.version}</version>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
   <build>
     <plugins>
@@ -126,7 +110,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
@@ -142,5 +125,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/worker/pom.xml b/pulsar-functions/worker/pom.xml
index 24d0cec724d73..f6f5fdf8373cb 100644
--- a/pulsar-functions/worker/pom.xml
+++ b/pulsar-functions/worker/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,96 +19,77 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-functions</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-functions-worker</artifactId>
   <name>Pulsar Functions :: Worker</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-runtime</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-admin-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-json-jackson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>jakarta.activation</groupId>
       <artifactId>jakarta.activation-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-multipart</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-alpn-conscrypt-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlets</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.distributedlog</groupId>
       <artifactId>distributedlog-core</artifactId>
@@ -118,17 +100,14 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-docs-tools</artifactId>
@@ -140,7 +119,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-core</artifactId>
@@ -156,14 +134,11 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_jetty</artifactId>
     </dependency>
-
     <!-- functions related dependencies (end) -->
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-cassandra</artifactId>
@@ -171,7 +146,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-twitter</artifactId>
@@ -179,7 +153,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api-examples</artifactId>
@@ -187,7 +160,6 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api-examples-builtin</artifactId>
@@ -195,9 +167,7 @@
       <type>pom</type>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -217,7 +187,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <executions>
@@ -270,7 +239,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
@@ -286,7 +254,6 @@
           </systemPropertyVariables>
         </configuration>
       </plugin>
-
       <!-- this task will copy config files to resources for the test to work -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -334,5 +301,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-functions/worker/src/main/resources/findbugsExclude.xml b/pulsar-functions/worker/src/main/resources/findbugsExclude.xml
index ddde8120ba518..47c3d73af5f06 100644
--- a/pulsar-functions/worker/src/main/resources/findbugsExclude.xml
+++ b/pulsar-functions/worker/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,4 +20,4 @@
 
 -->
 <FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-io/aerospike/pom.xml b/pulsar-io/aerospike/pom.xml
index 88b5b280f9ee8..d8bf34b85d060 100644
--- a/pulsar-io/aerospike/pom.xml
+++ b/pulsar-io/aerospike/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,36 +19,29 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-aerospike</artifactId>
   <name>Pulsar IO :: Aerospike</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.aerospike</groupId>
       <artifactId>aerospike-client-bc</artifactId>
@@ -63,9 +57,7 @@
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcpkix-jdk18on</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -91,6 +83,4 @@
       </plugin>
     </plugins>
   </build>
-
-
 </project>
diff --git a/pulsar-io/aerospike/src/main/resources/findbugsExclude.xml b/pulsar-io/aerospike/src/main/resources/findbugsExclude.xml
index ddde8120ba518..47c3d73af5f06 100644
--- a/pulsar-io/aerospike/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/aerospike/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,4 +20,4 @@
 
 -->
 <FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-io/alluxio/pom.xml b/pulsar-io/alluxio/pom.xml
index 41a50b2aa3661..b4740c9470c57 100644
--- a/pulsar-io/alluxio/pom.xml
+++ b/pulsar-io/alluxio/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,100 +19,85 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>pulsar-io</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-
-    <properties>
-        <alluxio.version>2.7.3</alluxio.version>
-        <metrics.version>4.1.11</metrics.version>
-        <grpc.version>1.37.0</grpc.version>
-    </properties>
-
-    <artifactId>pulsar-io-alluxio</artifactId>
-    <name>Pulsar IO :: Alluxio</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.alluxio</groupId>
-            <artifactId>alluxio-core-client-fs</artifactId>
-            <version>${alluxio.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>grpc-netty</artifactId>
-                    <groupId>io.grpc</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.alluxio</groupId>
-            <artifactId>alluxio-minicluster</artifactId>
-            <version>${alluxio.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.glassfish</groupId>
-                    <artifactId>javax.el</artifactId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>grpc-netty</artifactId>
-                    <groupId>io.grpc</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-        <!-- alluxio grpc dependency need higher version -->
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-netty</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.dropwizard.metrics</groupId>
-            <artifactId>metrics-jvm</artifactId>
-            <version>${metrics.version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pulsar-io</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <properties>
+    <alluxio.version>2.7.3</alluxio.version>
+    <metrics.version>4.1.11</metrics.version>
+    <grpc.version>1.37.0</grpc.version>
+  </properties>
+  <artifactId>pulsar-io-alluxio</artifactId>
+  <name>Pulsar IO :: Alluxio</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.alluxio</groupId>
+      <artifactId>alluxio-core-client-fs</artifactId>
+      <version>${alluxio.version}</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>grpc-netty</artifactId>
+          <groupId>io.grpc</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.alluxio</groupId>
+      <artifactId>alluxio-minicluster</artifactId>
+      <version>${alluxio.version}</version>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.glassfish</groupId>
+          <artifactId>javax.el</artifactId>
+        </exclusion>
+        <exclusion>
+          <artifactId>grpc-netty</artifactId>
+          <groupId>io.grpc</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <!-- alluxio grpc dependency need higher version -->
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-netty</artifactId>
+      <version>${grpc.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-jvm</artifactId>
+      <version>${metrics.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/aws/pom.xml b/pulsar-io/aws/pom.xml
index 99659b54edfb7..86534dfc8c407 100644
--- a/pulsar-io/aws/pom.xml
+++ b/pulsar-io/aws/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,45 +19,37 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-aws</artifactId>
   <name>Pulsar IO :: IO AWS</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <!-- aws dependencies -->
     <dependency>
       <groupId>com.amazonaws</groupId>
       <artifactId>aws-java-sdk-sts</artifactId>
     </dependency>
-
     <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>sts</artifactId>
       <version>2.10.56</version>
     </dependency>
-	<!-- /aws dependencies -->
-
+    <!-- /aws dependencies -->
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/aws/src/main/resources/findbugsExclude.xml b/pulsar-io/aws/src/main/resources/findbugsExclude.xml
index ddde8120ba518..47c3d73af5f06 100644
--- a/pulsar-io/aws/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/aws/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,4 +20,4 @@
 
 -->
 <FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/pulsar-io/batch-data-generator/pom.xml b/pulsar-io/batch-data-generator/pom.xml
index 1fea2fbcd29bd..a811a96a052ac 100644
--- a/pulsar-io/batch-data-generator/pom.xml
+++ b/pulsar-io/batch-data-generator/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,82 +19,71 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-batch-data-generator</artifactId>
-    <name>Pulsar IO :: Batch Data Generator</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-batch-discovery-triggerers</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.codearte.jfairy</groupId>
-            <artifactId>jfairy</artifactId>
-            <version>0.5.9</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-local-runner-original</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-batch-data-generator</artifactId>
+  <name>Pulsar IO :: Batch Data Generator</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-batch-discovery-triggerers</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.codearte.jfairy</groupId>
+      <artifactId>jfairy</artifactId>
+      <version>0.5.9</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-local-runner-original</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/batch-data-generator/src/main/resources/findbugsExclude.xml b/pulsar-io/batch-data-generator/src/main/resources/findbugsExclude.xml
index 0b1652ef62881..1d0d64fba7e67 100644
--- a/pulsar-io/batch-data-generator/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/batch-data-generator/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/batch-discovery-triggerers/pom.xml b/pulsar-io/batch-discovery-triggerers/pom.xml
index 0fe4c1ebc3616..065509535942f 100644
--- a/pulsar-io/batch-discovery-triggerers/pom.xml
+++ b/pulsar-io/batch-discovery-triggerers/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,40 +19,32 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-batch-discovery-triggerers</artifactId>
   <name>Pulsar IO :: Batch Discovery Triggerers</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.cronutils</groupId>
       <artifactId>cron-utils</artifactId>
       <version>${cron-utils.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>${spring.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -73,5 +66,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/batch-discovery-triggerers/src/main/resources/findbugsExclude.xml b/pulsar-io/batch-discovery-triggerers/src/main/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-io/batch-discovery-triggerers/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/batch-discovery-triggerers/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/canal/pom.xml b/pulsar-io/canal/pom.xml
index 240fb09492229..59861d3b20cd4 100644
--- a/pulsar-io/canal/pom.xml
+++ b/pulsar-io/canal/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,116 +19,104 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>pulsar-io-canal</artifactId>
-    <name>Pulsar IO :: Canal</name>
-
-    <properties>
-        <canal.version>1.1.5</canal.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.83</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-aop</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-jdbc</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-orm</artifactId>
-            <version>${spring.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.alibaba.otter</groupId>
-            <artifactId>canal.protocol</artifactId>
-            <version>${canal.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba.otter</groupId>
-            <artifactId>canal.client</artifactId>
-            <version>${canal.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.springframework</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>pulsar-io-canal</artifactId>
+  <name>Pulsar IO :: Canal</name>
+  <properties>
+    <canal.version>1.1.5</canal.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>fastjson</artifactId>
+      <version>1.2.83</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-core</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-aop</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-jdbc</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-orm</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.alibaba.otter</groupId>
+      <artifactId>canal.protocol</artifactId>
+      <version>${canal.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>com.alibaba.otter</groupId>
+      <artifactId>canal.client</artifactId>
+      <version>${canal.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pulsar-io/cassandra/pom.xml b/pulsar-io/cassandra/pom.xml
index 1079ba71a4f02..b652f3d4cec12 100644
--- a/pulsar-io/cassandra/pom.xml
+++ b/pulsar-io/cassandra/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,43 +19,34 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-cassandra</artifactId>
   <name>Pulsar IO :: Cassandra</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.datastax.cassandra</groupId>
       <artifactId>cassandra-driver-core</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/common/pom.xml b/pulsar-io/common/pom.xml
index 35211c11208eb..fe902acced1fe 100644
--- a/pulsar-io/common/pom.xml
+++ b/pulsar-io/common/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,53 +19,46 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-common</artifactId>
-    <name>Pulsar IO :: IO Common</name>
-
-    <!-- This module is supposed to be used by Pulsar IO connectors and to only include strictly needed dependencies-->
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-common</artifactId>
+  <name>Pulsar IO :: IO Common</name>
+  <!-- This module is supposed to be used by Pulsar IO connectors and to only include strictly needed dependencies-->
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/common/src/main/resources/findbugsExclude.xml b/pulsar-io/common/src/main/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-io/common/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/common/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/core/pom.xml b/pulsar-io/core/pom.xml
index ff8cccbe04136..d26063069f144 100644
--- a/pulsar-io/core/pom.xml
+++ b/pulsar-io/core/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-core</artifactId>
   <name>Pulsar IO :: IO</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -37,7 +35,6 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -59,5 +56,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/core/src/main/resources/findbugsExclude.xml b/pulsar-io/core/src/main/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-io/core/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/core/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/data-generator/pom.xml b/pulsar-io/data-generator/pom.xml
index 8982368658c50..4513aa39ca37a 100644
--- a/pulsar-io/data-generator/pom.xml
+++ b/pulsar-io/data-generator/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,52 +19,43 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-data-generator</artifactId>
-    <name>Pulsar IO :: Data Generator</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-config-validation</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.codearte.jfairy</groupId>
-            <artifactId>jfairy</artifactId>
-            <version>0.5.9</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-data-generator</artifactId>
+  <name>Pulsar IO :: Data Generator</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-config-validation</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.codearte.jfairy</groupId>
+      <artifactId>jfairy</artifactId>
+      <version>0.5.9</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/debezium/core/pom.xml b/pulsar-io/debezium/core/pom.xml
index b304e24c56559..5b287c97298ed 100644
--- a/pulsar-io/debezium/core/pom.xml
+++ b/pulsar-io/debezium/core/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,50 +19,41 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io-debezium</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium-core</artifactId>
   <name>Pulsar IO :: Debezium :: Core</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-core</artifactId>
       <version>${debezium.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-kafka-connect-adaptor</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>connect-runtime</artifactId>
@@ -73,21 +65,18 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
@@ -95,21 +84,17 @@
       <scope>test</scope>
       <type>test-jar</type>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-connector-mysql</artifactId>
       <version>${debezium.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
 </project>
diff --git a/pulsar-io/debezium/mongodb/pom.xml b/pulsar-io/debezium/mongodb/pom.xml
index 4db623f2b57b5..e978c6506377d 100644
--- a/pulsar-io/debezium/mongodb/pom.xml
+++ b/pulsar-io/debezium/mongodb/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,48 +19,39 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io-debezium</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-debezium-mongodb</artifactId>
-    <name>Pulsar IO :: Debezium :: mongodb</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-debezium-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.debezium</groupId>
-            <artifactId>debezium-connector-mongodb</artifactId>
-            <version>${debezium.version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io-debezium</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-debezium-mongodb</artifactId>
+  <name>Pulsar IO :: Debezium :: mongodb</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-debezium-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.debezium</groupId>
+      <artifactId>debezium-connector-mongodb</artifactId>
+      <version>${debezium.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/debezium/mssql/pom.xml b/pulsar-io/debezium/mssql/pom.xml
index cd8ce3d58b589..a6e4c53cc917a 100644
--- a/pulsar-io/debezium/mssql/pom.xml
+++ b/pulsar-io/debezium/mssql/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,41 +19,33 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io-debezium</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium-mssql</artifactId>
   <name>Pulsar IO :: Debezium :: Microsoft SQL</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-debezium-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-connector-sqlserver</artifactId>
       <version>${debezium.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -61,5 +54,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/debezium/mysql/pom.xml b/pulsar-io/debezium/mysql/pom.xml
index f6a796c5d8291..381d4d9c29cb4 100644
--- a/pulsar-io/debezium/mysql/pom.xml
+++ b/pulsar-io/debezium/mysql/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io-debezium</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium-mysql</artifactId>
   <name>Pulsar IO :: Debezium :: mysql</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -37,21 +35,17 @@
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-debezium-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-connector-mysql</artifactId>
       <version>${debezium.version}</version>
     </dependency>
-
   </dependencies>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -61,8 +55,6 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
-
-
   <build>
     <plugins>
       <plugin>
@@ -71,5 +63,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/debezium/oracle/pom.xml b/pulsar-io/debezium/oracle/pom.xml
index 3885b4289702b..d76970ab6744a 100644
--- a/pulsar-io/debezium/oracle/pom.xml
+++ b/pulsar-io/debezium/oracle/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,41 +19,33 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io-debezium</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium-oracle</artifactId>
   <name>Pulsar IO :: Debezium :: oracle</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-debezium-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-connector-oracle</artifactId>
       <version>${debezium.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -61,5 +54,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/debezium/pom.xml b/pulsar-io/debezium/pom.xml
index 2bf835dc357bd..fd6bd95889da4 100644
--- a/pulsar-io/debezium/pom.xml
+++ b/pulsar-io/debezium/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium</artifactId>
   <name>Pulsar IO :: Debezium</name>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -70,7 +68,6 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
-
   <modules>
     <module>core</module>
     <module>mysql</module>
@@ -79,5 +76,4 @@
     <module>oracle</module>
     <module>mssql</module>
   </modules>
-
 </project>
diff --git a/pulsar-io/debezium/postgres/pom.xml b/pulsar-io/debezium/postgres/pom.xml
index 8f1c230ba0e58..cba21885abd14 100644
--- a/pulsar-io/debezium/postgres/pom.xml
+++ b/pulsar-io/debezium/postgres/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,48 +19,39 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io-debezium</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-debezium-postgres</artifactId>
   <name>Pulsar IO :: Debezium :: postgres</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-debezium-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.debezium</groupId>
       <artifactId>debezium-connector-postgres</artifactId>
       <version>${debezium.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>${debezium.postgresql.version}</version>
       <scope>runtime</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -68,5 +60,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/docs/pom.xml b/pulsar-io/docs/pom.xml
index ead0d765dc39f..bc864a494c71b 100644
--- a/pulsar-io/docs/pom.xml
+++ b/pulsar-io/docs/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-docs</artifactId>
   <name>Pulsar IO :: Docs</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
@@ -45,7 +42,6 @@
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
-
     <!-- include connectors -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -218,7 +214,6 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -267,5 +262,4 @@
       </build>
     </profile>
   </profiles>
-
 </project>
diff --git a/pulsar-io/docs/src/main/resources/findbugsExclude.xml b/pulsar-io/docs/src/main/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-io/docs/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/docs/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/dynamodb/pom.xml b/pulsar-io/dynamodb/pom.xml
index 607bdf099628f..f50a41438884e 100644
--- a/pulsar-io/dynamodb/pom.xml
+++ b/pulsar-io/dynamodb/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,77 +19,63 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-dynamodb</artifactId>
   <name>Pulsar IO :: DynamoDB</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-instance</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-aws</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <!-- add cbor for kinesis-client to fix dep conflict -->
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-cbor</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <!-- dynamodb dependencies -->
     <dependency>
       <groupId>com.amazonaws</groupId>
       <artifactId>aws-java-sdk-core</artifactId>
     </dependency>
-
     <!--  This pulls in the appropriate version of the kinesis consumer library as a transitive dependency -->
     <dependency>
       <groupId>com.amazonaws</groupId>
@@ -96,9 +83,7 @@
       <version>1.5.1</version>
     </dependency>
     <!-- /dynamodb dependencies -->
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -107,5 +92,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/elastic-search/pom.xml b/pulsar-io/elastic-search/pom.xml
index 847ec80cf894a..22b17ba77da2a 100644
--- a/pulsar-io/elastic-search/pom.xml
+++ b/pulsar-io/elastic-search/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -21,13 +22,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <artifactId>pulsar-io-elastic-search</artifactId>
   <name>Pulsar IO :: ElasticSearch</name>
-
   <properties>
     <!--
      Work-around for "Container exited with code 137" (OOM)
@@ -35,69 +35,57 @@
     <testReuseFork>false</testReuseFork>
     <testForkCount>1</testForkCount>
   </properties>
-
   <dependencies>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>${guava.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
       <version>${commons-lang3.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.opensearch.client</groupId>
       <artifactId>opensearch-rest-high-level-client</artifactId>
     </dependency>
-
     <dependency>
       <groupId>co.elastic.clients</groupId>
       <artifactId>elasticsearch-java</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>elasticsearch</artifactId>
@@ -108,9 +96,7 @@
       <artifactId>toxiproxy</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -119,5 +105,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/file/pom.xml b/pulsar-io/file/pom.xml
index 32d3355d7854b..e0cb72185881c 100644
--- a/pulsar-io/file/pom.xml
+++ b/pulsar-io/file/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -21,43 +22,35 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-file</artifactId>
   <name>Pulsar IO :: File</name>
-  
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-    
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
-    	<groupId>com.fasterxml.jackson.core</groupId>
-    	<artifactId>jackson-databind</artifactId>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
     </dependency>
-    
     <dependency>
-    	<groupId>commons-io</groupId>
-    	<artifactId>commons-io</artifactId>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
     </dependency>
-
     <dependency>
-    	<groupId>org.apache.commons</groupId>
-    	<artifactId>commons-lang3</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
     </dependency>
   </dependencies>
-  
   <build>
     <plugins>
       <plugin>
@@ -66,5 +59,4 @@
       </plugin>
     </plugins>
   </build>
-  
-</project>
\ No newline at end of file
+</project>
diff --git a/pulsar-io/flume/pom.xml b/pulsar-io/flume/pom.xml
index 20dfe768e9eec..736a929ed0130 100644
--- a/pulsar-io/flume/pom.xml
+++ b/pulsar-io/flume/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,146 +19,135 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-flume</artifactId>
-    <name>Pulsar IO :: Flume</name>
-
-    <properties>
-        <avro.version>1.8.2</avro.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.flume</groupId>
-            <artifactId>flume-ng-node</artifactId>
-            <version>1.9.0</version>
-            <type>pom</type>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.avro</groupId>
-                    <artifactId>avro-ipc</artifactId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>avro</artifactId>
-                    <groupId>org.apache.avro</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.6</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro-ipc</artifactId>
-            <version>${avro.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.mortbay.jetty</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.netty</groupId>
-                    <artifactId>netty</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.curator</groupId>
-            <artifactId>curator-framework</artifactId>
-            <version>${curator.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.curator</groupId>
-            <artifactId>curator-test</artifactId>
-            <version>${curator.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <!-- zookeeper server -->
-        <dependency>
-            <groupId>io.dropwizard.metrics</groupId>
-            <artifactId>metrics-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <!-- zookeeper server -->
-        <dependency>
-            <groupId>org.xerial.snappy</groupId>
-            <artifactId>snappy-java</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>${guava.version}</version>
-        </dependency>
-    </dependencies>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-    <profiles>
-        <!--
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-flume</artifactId>
+  <name>Pulsar IO :: Flume</name>
+  <properties>
+    <avro.version>1.8.2</avro.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flume</groupId>
+      <artifactId>flume-ng-node</artifactId>
+      <version>1.9.0</version>
+      <type>pom</type>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.avro</groupId>
+          <artifactId>avro-ipc</artifactId>
+        </exclusion>
+        <exclusion>
+          <artifactId>avro</artifactId>
+          <groupId>org.apache.avro</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.6</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro-ipc</artifactId>
+      <version>${avro.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.mortbay.jetty</groupId>
+          <artifactId>servlet-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.netty</groupId>
+          <artifactId>netty</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.curator</groupId>
+      <artifactId>curator-framework</artifactId>
+      <version>${curator.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.curator</groupId>
+      <artifactId>curator-test</artifactId>
+      <version>${curator.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <!-- zookeeper server -->
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- zookeeper server -->
+    <dependency>
+      <groupId>org.xerial.snappy</groupId>
+      <artifactId>snappy-java</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>${guava.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <!--
         The only working way for OWASP dependency checker plugin
         to exclude module when failBuildOnCVSS is used
         in the root pom's plugin.
         -->
-        <profile>
-            <id>owasp-dependency-check</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.owasp</groupId>
-                        <artifactId>dependency-check-maven</artifactId>
-                        <version>${dependency-check-maven.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>aggregate</goal>
-                                </goals>
-                                <phase>none</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
+    <profile>
+      <id>owasp-dependency-check</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.owasp</groupId>
+            <artifactId>dependency-check-maven</artifactId>
+            <version>${dependency-check-maven.version}</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/pulsar-io/hbase/pom.xml b/pulsar-io/hbase/pom.xml
index e0b81986395f3..9095564da03af 100644
--- a/pulsar-io/hbase/pom.xml
+++ b/pulsar-io/hbase/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,109 +19,112 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>pulsar-io</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-    <artifactId>pulsar-io-hbase</artifactId>
-    <name>Pulsar IO :: Hbase</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-instance</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.hbase</groupId>
-            <artifactId>hbase-client</artifactId>
-            <version>${hbase.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.hbase</groupId>
-            <artifactId>hbase-common</artifactId>
-            <version>${hbase.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-    <profiles>
-        <!--
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pulsar-io</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-hbase</artifactId>
+  <name>Pulsar IO :: Hbase</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-instance</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-client</artifactId>
+      <version>${hbase.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.glassfish</groupId>
+          <artifactId>javax.el</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-common</artifactId>
+      <version>${hbase.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.glassfish</groupId>
+          <artifactId>javax.el</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.glassfish</groupId>
+      <artifactId>javax.el</artifactId>
+      <version>3.0.0</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <!--
         The only working way for OWASP dependency checker plugin
         to exclude module when failBuildOnCVSS is used
         in the root pom's plugin.
         -->
-        <profile>
-            <id>owasp-dependency-check</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.owasp</groupId>
-                        <artifactId>dependency-check-maven</artifactId>
-                        <version>${dependency-check-maven.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>aggregate</goal>
-                                </goals>
-                                <phase>none</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
+    <profile>
+      <id>owasp-dependency-check</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.owasp</groupId>
+            <artifactId>dependency-check-maven</artifactId>
+            <version>${dependency-check-maven.version}</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/pulsar-io/hbase/src/test/resources/hbase/hbase-site.xml b/pulsar-io/hbase/src/test/resources/hbase/hbase-site.xml
index c2b520a765643..460cbd497c15f 100644
--- a/pulsar-io/hbase/src/test/resources/hbase/hbase-site.xml
+++ b/pulsar-io/hbase/src/test/resources/hbase/hbase-site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,24 +20,24 @@
 
 -->
 <configuration>
-    <property >
-        <name>hbase.cluster.distributed</name>
-        <value>true</value>
-    </property>
-    <property>
-        <name>hbase.rootdir</name>
-        <value>hdfs://localhost:8020/hbase</value>
-    </property>
-    <property>
-        <name>hbase.zookeeper.quorum</name>
-        <value>localhost</value>
-    </property>
-    <property>
-        <name>hbase.zookeeper.property.clientPort</name>
-        <value>2181</value>
-    </property>
-    <property>
-        <name>zookeeper.znode.parent</name>
-        <value>/hbase</value>
-    </property>
+  <property>
+    <name>hbase.cluster.distributed</name>
+    <value>true</value>
+  </property>
+  <property>
+    <name>hbase.rootdir</name>
+    <value>hdfs://localhost:8020/hbase</value>
+  </property>
+  <property>
+    <name>hbase.zookeeper.quorum</name>
+    <value>localhost</value>
+  </property>
+  <property>
+    <name>hbase.zookeeper.property.clientPort</name>
+    <value>2181</value>
+  </property>
+  <property>
+    <name>zookeeper.znode.parent</name>
+    <value>/hbase</value>
+  </property>
 </configuration>
diff --git a/pulsar-io/hdfs2/pom.xml b/pulsar-io/hdfs2/pom.xml
index c51e13321b507..88cc6134d6353 100644
--- a/pulsar-io/hdfs2/pom.xml
+++ b/pulsar-io/hdfs2/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -21,60 +22,54 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <artifactId>pulsar-io-hdfs2</artifactId>
   <name>Pulsar IO :: Hdfs2</name>
-  
-    <dependencies>
-     <dependency>
+  <dependencies>
+    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-    
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
-
-  	<dependency>
-  		<groupId>org.apache.hadoop</groupId>
-  		<artifactId>hadoop-client</artifactId>
-  		<version>${hadoop2.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-          </exclusion>
-        </exclusions>
-  	</dependency>
     <dependency>
-       <groupId>org.apache.commons</groupId>
-  	   <artifactId>commons-lang3</artifactId>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-client</artifactId>
+      <version>${hadoop2.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.avro</groupId>
+          <artifactId>avro</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
     </dependency>
- </dependencies>
-  
+  </dependencies>
   <build>
     <plugins>
       <plugin>
@@ -86,46 +81,45 @@
         <artifactId>spotbugs-maven-plugin</artifactId>
         <version>${spotbugs-maven-plugin.version}</version>
         <configuration>
-            <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
         </configuration>
         <executions>
-            <execution>
-                <id>spotbugs</id>
-                <phase>verify</phase>
-                <goals>
-                    <goal>check</goal>
-                </goals>
-            </execution>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
-    <profiles>
-        <!--
+  <profiles>
+    <!--
         The only working way for OWASP dependency checker plugin
         to exclude module when failBuildOnCVSS is used
         in the root pom's plugin.
         -->
-        <profile>
-            <id>owasp-dependency-check</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.owasp</groupId>
-                        <artifactId>dependency-check-maven</artifactId>
-                        <version>${dependency-check-maven.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>aggregate</goal>
-                                </goals>
-                                <phase>none</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
\ No newline at end of file
+    <profile>
+      <id>owasp-dependency-check</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.owasp</groupId>
+            <artifactId>dependency-check-maven</artifactId>
+            <version>${dependency-check-maven.version}</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/pulsar-io/hdfs2/src/main/resources/findbugsExclude.xml b/pulsar-io/hdfs2/src/main/resources/findbugsExclude.xml
index 980349c4d8d5e..93756f7f28461 100644
--- a/pulsar-io/hdfs2/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/hdfs2/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/hdfs2/src/test/resources/hadoop/core-site.xml b/pulsar-io/hdfs2/src/test/resources/hadoop/core-site.xml
index 31d1e98c47558..b5cf3c90fbe40 100644
--- a/pulsar-io/hdfs2/src/test/resources/hadoop/core-site.xml
+++ b/pulsar-io/hdfs2/src/test/resources/hadoop/core-site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,14 +20,14 @@
 
 -->
 <configuration>
-    <property>
-        <name>fs.defaultFS</name>
-        <value>hdfs://0.0.0.0:8020</value>
-    </property>
-    <property>
-        <name>io.compression.codecs</name>
-        <value>org.apache.hadoop.io.compress.GzipCodec,
+  <property>
+    <name>fs.defaultFS</name>
+    <value>hdfs://0.0.0.0:8020</value>
+  </property>
+  <property>
+    <name>io.compression.codecs</name>
+    <value>org.apache.hadoop.io.compress.GzipCodec,
                org.apache.hadoop.io.compress.DefaultCodec,
                org.apache.hadoop.io.compress.SnappyCodec</value>
-   </property>
+  </property>
 </configuration>
diff --git a/pulsar-io/hdfs2/src/test/resources/hadoop/hdfs-site.xml b/pulsar-io/hdfs2/src/test/resources/hadoop/hdfs-site.xml
index bb722f1f63470..1b35ebd585012 100644
--- a/pulsar-io/hdfs2/src/test/resources/hadoop/hdfs-site.xml
+++ b/pulsar-io/hdfs2/src/test/resources/hadoop/hdfs-site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +20,16 @@
 
 -->
 <configuration>
-    <property>
-        <name>dfs.replication</name>
-        <value>1</value>
-    </property>
-    <property>
-    	<name>dfs.client.use.datanode.hostname</name>
-    	<value>true</value>
-    </property>
-    <property>
-       <name>dfs.support.append</name>
-       <value>true</value>
-   </property>
+  <property>
+    <name>dfs.replication</name>
+    <value>1</value>
+  </property>
+  <property>
+    <name>dfs.client.use.datanode.hostname</name>
+    <value>true</value>
+  </property>
+  <property>
+    <name>dfs.support.append</name>
+    <value>true</value>
+  </property>
 </configuration>
diff --git a/pulsar-io/hdfs3/pom.xml b/pulsar-io/hdfs3/pom.xml
index 90d65f9eac1f8..64048f3a559b3 100644
--- a/pulsar-io/hdfs3/pom.xml
+++ b/pulsar-io/hdfs3/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -21,66 +22,58 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <artifactId>pulsar-io-hdfs3</artifactId>
   <name>Pulsar IO :: Hdfs3</name>
-  
   <dependencies>
-     <dependency>
+    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-    
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
-    
-  	<dependency>
-  		<groupId>org.apache.hadoop</groupId>
-  		<artifactId>hadoop-client</artifactId>
-  		<version>${hadoop3.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>jakarta.activation</groupId>
-            <artifactId>jakarta.activation-api</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-          </exclusion>
-        </exclusions>
-  	</dependency>
-
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-client</artifactId>
+      <version>${hadoop3.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>jakarta.activation</groupId>
+          <artifactId>jakarta.activation-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.avro</groupId>
+          <artifactId>avro</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
     <dependency>
       <groupId>jakarta.activation</groupId>
       <artifactId>jakarta.activation-api</artifactId>
     </dependency>
-
   </dependencies>
-  
   <build>
     <plugins>
       <plugin>
@@ -133,5 +126,4 @@
       </build>
     </profile>
   </profiles>
-
-</project>
\ No newline at end of file
+</project>
diff --git a/pulsar-io/hdfs3/src/main/resources/findbugsExclude.xml b/pulsar-io/hdfs3/src/main/resources/findbugsExclude.xml
index 2dce75b3451e0..116cfdab357f8 100644
--- a/pulsar-io/hdfs3/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/hdfs3/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/hdfs3/src/test/resources/hadoop/core-site.xml b/pulsar-io/hdfs3/src/test/resources/hadoop/core-site.xml
index 31d1e98c47558..b5cf3c90fbe40 100644
--- a/pulsar-io/hdfs3/src/test/resources/hadoop/core-site.xml
+++ b/pulsar-io/hdfs3/src/test/resources/hadoop/core-site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,14 +20,14 @@
 
 -->
 <configuration>
-    <property>
-        <name>fs.defaultFS</name>
-        <value>hdfs://0.0.0.0:8020</value>
-    </property>
-    <property>
-        <name>io.compression.codecs</name>
-        <value>org.apache.hadoop.io.compress.GzipCodec,
+  <property>
+    <name>fs.defaultFS</name>
+    <value>hdfs://0.0.0.0:8020</value>
+  </property>
+  <property>
+    <name>io.compression.codecs</name>
+    <value>org.apache.hadoop.io.compress.GzipCodec,
                org.apache.hadoop.io.compress.DefaultCodec,
                org.apache.hadoop.io.compress.SnappyCodec</value>
-   </property>
+  </property>
 </configuration>
diff --git a/pulsar-io/hdfs3/src/test/resources/hadoop/hdfs-site.xml b/pulsar-io/hdfs3/src/test/resources/hadoop/hdfs-site.xml
index bb722f1f63470..1b35ebd585012 100644
--- a/pulsar-io/hdfs3/src/test/resources/hadoop/hdfs-site.xml
+++ b/pulsar-io/hdfs3/src/test/resources/hadoop/hdfs-site.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +20,16 @@
 
 -->
 <configuration>
-    <property>
-        <name>dfs.replication</name>
-        <value>1</value>
-    </property>
-    <property>
-    	<name>dfs.client.use.datanode.hostname</name>
-    	<value>true</value>
-    </property>
-    <property>
-       <name>dfs.support.append</name>
-       <value>true</value>
-   </property>
+  <property>
+    <name>dfs.replication</name>
+    <value>1</value>
+  </property>
+  <property>
+    <name>dfs.client.use.datanode.hostname</name>
+    <value>true</value>
+  </property>
+  <property>
+    <name>dfs.support.append</name>
+    <value>true</value>
+  </property>
 </configuration>
diff --git a/pulsar-io/http/pom.xml b/pulsar-io/http/pom.xml
index 1ecc428af9458..c0d065aae1fa8 100644
--- a/pulsar-io/http/pom.xml
+++ b/pulsar-io/http/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,69 +19,57 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-http</artifactId>
-    <name>Pulsar IO :: HTTP</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.tomakehurst</groupId>
-            <artifactId>wiremock-jre8</artifactId>
-            <version>${wiremock.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-http</artifactId>
+  <name>Pulsar IO :: HTTP</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.datatype</groupId>
+      <artifactId>jackson-datatype-jsr310</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.github.tomakehurst</groupId>
+      <artifactId>wiremock-jre8</artifactId>
+      <version>${wiremock.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/influxdb/pom.xml b/pulsar-io/influxdb/pom.xml
index 8bc3095b458a5..45f503ac4832a 100644
--- a/pulsar-io/influxdb/pom.xml
+++ b/pulsar-io/influxdb/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,76 +19,67 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>pulsar-io</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-influxdb</artifactId>
-    <name>Pulsar IO :: InfluxDB</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-instance</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.influxdb</groupId>
-            <artifactId>influxdb-client-java</artifactId>
-            <version>4.0.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.influxdb</groupId>
-            <artifactId>influxdb-java</artifactId>
-            <version>2.22</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.squareup.okhttp3</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pulsar-io</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-influxdb</artifactId>
+  <name>Pulsar IO :: InfluxDB</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-instance</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.influxdb</groupId>
+      <artifactId>influxdb-client-java</artifactId>
+      <version>4.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.influxdb</groupId>
+      <artifactId>influxdb-java</artifactId>
+      <version>2.22</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.squareup.okhttp3</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pulsar-io/jdbc/clickhouse/pom.xml b/pulsar-io/jdbc/clickhouse/pom.xml
index af6f62e0cab59..8d65993c7c4af 100644
--- a/pulsar-io/jdbc/clickhouse/pom.xml
+++ b/pulsar-io/jdbc/clickhouse/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-
   <artifactId>pulsar-io-jdbc-clickhouse</artifactId>
   <name>Pulsar IO :: Jdbc :: ClickHouse</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -45,13 +42,12 @@
       <classifier>all</classifier>
       <exclusions>
         <exclusion>
-            <groupId>*</groupId>
-            <artifactId>*</artifactId>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/jdbc/core/pom.xml b/pulsar-io/jdbc/core/pom.xml
index 4f0eb4ff3c539..35a64b359558b 100644
--- a/pulsar-io/jdbc/core/pom.xml
+++ b/pulsar-io/jdbc/core/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,59 +19,47 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-
   <artifactId>pulsar-io-jdbc-core</artifactId>
   <name>Pulsar IO :: Jdbc :: Core</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
       <scope>provided</scope>
     </dependency>
-
   </dependencies>
-
-</project>
\ No newline at end of file
+</project>
diff --git a/pulsar-io/jdbc/mariadb/pom.xml b/pulsar-io/jdbc/mariadb/pom.xml
index 042661dddcd53..5412d078ce91d 100644
--- a/pulsar-io/jdbc/mariadb/pom.xml
+++ b/pulsar-io/jdbc/mariadb/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-
   <artifactId>pulsar-io-jdbc-mariadb</artifactId>
   <name>Pulsar IO :: Jdbc :: Mariadb</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -52,4 +49,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/pulsar-io/jdbc/openmldb/pom.xml b/pulsar-io/jdbc/openmldb/pom.xml
index 586161e6e49ff..ec825f9481ca5 100644
--- a/pulsar-io/jdbc/openmldb/pom.xml
+++ b/pulsar-io/jdbc/openmldb/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-
   <artifactId>pulsar-io-jdbc-openmldb</artifactId>
   <name>Pulsar IO :: Jdbc :: OpenMLDB</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -60,7 +57,6 @@
       <scope>runtime</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/jdbc/pom.xml b/pulsar-io/jdbc/pom.xml
index d9e28c1d15f3d..34dedf8c4f0fa 100644
--- a/pulsar-io/jdbc/pom.xml
+++ b/pulsar-io/jdbc/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,8 +19,7 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <modules>
@@ -31,12 +31,10 @@
     <module>openmldb</module>
   </modules>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-jdbc</artifactId>
   <name>Pulsar IO :: Jdbc</name>
-
 </project>
diff --git a/pulsar-io/jdbc/postgres/pom.xml b/pulsar-io/jdbc/postgres/pom.xml
index 5b69463c5d549..825a9e4b01376 100644
--- a/pulsar-io/jdbc/postgres/pom.xml
+++ b/pulsar-io/jdbc/postgres/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-
   <artifactId>pulsar-io-jdbc-postgres</artifactId>
   <name>Pulsar IO :: Jdbc :: Postgres</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -44,7 +41,6 @@
       <scope>runtime</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/jdbc/sqlite/pom.xml b/pulsar-io/jdbc/sqlite/pom.xml
index 2411e382479e4..90a023cfdd8d2 100644
--- a/pulsar-io/jdbc/sqlite/pom.xml
+++ b/pulsar-io/jdbc/sqlite/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>pulsar-io-jdbc</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>pulsar-io-jdbc-sqlite</artifactId>
   <name>Pulsar IO :: Jdbc :: Sqlite</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -60,7 +58,6 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -69,4 +66,4 @@
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/pulsar-io/kafka-connect-adaptor-nar/pom.xml b/pulsar-io/kafka-connect-adaptor-nar/pom.xml
index 7371be3b49697..dc21b22d6bbd8 100644
--- a/pulsar-io/kafka-connect-adaptor-nar/pom.xml
+++ b/pulsar-io/kafka-connect-adaptor-nar/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-kafka-connect-adaptor-nar</artifactId>
   <name>Pulsar IO :: Kafka Connect Adaptor NAR</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -37,8 +35,6 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
-
-
   <build>
     <plugins>
       <plugin>
@@ -48,7 +44,30 @@
           <finalName>pulsar-io-kafka-connect-adaptor-${project.version}</finalName>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/kafka-connect-adaptor/pom.xml b/pulsar-io/kafka-connect-adaptor/pom.xml
index d06b2c1a0833f..8243bde1e67a4 100644
--- a/pulsar-io/kafka-connect-adaptor/pom.xml
+++ b/pulsar-io/kafka-connect-adaptor/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,44 +19,36 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-kafka-connect-adaptor</artifactId>
   <name>Pulsar IO :: Kafka Connect Adaptor</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
       <scope>compile</scope>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>connect-runtime</artifactId>
@@ -75,19 +68,16 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>connect-json</artifactId>
       <version>${kafka-client.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>connect-api</artifactId>
       <version>${kafka-client.version}</version>
     </dependency>
-
     <!-- pulsar-client is only needed for MessageId conversion (for seeking), commons-lang3 and Netty buffer manipulation -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -100,17 +90,14 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-buffer</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <!-- confluent connect avro converter -->
     <dependency>
       <groupId>io.confluent</groupId>
@@ -123,28 +110,24 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>connect-file</artifactId>
       <version>${kafka-client.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
@@ -152,38 +135,37 @@
       <scope>test</scope>
       <type>test-jar</type>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.asynchttpclient</groupId>
       <artifactId>async-http-client</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bc-fips</artifactId>
       <version>${bouncycastle.bc-fips.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.typesafe.netty</groupId>
       <artifactId>netty-reactive-streams</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>3.5.1</version>
+    </dependency>
   </dependencies>
-
 </project>
diff --git a/pulsar-io/kafka/pom.xml b/pulsar-io/kafka/pom.xml
index 76fe8851a294c..1ced56fc319f1 100644
--- a/pulsar-io/kafka/pom.xml
+++ b/pulsar-io/kafka/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-kafka</artifactId>
   <name>Pulsar IO :: Kafka</name>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -44,84 +42,69 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>kafka-clients</artifactId>
       <version>${kafka-client.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.confluent</groupId>
       <artifactId>kafka-schema-registry-client</artifactId>
       <version>${confluent.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.confluent</groupId>
       <artifactId>kafka-avro-serializer</artifactId>
       <version>${confluent.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-impl</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-jackson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/kafka/src/main/resources/findbugsExclude.xml b/pulsar-io/kafka/src/main/resources/findbugsExclude.xml
index 3fc8f67c8640e..a48959506a69a 100644
--- a/pulsar-io/kafka/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/kafka/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-io/kinesis/pom.xml b/pulsar-io/kinesis/pom.xml
index 843eec656b57d..24bf554e53df6 100644
--- a/pulsar-io/kinesis/pom.xml
+++ b/pulsar-io/kinesis/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-kinesis</artifactId>
   <name>Pulsar IO :: Kinesis</name>
-
   <properties>
     <amazon-kinesis-client.version>2.2.8</amazon-kinesis-client.version>
     <amazon-kinesis-producer.version>0.14.0</amazon-kinesis-producer.version>
@@ -37,116 +35,96 @@
     <flatbuffers-java.version>1.9.0</flatbuffers-java.version>
     <jaxb-api.version>2.3.0</jaxb-api.version>
   </properties>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-aws</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-functions-instance</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <!-- add cbor for kinesis-client to fix dep conflict -->
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-cbor</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>${avro.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.github.wnameless.json</groupId>
       <artifactId>json-flattener</artifactId>
       <version>${json-flattener.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <!-- kinesis dependencies -->
     <dependency>
       <groupId>com.amazonaws</groupId>
       <artifactId>aws-java-sdk-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>software.amazon.kinesis</groupId>
       <artifactId>amazon-kinesis-client</artifactId>
       <version>${amazon-kinesis-client.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.amazonaws</groupId>
       <artifactId>amazon-kinesis-producer</artifactId>
       <version>${amazon-kinesis-producer.version}</version>
     </dependency>
-	<!-- /kinesis dependencies -->
-
+    <!-- /kinesis dependencies -->
     <dependency>
       <groupId>com.google.flatbuffers</groupId>
       <artifactId>flatbuffers-java</artifactId>
       <version>${flatbuffers-java.version}</version>
     </dependency>
-
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
       <version>${jaxb-api.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>localstack</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -155,5 +133,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/mongo/pom.xml b/pulsar-io/mongo/pom.xml
index 3c39c2ead65b5..3625ab3f83974 100644
--- a/pulsar-io/mongo/pom.xml
+++ b/pulsar-io/mongo/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,24 +19,18 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
-      <artifactId>pulsar-io</artifactId>
-      <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-mongo</artifactId>
   <name>Pulsar IO :: MongoDB</name>
-
   <properties>
     <mongo-reactivestreams.version>4.1.2</mongo-reactivestreams.version>
   </properties>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -69,7 +64,6 @@
       <artifactId>guava</artifactId>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/pulsar-io/netty/pom.xml b/pulsar-io/netty/pom.xml
index 8e7604e7560dd..f444f2b192cdb 100644
--- a/pulsar-io/netty/pom.xml
+++ b/pulsar-io/netty/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,82 +19,69 @@
     under the License.
 
 -->
-<project
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-io</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-netty</artifactId>
-    <name>Pulsar IO :: Netty</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-codec-http</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-io</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-netty</artifactId>
+  <name>Pulsar IO :: Netty</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-handler</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-codec-http</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-io/netty/src/main/resources/findbugsExclude.xml b/pulsar-io/netty/src/main/resources/findbugsExclude.xml
index 3a52062fc9233..6b8906a775bd3 100644
--- a/pulsar-io/netty/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/netty/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +20,16 @@
 
 -->
 <FindBugsFilter>
-    <Match>
-        <Package name="org.apache.pulsar.io.netty.http" />
-        <Bug pattern="SE_BAD_FIELD" />
-    </Match>
-    <Match>
-        <Package name="org.apache.pulsar.io.netty.tcp" />
-        <Bug pattern="SE_BAD_FIELD" />
-    </Match>
-    <Match>
-        <Package name="org.apache.pulsar.io.netty.udp" />
-        <Bug pattern="SE_BAD_FIELD" />
-    </Match>
+  <Match>
+    <Package name="org.apache.pulsar.io.netty.http"/>
+    <Bug pattern="SE_BAD_FIELD"/>
+  </Match>
+  <Match>
+    <Package name="org.apache.pulsar.io.netty.tcp"/>
+    <Bug pattern="SE_BAD_FIELD"/>
+  </Match>
+  <Match>
+    <Package name="org.apache.pulsar.io.netty.udp"/>
+    <Bug pattern="SE_BAD_FIELD"/>
+  </Match>
 </FindBugsFilter>
diff --git a/pulsar-io/nsq/pom.xml b/pulsar-io/nsq/pom.xml
index 3142064b8e43d..5f25caaa17f5a 100644
--- a/pulsar-io/nsq/pom.xml
+++ b/pulsar-io/nsq/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,60 +19,50 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
- 
   <artifactId>pulsar-io-nsq</artifactId>
   <name>Pulsar IO :: NSQ</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.sproutsocial</groupId>
       <artifactId>nsq-j</artifactId>
       <version>${nsq-client.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
- 
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
-      <plugins>
-        <plugin>
-            <groupId>org.apache.nifi</groupId>
-            <artifactId>nifi-nar-maven-plugin</artifactId>
-        </plugin>
-      </plugins>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
   </build>
 </project>
diff --git a/pulsar-io/pom.xml b/pulsar-io/pom.xml
index c711a10b2262a..23c694afbdee6 100644
--- a/pulsar-io/pom.xml
+++ b/pulsar-io/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io</artifactId>
   <name>Pulsar IO :: Parent</name>
-
   <profiles>
     <profile>
       <id>main</id>
@@ -77,7 +75,6 @@
         <module>alluxio</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-io-tests</id>
       <modules>
@@ -110,7 +107,6 @@
         <module>alluxio</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-io-elastic-tests</id>
       <modules>
@@ -119,7 +115,6 @@
         <module>elastic-search</module>
       </modules>
     </profile>
-
     <profile>
       <id>pulsar-io-kafka-connect-tests</id>
       <modules>
@@ -131,7 +126,6 @@
         <module>debezium</module>
       </modules>
     </profile>
-
     <profile>
       <id>core-modules</id>
       <modules>
@@ -145,7 +139,6 @@
       </modules>
     </profile>
   </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -163,5 +156,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/rabbitmq/pom.xml b/pulsar-io/rabbitmq/pom.xml
index 1202c28da9e44..6c166733933cf 100644
--- a/pulsar-io/rabbitmq/pom.xml
+++ b/pulsar-io/rabbitmq/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,20 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-rabbitmq</artifactId>
   <name>Pulsar IO :: RabbitMQ</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-common</artifactId>
@@ -58,28 +55,23 @@
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.rabbitmq</groupId>
       <artifactId>amqp-client</artifactId>
       <version>${rabbitmq-client.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.qpid</groupId>
       <artifactId>qpid-broker</artifactId>
@@ -91,9 +83,7 @@
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -102,5 +92,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-io/redis/pom.xml b/pulsar-io/redis/pom.xml
index caeb5c1dfc346..fd8ce03b20681 100644
--- a/pulsar-io/redis/pom.xml
+++ b/pulsar-io/redis/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,80 +19,74 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>pulsar-io</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-io-redis</artifactId>
-    <name>Pulsar IO :: Redis</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-instance</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.lettuce</groupId>
-            <artifactId>lettuce-core</artifactId>
-            <version>5.0.2.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.kstyrc</groupId>
-            <artifactId>embedded-redis</artifactId>
-            <version>0.6</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pulsar-io</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-io-redis</artifactId>
+  <name>Pulsar IO :: Redis</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-instance</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.lettuce</groupId>
+      <artifactId>lettuce-core</artifactId>
+      <version>5.0.2.RELEASE</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.github.kstyrc</groupId>
+      <artifactId>embedded-redis</artifactId>
+      <version>0.6</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pulsar-io/solr/pom.xml b/pulsar-io/solr/pom.xml
index 3d21abb623e64..5489ad421a252 100644
--- a/pulsar-io/solr/pom.xml
+++ b/pulsar-io/solr/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,88 +19,81 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>pulsar-io</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-
-    <properties>
-        <solr.version>8.11.1</solr.version>
-    </properties>
-
-    <artifactId>pulsar-io-solr</artifactId>
-    <name>Pulsar IO :: Solr</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-io-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.parent.groupId}</groupId>
-            <artifactId>pulsar-io-core</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-functions-instance</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.solr</groupId>
-            <artifactId>solr-solrj</artifactId>
-            <version>${solr.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.solr</groupId>
-            <artifactId>solr-core</artifactId>
-            <version>${solr.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pulsar-io</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <properties>
+    <solr.version>8.11.1</solr.version>
+  </properties>
+  <artifactId>pulsar-io-solr</artifactId>
+  <name>Pulsar IO :: Solr</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.parent.groupId}</groupId>
+      <artifactId>pulsar-io-core</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-functions-instance</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.solr</groupId>
+      <artifactId>solr-solrj</artifactId>
+      <version>${solr.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.solr</groupId>
+      <artifactId>solr-core</artifactId>
+      <version>${solr.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pulsar-io/solr/src/main/resources/findbugsExclude.xml b/pulsar-io/solr/src/main/resources/findbugsExclude.xml
index f49ff86c90caf..47c3d73af5f06 100644
--- a/pulsar-io/solr/src/main/resources/findbugsExclude.xml
+++ b/pulsar-io/solr/src/main/resources/findbugsExclude.xml
@@ -1,22 +1,23 @@
-<!--
-
-    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.
-
--->
-<FindBugsFilter>
-</FindBugsFilter>
\ No newline at end of file
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    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.
+
+-->
+<FindBugsFilter>
+</FindBugsFilter>
diff --git a/pulsar-io/solr/src/test/resources/solr.xml b/pulsar-io/solr/src/test/resources/solr.xml
index 495a71f72f3f2..9ce4d37f4beef 100644
--- a/pulsar-io/solr/src/test/resources/solr.xml
+++ b/pulsar-io/solr/src/test/resources/solr.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,20 +20,19 @@
 
 -->
 <solr>
-    <solrcloud>
-        <str name="host">${host:}</str>
-        <int name="hostPort">${jetty.port:8983}</int>
-        <str name="hostContext">${hostContext:solr}</str>
-        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
-        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
-        <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
-        <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
-        <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
-        <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
-    </solrcloud>
-    <shardHandlerFactory name="shardHandlerFactory"
-                         class="HttpShardHandlerFactory">
-        <int name="socketTimeout">${socketTimeout:600000}</int>
-        <int name="connTimeout">${connTimeout:60000}</int>
-    </shardHandlerFactory>
-</solr>
\ No newline at end of file
+  <solrcloud>
+    <str name="host">${host:}</str>
+    <int name="hostPort">${jetty.port:8983}</int>
+    <str name="hostContext">${hostContext:solr}</str>
+    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
+    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
+    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
+    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
+    <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
+    <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
+  </solrcloud>
+  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
+    <int name="socketTimeout">${socketTimeout:600000}</int>
+    <int name="connTimeout">${connTimeout:60000}</int>
+  </shardHandlerFactory>
+</solr>
diff --git a/pulsar-io/twitter/pom.xml b/pulsar-io/twitter/pom.xml
index 8658e4f8f46f4..6bde63c8265ed 100644
--- a/pulsar-io/twitter/pom.xml
+++ b/pulsar-io/twitter/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,60 +19,48 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-io</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-io-twitter</artifactId>
   <name>Pulsar IO :: Twitter</name>
-
   <dependencies>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.twitter</groupId>
       <artifactId>hbc-core</artifactId>
       <version>${hbc-core.version}</version>
     </dependency>
-    
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
-    
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-    
     <dependency>
-       <groupId>${project.groupId}</groupId>
-       <artifactId>pulsar-io-common</artifactId>
-       <version>${project.version}</version>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-io-common</artifactId>
+      <version>${project.version}</version>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -80,5 +69,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/pulsar-metadata/pom.xml b/pulsar-metadata/pom.xml
index 12b594e68ea3e..7a30434c326db 100644
--- a/pulsar-metadata/pom.xml
+++ b/pulsar-metadata/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,26 +19,22 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-metadata</artifactId>
   <name>Pulsar Metadata</name>
   <dependencies>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
@@ -56,13 +53,11 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-core</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
@@ -94,42 +89,33 @@
       <artifactId>snappy-java</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.etcd</groupId>
       <artifactId>jetcd-core</artifactId>
     </dependency>
-
-
     <dependency>
       <groupId>io.etcd</groupId>
       <artifactId>jetcd-test</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.ben-manes.caffeine</groupId>
       <artifactId>caffeine</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -149,7 +135,6 @@
           </execution>
         </executions>
       </plugin>
-      
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/pulsar-metadata/src/main/resources/findbugsExclude.xml b/pulsar-metadata/src/main/resources/findbugsExclude.xml
index 21578b9f8cb5c..d6eb8623eb73e 100644
--- a/pulsar-metadata/src/main/resources/findbugsExclude.xml
+++ b/pulsar-metadata/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +20,16 @@
 
 -->
 <FindBugsFilter>
-    <Match>
-        <Bug pattern="EI_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Bug pattern="EI_EXPOSE_REP2"/>
-    </Match>
-    <Match>
-        <Bug pattern="MS_EXPOSE_REP"/>
-    </Match>
-    <Match>
-        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
-    </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Bug pattern="MS_EXPOSE_REP"/>
+  </Match>
+  <Match>
+    <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
+  </Match>
 </FindBugsFilter>
diff --git a/pulsar-metadata/src/test/resources/findbugsExclude.xml b/pulsar-metadata/src/test/resources/findbugsExclude.xml
index e40b2a0fd9a12..bf075c39791cf 100644
--- a/pulsar-metadata/src/test/resources/findbugsExclude.xml
+++ b/pulsar-metadata/src/test/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,12 +20,12 @@
 
 -->
 <FindBugsFilter>
-    <Match>
-        <Class name="org.apache.pulsar.metadata.api.GetResult" />
-        <Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2" />
-    </Match>
-    <Match>
-        <Class name="org.apache.pulsar.metadata.impl.batching.OpPut" />
-        <Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2" />
-    </Match>
-</FindBugsFilter>
\ No newline at end of file
+  <Match>
+    <Class name="org.apache.pulsar.metadata.api.GetResult"/>
+    <Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
+  </Match>
+  <Match>
+    <Class name="org.apache.pulsar.metadata.impl.batching.OpPut"/>
+    <Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2"/>
+  </Match>
+</FindBugsFilter>
diff --git a/pulsar-package-management/bookkeeper-storage/pom.xml b/pulsar-package-management/bookkeeper-storage/pom.xml
index b6ce6cac887be..0788fc8fc8972 100644
--- a/pulsar-package-management/bookkeeper-storage/pom.xml
+++ b/pulsar-package-management/bookkeeper-storage/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,90 +19,78 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>pulsar-package-management</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>pulsar-package-bookkeeper-storage</artifactId>
-    <name>Apache Pulsar :: Package Management :: BookKeeper Storage</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-package-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.distributedlog</groupId>
-            <artifactId>distributedlog-core</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>net.jpountz.lz4</groupId>
-                    <artifactId>lz4</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.zookeeper</groupId>
-            <artifactId>zookeeper</artifactId>
-            <classifier>tests</classifier>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-classic</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.netty</groupId>
-                    <artifactId>netty-tcnative</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- zookeeper server -->
-        <dependency>
-            <groupId>io.dropwizard.metrics</groupId>
-            <artifactId>metrics-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- zookeeper server -->
-        <dependency>
-            <groupId>org.xerial.snappy</groupId>
-            <artifactId>snappy-java</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>managed-ledger</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>testmocks</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>pulsar-package-management</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>pulsar-package-bookkeeper-storage</artifactId>
+  <name>Apache Pulsar :: Package Management :: BookKeeper Storage</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-package-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.distributedlog</groupId>
+      <artifactId>distributedlog-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>net.jpountz.lz4</groupId>
+          <artifactId>lz4</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.zookeeper</groupId>
+      <artifactId>zookeeper</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.netty</groupId>
+          <artifactId>netty-tcnative</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- zookeeper server -->
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- zookeeper server -->
+    <dependency>
+      <groupId>org.xerial.snappy</groupId>
+      <artifactId>snappy-java</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>managed-ledger</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/pulsar-package-management/core/pom.xml b/pulsar-package-management/core/pom.xml
index 301f59a1c08cc..6e847bb7bab82 100644
--- a/pulsar-package-management/core/pom.xml
+++ b/pulsar-package-management/core/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,83 +19,75 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>pulsar-package-management</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>pulsar-package-core</artifactId>
-    <name>Apache Pulsar :: Package Management :: Core</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-admin-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <!-- This module is distributed with the Pulsar Admin Client -->
-                    <release>${pulsar.client.compiler.release}</release>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>17</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>pulsar-package-management</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>pulsar-package-core</artifactId>
+  <name>Apache Pulsar :: Package Management :: Core</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-admin-api</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <!-- This module is distributed with the Pulsar Admin Client -->
+          <release>${pulsar.client.compiler.release}</release>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>17</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-package-management/core/src/main/resources/findbugsExclude.xml b/pulsar-package-management/core/src/main/resources/findbugsExclude.xml
index 3a2e998dce984..bd8d2c4f77efa 100644
--- a/pulsar-package-management/core/src/main/resources/findbugsExclude.xml
+++ b/pulsar-package-management/core/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-package-management/filesystem-storage/pom.xml b/pulsar-package-management/filesystem-storage/pom.xml
index 1c4fc6fa86d02..c6ec047f31509 100644
--- a/pulsar-package-management/filesystem-storage/pom.xml
+++ b/pulsar-package-management/filesystem-storage/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,37 +19,30 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>pulsar-package-management</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>pulsar-package-filesystem-storage</artifactId>
-    <name>Apache Pulsar :: Package Management :: Filesystem Storage</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-package-core</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>testmocks</artifactId>
-            <version>${project.parent.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>pulsar-package-management</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>pulsar-package-filesystem-storage</artifactId>
+  <name>Apache Pulsar :: Package Management :: Filesystem Storage</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-package-core</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/pulsar-package-management/pom.xml b/pulsar-package-management/pom.xml
index d4adb0b9de833..57a02dfcfbcff 100644
--- a/pulsar-package-management/pom.xml
+++ b/pulsar-package-management/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,42 +19,38 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>pulsar</artifactId>
-        <groupId>org.apache.pulsar</groupId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>pulsar-package-management</artifactId>
-    <packaging>pom</packaging>
-    <name>Apache Pulsar :: Package Management</name>
-    <modules>
-        <module>core</module>
-        <module>bookkeeper-storage</module>
-        <module>filesystem-storage</module>
-    </modules>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>pulsar</artifactId>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>pulsar-package-management</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache Pulsar :: Package Management</name>
+  <modules>
+    <module>core</module>
+    <module>bookkeeper-storage</module>
+    <module>filesystem-storage</module>
+  </modules>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-proxy/pom.xml b/pulsar-proxy/pom.xml
index 5a1b7aac7f950..42fb7604947eb 100644
--- a/pulsar-proxy/pom.xml
+++ b/pulsar-proxy/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,175 +19,143 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-proxy</artifactId>
   <name>Pulsar Proxy</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-docs-tools</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-websocket</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-alpn-conscrypt-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlets</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-proxy</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.media</groupId>
       <artifactId>jersey-media-json-jackson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.inject</groupId>
       <artifactId>jersey-hk2</artifactId>
     </dependency>
-
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.sun.activation</groupId>
       <artifactId>javax.activation</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_hotspot</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.prometheus</groupId>
       <artifactId>simpleclient_jetty</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.github.seancfoley</groupId>
       <artifactId>ipaddress</artifactId>
@@ -295,5 +264,4 @@
       </build>
     </profile>
   </profiles>
-
 </project>
diff --git a/pulsar-sql/pom.xml b/pulsar-sql/pom.xml
index 622b6ebcdb822..03978df5bd18e 100644
--- a/pulsar-sql/pom.xml
+++ b/pulsar-sql/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,158 +19,147 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>pom</packaging>
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-sql</artifactId>
-    <name>Pulsar SQL :: Parent</name>
-
-    <properties>
-        <!-- keep using okhttp3 3.x for Presto -->
-        <okhttp3.version>3.14.9</okhttp3.version>
-        <!-- use okio version that matches the okhttp3 version -->
-        <okio.version>1.17.2</okio.version>
-        <airlift.version>213</airlift.version>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <!-- keep using okhttp3 3.x for Presto -->
-            <dependency>
-                <groupId>com.squareup.okhttp3</groupId>
-                <artifactId>okhttp</artifactId>
-                <version>${okhttp3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.squareup.okhttp3</groupId>
-                <artifactId>okhttp-urlconnection</artifactId>
-                <version>${okhttp3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.squareup.okhttp3</groupId>
-                <artifactId>logging-interceptor</artifactId>
-                <version>${okhttp3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.squareup.okio</groupId>
-                <artifactId>okio</artifactId>
-                <version>${okio.version}</version>
-            </dependency>
-
-            <!-- force specific version of jline, see https://github.com/scala/scala/pull/9807 -->
-            <dependency>
-                <groupId>org.jline</groupId>
-                <artifactId>jline-reader</artifactId>
-                <version>${jline3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jline</groupId>
-                <artifactId>jline-terminal</artifactId>
-                <version>${jline3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jline</groupId>
-                <artifactId>jline-terminal-jna</artifactId>
-                <version>${jline3.version}</version>
-            </dependency>
-
-            <!-- force specific version of slf4j -->
-            <dependency>
-                <groupId>org.slf4j</groupId>
-                <artifactId>log4j-over-slf4j</artifactId>
-                <version>${slf4j.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.slf4j</groupId>
-                <artifactId>slf4j-jdk14</artifactId>
-                <version>${slf4j.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>io.airlift</groupId>
-                <artifactId>bom</artifactId>
-                <version>${airlift.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>main</id>
-            <activation>
-                <property>
-                    <name>disableSqlMainProfile</name>
-                    <!-- always active unless true is passed as a value -->
-                    <value>!true</value>
-                </property>
-            </activation>
-            <modules>
-                <module>presto-pulsar</module>
-                <module>presto-pulsar-plugin</module>
-                <module>presto-distribution</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>pulsar-sql-tests</id>
-            <modules>
-                <module>presto-pulsar</module>
-                <module>presto-pulsar-plugin</module>
-                <module>presto-distribution</module>
-            </modules>
-        </profile>
-        <!--
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <packaging>pom</packaging>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-sql</artifactId>
+  <name>Pulsar SQL :: Parent</name>
+  <properties>
+    <!-- keep using okhttp3 3.x for Presto -->
+    <okhttp3.version>3.14.9</okhttp3.version>
+    <!-- use okio version that matches the okhttp3 version -->
+    <okio.version>1.17.2</okio.version>
+    <airlift.version>213</airlift.version>
+  </properties>
+  <dependencyManagement>
+    <dependencies>
+      <!-- keep using okhttp3 3.x for Presto -->
+      <dependency>
+        <groupId>com.squareup.okhttp3</groupId>
+        <artifactId>okhttp</artifactId>
+        <version>${okhttp3.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.squareup.okhttp3</groupId>
+        <artifactId>okhttp-urlconnection</artifactId>
+        <version>${okhttp3.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.squareup.okhttp3</groupId>
+        <artifactId>logging-interceptor</artifactId>
+        <version>${okhttp3.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.squareup.okio</groupId>
+        <artifactId>okio</artifactId>
+        <version>${okio.version}</version>
+      </dependency>
+      <!-- force specific version of jline, see https://github.com/scala/scala/pull/9807 -->
+      <dependency>
+        <groupId>org.jline</groupId>
+        <artifactId>jline-reader</artifactId>
+        <version>${jline3.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.jline</groupId>
+        <artifactId>jline-terminal</artifactId>
+        <version>${jline3.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.jline</groupId>
+        <artifactId>jline-terminal-jna</artifactId>
+        <version>${jline3.version}</version>
+      </dependency>
+      <!-- force specific version of slf4j -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>log4j-over-slf4j</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-jdk14</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.airlift</groupId>
+        <artifactId>bom</artifactId>
+        <version>${airlift.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>main</id>
+      <activation>
+        <property>
+          <name>disableSqlMainProfile</name>
+          <!-- always active unless true is passed as a value -->
+          <value>!true</value>
+        </property>
+      </activation>
+      <modules>
+        <module>presto-pulsar</module>
+        <module>presto-pulsar-plugin</module>
+        <module>presto-distribution</module>
+      </modules>
+    </profile>
+    <profile>
+      <id>pulsar-sql-tests</id>
+      <modules>
+        <module>presto-pulsar</module>
+        <module>presto-pulsar-plugin</module>
+        <module>presto-distribution</module>
+      </modules>
+    </profile>
+    <!--
         The only working way for OWASP dependency checker plugin
         to exclude module when failBuildOnCVSS is used
         in the root pom's plugin.
         -->
-        <profile>
-            <id>owasp-dependency-check</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.owasp</groupId>
-                        <artifactId>dependency-check-maven</artifactId>
-                        <version>${dependency-check-maven.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>aggregate</goal>
-                                </goals>
-                                <phase>none</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
+    <profile>
+      <id>owasp-dependency-check</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.owasp</groupId>
+            <artifactId>dependency-check-maven</artifactId>
+            <version>${dependency-check-maven.version}</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/pulsar-sql/presto-distribution/pom.xml b/pulsar-sql/presto-distribution/pom.xml
index 2ccde8ec02d1a..22c2331c64897 100644
--- a/pulsar-sql/presto-distribution/pom.xml
+++ b/pulsar-sql/presto-distribution/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,19 +19,15 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar-sql</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-presto-distribution</artifactId>
   <name>Pulsar SQL :: Pulsar Presto Distribution</name>
-
   <properties>
     <skipBuildDistribution>false</skipBuildDistribution>
     <jersey.version>2.34</jersey.version>
@@ -42,7 +39,6 @@
     <errorprone.version>2.5.1</errorprone.version>
     <javax.servlet-api>4.0.1</javax.servlet-api>
   </properties>
-
   <dependencies>
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
@@ -74,7 +70,6 @@
       <artifactId>jersey-client</artifactId>
       <version>${jersey.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.trino</groupId>
       <artifactId>trino-server-main</artifactId>
@@ -103,13 +98,11 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>io.trino</groupId>
       <artifactId>trino-cli</artifactId>
       <version>${trino.version}</version>
     </dependency>
-
     <dependency>
       <groupId>io.airlift</groupId>
       <artifactId>launcher</artifactId>
@@ -117,7 +110,6 @@
       <type>tar.gz</type>
       <classifier>bin</classifier>
     </dependency>
-
     <dependency>
       <groupId>io.airlift</groupId>
       <artifactId>launcher</artifactId>
@@ -125,13 +117,11 @@
       <type>tar.gz</type>
       <classifier>properties</classifier>
     </dependency>
-
     <dependency>
       <groupId>org.objenesis</groupId>
       <artifactId>objenesis</artifactId>
       <version>${objenesis.version}</version>
     </dependency>
-
     <dependency>
       <groupId>com.twitter.common</groupId>
       <artifactId>objectsize</artifactId>
@@ -143,56 +133,44 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <!-- jackson dependencies -->
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-joda</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-guava</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-jdk8</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.datatype</groupId>
       <artifactId>jackson-datatype-jsr310</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-smile</artifactId>
     </dependency>
-
   </dependencies>
-
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -205,7 +183,6 @@
         <artifactId>netty</artifactId>
         <version>3.10.6.Final</version>
       </dependency>
-
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-core</artifactId>
@@ -295,7 +272,6 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
-
   <build>
     <plugins>
       <plugin>
@@ -305,7 +281,6 @@
           <skip>${skipBuildDistribution}</skip>
         </configuration>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
@@ -329,7 +304,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.mycila</groupId>
         <artifactId>license-maven-plugin</artifactId>
@@ -354,7 +328,6 @@
       </extension>
     </extensions>
   </build>
-
   <profiles>
     <profile>
       <id>skipBuildDistributionDisabled</id>
diff --git a/pulsar-sql/presto-distribution/src/assembly/assembly.xml b/pulsar-sql/presto-distribution/src/assembly/assembly.xml
index 96c0421c71515..8439d60ba339e 100644
--- a/pulsar-sql/presto-distribution/src/assembly/assembly.xml
+++ b/pulsar-sql/presto-distribution/src/assembly/assembly.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,64 +19,62 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
-    <id>bin</id>
-    <formats>
-        <format>tar.gz</format>
-        <format>dir</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <files>
-        <file>
-            <source>${basedir}/LICENSE</source>
-            <destName>LICENSE</destName>
-            <outputDirectory>.</outputDirectory>
-            <fileMode>644</fileMode>
-        </file>
-        <file>
-            <source>${basedir}/src/main/resources/launcher.properties</source>
-            <destName>launcher.properties</destName>
-            <outputDirectory>bin/</outputDirectory>
-            <fileMode>644</fileMode>
-        </file>
-    </files>
-    <fileSets>
-        <fileSet>
-            <directory>${basedir}/../presto-pulsar-plugin/target/pulsar-presto-connector/</directory>
-            <outputDirectory>plugin/</outputDirectory>
-        </fileSet>
-        <fileSet>
-            <directory>${basedir}/src/main/resources/conf/</directory>
-            <outputDirectory>conf/</outputDirectory>
-        </fileSet>
-    </fileSets>
-    <dependencySets>
-        <dependencySet>
-            <outputDirectory>lib/</outputDirectory>
-            <useProjectArtifact>true</useProjectArtifact>
-            <scope>runtime</scope>
-            <excludes>
-                <exclude>io.airlift:launcher:tar.gz:bin:${airlift.version}</exclude>
-                <exclude>io.airlift:launcher:tar.gz:properties:${airlift.version}</exclude>
-                <exclude>*:tar.gz</exclude>
-            </excludes>
-        </dependencySet>
-        <dependencySet>
-            <outputDirectory></outputDirectory>
-            <includes>
-                <include>io.airlift:launcher:tar.gz:bin:${airlift.version}</include>
-            </includes>
-            <unpack>true</unpack>
-            <fileMode>755</fileMode>
-        </dependencySet>
-        <dependencySet>
-            <outputDirectory></outputDirectory>
-            <includes>
-                <include>io.airlift:launcher:tar.gz:properties:${airlift.version}</include>
-            </includes>
-            <unpack>true</unpack>
-        </dependencySet>
-    </dependencySets>
-</assembly>
\ No newline at end of file
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+  <id>bin</id>
+  <formats>
+    <format>tar.gz</format>
+    <format>dir</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <files>
+    <file>
+      <source>${basedir}/LICENSE</source>
+      <destName>LICENSE</destName>
+      <outputDirectory>.</outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>${basedir}/src/main/resources/launcher.properties</source>
+      <destName>launcher.properties</destName>
+      <outputDirectory>bin/</outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+  </files>
+  <fileSets>
+    <fileSet>
+      <directory>${basedir}/../presto-pulsar-plugin/target/pulsar-presto-connector/</directory>
+      <outputDirectory>plugin/</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/resources/conf/</directory>
+      <outputDirectory>conf/</outputDirectory>
+    </fileSet>
+  </fileSets>
+  <dependencySets>
+    <dependencySet>
+      <outputDirectory>lib/</outputDirectory>
+      <useProjectArtifact>true</useProjectArtifact>
+      <scope>runtime</scope>
+      <excludes>
+        <exclude>io.airlift:launcher:tar.gz:bin:${airlift.version}</exclude>
+        <exclude>io.airlift:launcher:tar.gz:properties:${airlift.version}</exclude>
+        <exclude>*:tar.gz</exclude>
+      </excludes>
+    </dependencySet>
+    <dependencySet>
+      <outputDirectory/>
+      <includes>
+        <include>io.airlift:launcher:tar.gz:bin:${airlift.version}</include>
+      </includes>
+      <unpack>true</unpack>
+      <fileMode>755</fileMode>
+    </dependencySet>
+    <dependencySet>
+      <outputDirectory/>
+      <includes>
+        <include>io.airlift:launcher:tar.gz:properties:${airlift.version}</include>
+      </includes>
+      <unpack>true</unpack>
+    </dependencySet>
+  </dependencySets>
+</assembly>
diff --git a/pulsar-sql/presto-pulsar-plugin/pom.xml b/pulsar-sql/presto-pulsar-plugin/pom.xml
index b5ead3d476c36..789761a0be2a9 100644
--- a/pulsar-sql/presto-pulsar-plugin/pom.xml
+++ b/pulsar-sql/presto-pulsar-plugin/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,61 +19,77 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-sql</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-presto-connector</artifactId>
-    <name>Pulsar SQL :: Pulsar Presto Connector</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-presto-connector-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>bouncy-castle-bc</artifactId>
-            <version>${project.version}</version>
-            <classifier>pkg</classifier>
-            <optional>true</optional>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>3.3.0</version>
-                <configuration>
-                    <appendAssemblyId>false</appendAssemblyId>
-                    <attach>true</attach>
-                    <tarLongFileMode>posix</tarLongFileMode>
-                    <descriptors>
-                        <descriptor>src/assembly/assembly.xml</descriptor>
-                    </descriptors>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>package</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-sql</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-presto-connector</artifactId>
+  <name>Pulsar SQL :: Pulsar Presto Connector</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-presto-connector-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>bouncy-castle-bc</artifactId>
+      <version>${project.version}</version>
+      <classifier>pkg</classifier>
+      <optional>true</optional>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>3.3.0</version>
+        <configuration>
+          <appendAssemblyId>false</appendAssemblyId>
+          <attach>true</attach>
+          <tarLongFileMode>posix</tarLongFileMode>
+          <descriptors>
+            <descriptor>src/assembly/assembly.xml</descriptor>
+          </descriptors>
+        </configuration>
+        <executions>
+          <execution>
+            <id>package</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.2.0</version>
+        <executions>
+          <execution>
+            <id>default-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>javadoc-jar</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+            <configuration>
+              <classifier>javadoc</classifier>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-sql/presto-pulsar-plugin/src/assembly/assembly.xml b/pulsar-sql/presto-pulsar-plugin/src/assembly/assembly.xml
index 6650abfda3fc3..649baf7318003 100644
--- a/pulsar-sql/presto-pulsar-plugin/src/assembly/assembly.xml
+++ b/pulsar-sql/presto-pulsar-plugin/src/assembly/assembly.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,22 +19,20 @@
     under the License.
 
 -->
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
-    <id>bin</id>
-    <formats>
-        <format>tar.gz</format>
-        <format>dir</format>
-    </formats>
-    <dependencySets>
-        <dependencySet>
-            <outputDirectory>/</outputDirectory>
-            <useProjectArtifact>false</useProjectArtifact>
-            <scope>runtime</scope>
-            <excludes>
-              <exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
-            </excludes>
-        </dependencySet>
-    </dependencySets>
-</assembly>
\ No newline at end of file
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+  <id>bin</id>
+  <formats>
+    <format>tar.gz</format>
+    <format>dir</format>
+  </formats>
+  <dependencySets>
+    <dependencySet>
+      <outputDirectory>/</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <scope>runtime</scope>
+      <excludes>
+        <exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
+      </excludes>
+    </dependencySet>
+  </dependencySets>
+</assembly>
diff --git a/pulsar-sql/presto-pulsar/pom.xml b/pulsar-sql/presto-pulsar/pom.xml
index 461d8811ab97a..6a501883ab61e 100644
--- a/pulsar-sql/presto-pulsar/pom.xml
+++ b/pulsar-sql/presto-pulsar/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,243 +19,214 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-sql</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-presto-connector-original</artifactId>
-    <description>Pulsar SQL - Pulsar Presto Connector</description>
-    <name>Pulsar SQL :: Pulsar Presto Connector Packaging</name>
-
-    <properties>
-        <jctools.version>2.1.2</jctools.version>
-        <dslJson.verson>1.8.4</dslJson.verson>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>io.airlift</groupId>
-            <artifactId>bootstrap</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.logging.log4j</groupId>
-                    <artifactId>log4j-to-slf4j</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>io.airlift</groupId>
-            <artifactId>json</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-client-admin-original</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>managed-ledger</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.jctools</groupId>
-            <artifactId>jctools-core</artifactId>
-            <version>${jctools.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.dslplatform</groupId>
-            <artifactId>dsl-json</artifactId>
-            <version>${dslJson.verson}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.trino</groupId>
-            <artifactId>trino-plugin-toolkit</artifactId>
-            <version>${trino.version}</version>
-        </dependency>
-
-        <!-- Presto SPI -->
-        <dependency>
-            <groupId>io.trino</groupId>
-            <artifactId>trino-spi</artifactId>
-            <version>${trino.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>joda-time</groupId>
-          <artifactId>joda-time</artifactId>
-          <version>${joda.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.trino</groupId>
-            <artifactId>trino-record-decoder</artifactId>
-            <version>${trino.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-            <version>${javax.annotation-api.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.jsonwebtoken</groupId>
-            <artifactId>jjwt-impl</artifactId>
-            <version>${jsonwebtoken.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>io.trino</groupId>
-            <artifactId>trino-main</artifactId>
-            <version>${trino.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>io.trino</groupId>
-            <artifactId>trino-testing</artifactId>
-            <version>${trino.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.apache.pulsar</groupId>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-sql</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-presto-connector-original</artifactId>
+  <description>Pulsar SQL - Pulsar Presto Connector</description>
+  <name>Pulsar SQL :: Pulsar Presto Connector Packaging</name>
+  <properties>
+    <jctools.version>2.1.2</jctools.version>
+    <dslJson.verson>1.8.4</dslJson.verson>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>io.airlift</groupId>
+      <artifactId>bootstrap</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-to-slf4j</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>io.airlift</groupId>
+      <artifactId>json</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-admin-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>managed-ledger</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jctools</groupId>
+      <artifactId>jctools-core</artifactId>
+      <version>${jctools.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.dslplatform</groupId>
+      <artifactId>dsl-json</artifactId>
+      <version>${dslJson.verson}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.trino</groupId>
+      <artifactId>trino-plugin-toolkit</artifactId>
+      <version>${trino.version}</version>
+    </dependency>
+    <!-- Presto SPI -->
+    <dependency>
+      <groupId>io.trino</groupId>
+      <artifactId>trino-spi</artifactId>
+      <version>${trino.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+      <version>${joda.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.trino</groupId>
+      <artifactId>trino-record-decoder</artifactId>
+      <version>${trino.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+      <version>${javax.annotation-api.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.jsonwebtoken</groupId>
+      <artifactId>jjwt-impl</artifactId>
+      <version>${jsonwebtoken.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.trino</groupId>
+      <artifactId>trino-main</artifactId>
+      <version>${trino.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.trino</groupId>
+      <artifactId>trino-testing</artifactId>
+      <version>${trino.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-broker</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-http</artifactId>
+      <version>${jetty.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>${shadePluginPhase}</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>true</createDependencyReducedPom>
+              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+              <artifactSet>
+                <includes>
+                  <include>io.streamnative:pulsar-client-original</include>
+                  <include>io.streamnative:pulsar-client-admin-original</include>
+                  <include>io.streamnative:managed-ledger</include>
+                  <include>io.streamnative:pulsar-metadata</include>
+                  <include>org.glassfish.jersey*:*</include>
+                  <include>javax.ws.rs:*</include>
+                  <include>javax.annotation:*</include>
+                  <include>org.glassfish.hk2*:*</include>
+                  <include>org.eclipse.jetty:*</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>io.streamnative:pulsar-client-original</artifact>
+                  <includes>
+                    <include>**</include>
+                  </includes>
+                  <excludes>
+                    <!-- bouncycastle jars could not be shaded, or the signatures will be wrong-->
+                    <exclude>org/bouncycastle/**</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+              <relocations>
+                <relocation>
+                  <pattern>org.glassfish</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.glassfish</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.ws</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.javax.ws</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>javax.annotation</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.javax.annotation</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>jersey</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.jersey</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.eclipse.jetty</pattern>
+                  <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
+                </relocation>
+              </relocations>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
+              </transformers>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <!-- enables builds with -Dmaven.test.skip=true -->
+      <id>test-jar-dependencies</id>
+      <activation>
+        <property>
+          <name>maven.test.skip</name>
+          <value>!true</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>${project.groupId}</groupId>
           <artifactId>pulsar-broker</artifactId>
           <version>${project.version}</version>
+          <type>test-jar</type>
           <scope>test</scope>
         </dependency>
-
-        <dependency>
-          <groupId>org.apache.pulsar</groupId>
-          <artifactId>testmocks</artifactId>
-          <version>${project.version}</version>
-          <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.eclipse.jetty</groupId>
-          <artifactId>jetty-http</artifactId>
-          <version>${jetty.version}</version>
-          <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>${shadePluginPhase}</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <createDependencyReducedPom>true</createDependencyReducedPom>
-                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
-
-                            <artifactSet>
-                                <includes>
-                                    <include>org.apache.pulsar:pulsar-client-original</include>
-                                    <include>org.apache.pulsar:pulsar-client-admin-original</include>
-                                    <include>org.apache.pulsar:managed-ledger</include>
-                                    <include>org.apache.pulsar:pulsar-metadata</include>
-
-                                    <include>org.glassfish.jersey*:*</include>
-                                    <include>javax.ws.rs:*</include>
-                                    <include>javax.annotation:*</include>
-                                    <include>org.glassfish.hk2*:*</include>
-
-                                    <include>org.eclipse.jetty:*</include>
-
-                                </includes>
-                            </artifactSet>
-                            <filters>
-                                <filter>
-                                    <artifact>org.apache.pulsar:pulsar-client-original</artifact>
-                                    <includes>
-                                        <include>**</include>
-                                    </includes>
-                                    <excludes>
-                                        <!-- bouncycastle jars could not be shaded, or the signatures will be wrong-->
-                                        <exclude>org/bouncycastle/**</exclude>
-                                    </excludes>
-                                </filter>
-                            </filters>
-                            <relocations>
-                                <relocation>
-                                    <pattern>org.glassfish</pattern>
-                                    <shadedPattern>org.apache.pulsar.shade.org.glassfish</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.ws</pattern>
-                                    <shadedPattern>org.apache.pulsar.shade.javax.ws</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.annotation</pattern>
-                                    <shadedPattern>org.apache.pulsar.shade.javax.annotation</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>jersey</pattern>
-                                    <shadedPattern>org.apache.pulsar.shade.jersey</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>org.eclipse.jetty</pattern>
-                                    <shadedPattern>org.apache.pulsar.shade.org.eclipse.jetty</shadedPattern>
-                                </relocation>
-
-                            </relocations>
-                            <transformers>
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer" />
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <!-- enables builds with -Dmaven.test.skip=true -->
-            <id>test-jar-dependencies</id>
-            <activation>
-                <property>
-                    <name>maven.test.skip</name>
-                    <value>!true</value>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>${project.groupId}</groupId>
-                    <artifactId>pulsar-broker</artifactId>
-                    <version>${project.version}</version>
-                    <type>test-jar</type>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
+      </dependencies>
+    </profile>
+  </profiles>
 </project>
diff --git a/pulsar-testclient/pom.xml b/pulsar-testclient/pom.xml
index 1105af3a1f462..6b2ccd31ce618 100644
--- a/pulsar-testclient/pom.xml
+++ b/pulsar-testclient/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,164 +19,145 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.pulsar</groupId>
-		<artifactId>pulsar</artifactId>
-		<version>3.1.2</version>
-		<relativePath>..</relativePath>
-	</parent>
-
-	<artifactId>pulsar-testclient</artifactId>
-	<name>Pulsar Test Client</name>
-	<description>Pulsar Test Client</description>
-
-	<dependencies>
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>testmocks</artifactId>
-			<version>${project.version}</version>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.zookeeper</groupId>
-			<artifactId>zookeeper</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>ch.qos.logback</groupId>
-					<artifactId>logback-core</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>ch.qos.logback</groupId>
-					<artifactId>logback-classic</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>io.netty</groupId>
-					<artifactId>netty-tcnative</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>pulsar-client-admin-original</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>pulsar-client-original</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>pulsar-client-messagecrypto-bc</artifactId>
-			<version>${project.version}</version>
-			<optional>true</optional>
-		</dependency>
-
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>pulsar-broker</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>commons-configuration</groupId>
-			<artifactId>commons-configuration</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.beust</groupId>
-			<artifactId>jcommander</artifactId>
-			<scope>compile</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.hdrhistogram</groupId>
-			<artifactId>HdrHistogram</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.awaitility</groupId>
-			<artifactId>awaitility</artifactId>
-			<scope>test</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>com.github.tomakehurst</groupId>
-			<artifactId>wiremock-jre8</artifactId>
-			<version>${wiremock.version}</version>
-			<scope>test</scope>
-		</dependency>
-
-
-	</dependencies>
-
-	<profiles>
-		<profile>
-			<!-- enables builds with -Dmaven.test.skip=true -->
-			<id>test-jar-dependencies</id>
-			<activation>
-				<property>
-					<name>maven.test.skip</name>
-					<value>!true</value>
-				</property>
-			</activation>
-			<dependencies>
-				<dependency>
-					<groupId>${project.groupId}</groupId>
-					<artifactId>pulsar-broker</artifactId>
-					<version>${project.version}</version>
-					<type>test-jar</type>
-					<scope>test</scope>
-				</dependency>
-			</dependencies>
-		</profile>
-	</profiles>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.gaul</groupId>
-				<artifactId>modernizer-maven-plugin</artifactId>
-				<configuration>
-					<failOnViolations>true</failOnViolations>
-					<javaVersion>8</javaVersion>
-				</configuration>
-				<executions>
-					<execution>
-						<id>modernizer</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>modernizer</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-checkstyle-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>checkstyle</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>check</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>pulsar-testclient</artifactId>
+  <name>Pulsar Test Client</name>
+  <description>Pulsar Test Client</description>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.zookeeper</groupId>
+      <artifactId>zookeeper</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.netty</groupId>
+          <artifactId>netty-tcnative</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-admin-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-original</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-client-messagecrypto-bc</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-broker</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-configuration</groupId>
+      <artifactId>commons-configuration</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.beust</groupId>
+      <artifactId>jcommander</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.hdrhistogram</groupId>
+      <artifactId>HdrHistogram</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.github.tomakehurst</groupId>
+      <artifactId>wiremock-jre8</artifactId>
+      <version>${wiremock.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <profiles>
+    <profile>
+      <!-- enables builds with -Dmaven.test.skip=true -->
+      <id>test-jar-dependencies</id>
+      <activation>
+        <property>
+          <name>maven.test.skip</name>
+          <value>!true</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>${project.groupId}</groupId>
+          <artifactId>pulsar-broker</artifactId>
+          <version>${project.version}</version>
+          <type>test-jar</type>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+  </profiles>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>8</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-transaction/common/pom.xml b/pulsar-transaction/common/pom.xml
index b1906851f6579..d504981d882c8 100644
--- a/pulsar-transaction/common/pom.xml
+++ b/pulsar-transaction/common/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,48 +19,43 @@
     under the License.
 
 -->
-<project
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-transaction-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-transaction-common</artifactId>
-    <name>Pulsar Transaction :: Common </name>
-
-    <dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-transaction-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-transaction-common</artifactId>
+  <name>Pulsar Transaction :: Common </name>
+  <dependencies>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>8</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>8</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-transaction/common/src/main/resources/findbugsExclude.xml b/pulsar-transaction/common/src/main/resources/findbugsExclude.xml
index 07f4609cfff29..47c3d73af5f06 100644
--- a/pulsar-transaction/common/src/main/resources/findbugsExclude.xml
+++ b/pulsar-transaction/common/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-transaction/coordinator/pom.xml b/pulsar-transaction/coordinator/pom.xml
index 8ee27f3c4d800..9fb847db4e1ff 100644
--- a/pulsar-transaction/coordinator/pom.xml
+++ b/pulsar-transaction/coordinator/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,112 +19,100 @@
     under the License.
 
 -->
-<project
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>pulsar-transaction-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-transaction-coordinator</artifactId>
-    <name>Pulsar Transaction :: Coordinator</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>managed-ledger</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>testmocks</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.awaitility</groupId>
-            <artifactId>awaitility</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-    
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.gaul</groupId>
-                <artifactId>modernizer-maven-plugin</artifactId>
-                <configuration>
-                    <failOnViolations>true</failOnViolations>
-                    <javaVersion>8</javaVersion>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>modernizer</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>modernizer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>properties-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>initialize</phase>
-                        <goals>
-                            <goal>set-system-properties</goal>
-                        </goals>
-                        <configuration>
-                            <properties>
-                                <property>
-                                    <name>proto_path</name>
-                                    <value>${project.parent.parent.basedir}</value>
-                                </property>
-                                <property>
-                                    <name>proto_search_strategy</name>
-                                    <value>2</value>
-                                </property>
-                            </properties>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.github.splunk.lightproto</groupId>
-                <artifactId>lightproto-maven-plugin</artifactId>
-                <version>${lightproto-maven-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>pulsar-transaction-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-transaction-coordinator</artifactId>
+  <name>Pulsar Transaction :: Coordinator</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>managed-ledger</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.gaul</groupId>
+        <artifactId>modernizer-maven-plugin</artifactId>
+        <configuration>
+          <failOnViolations>true</failOnViolations>
+          <javaVersion>8</javaVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <id>modernizer</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>modernizer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>properties-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>initialize</phase>
+            <goals>
+              <goal>set-system-properties</goal>
+            </goals>
+            <configuration>
+              <properties>
+                <property>
+                  <name>proto_path</name>
+                  <value>${project.parent.parent.basedir}</value>
+                </property>
+                <property>
+                  <name>proto_search_strategy</name>
+                  <value>2</value>
+                </property>
+              </properties>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.splunk.lightproto</groupId>
+        <artifactId>lightproto-maven-plugin</artifactId>
+        <version>${lightproto-maven-plugin.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/pulsar-transaction/coordinator/src/main/resources/findbugsExclude.xml b/pulsar-transaction/coordinator/src/main/resources/findbugsExclude.xml
index a81fce11f4d21..f1cad02b28a88 100644
--- a/pulsar-transaction/coordinator/src/main/resources/findbugsExclude.xml
+++ b/pulsar-transaction/coordinator/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/pulsar-transaction/pom.xml b/pulsar-transaction/pom.xml
index 5f71a431e76d9..569be25706d4b 100644
--- a/pulsar-transaction/pom.xml
+++ b/pulsar-transaction/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,28 +19,22 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>pulsar-transaction-parent</artifactId>
   <name>Pulsar Transaction :: Parent</name>
-
   <modules>
     <module>common</module>
     <module>coordinator</module>
   </modules>
-
   <build>
-
     <plugins>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -68,7 +63,5 @@
         </executions>
       </plugin>
     </plugins>
-
   </build>
-
 </project>
diff --git a/pulsar-websocket/pom.xml b/pulsar-websocket/pom.xml
index 5b08a8e541231..3bcc01df33b97 100644
--- a/pulsar-websocket/pom.xml
+++ b/pulsar-websocket/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,40 +19,33 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>pulsar-websocket</artifactId>
   <name>Pulsar WebSocket</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-broker-common</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>managed-ledger</artifactId>
       <version>${project.parent.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-docs-tools</artifactId>
@@ -63,57 +57,48 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.containers</groupId>
       <artifactId>jersey-container-servlet</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.glassfish.jersey.inject</groupId>
       <artifactId>jersey-hk2</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-
     <dependency>
       <groupId>io.swagger</groupId>
       <artifactId>swagger-core</artifactId>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
-
-		<!-- To write basic websockets against -->
+    <!-- To write basic websockets against -->
     <dependency>
       <groupId>org.eclipse.jetty.websocket</groupId>
       <artifactId>websocket-api</artifactId>
       <version>${jetty.version}</version>
     </dependency>
-
-		<!-- To run websockets in embedded server -->
+    <!-- To run websockets in embedded server -->
     <dependency>
       <groupId>org.eclipse.jetty.websocket</groupId>
       <artifactId>websocket-server</artifactId>
       <version>${jetty.version}</version>
     </dependency>
-		<!-- To run javax.websocket client -->
+    <!-- To run javax.websocket client -->
     <dependency>
       <groupId>org.eclipse.jetty.websocket</groupId>
       <artifactId>javax-websocket-client-impl</artifactId>
@@ -128,9 +113,7 @@
       <groupId>org.hdrhistogram</groupId>
       <artifactId>HdrHistogram</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -150,7 +133,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
@@ -168,7 +150,6 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
diff --git a/pulsar-websocket/src/main/resources/findbugsExclude.xml b/pulsar-websocket/src/main/resources/findbugsExclude.xml
index c96e63cdfccee..e8f324925188b 100644
--- a/pulsar-websocket/src/main/resources/findbugsExclude.xml
+++ b/pulsar-websocket/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -32,7 +33,6 @@
     <Class name="org.apache.pulsar.websocket.stats.ProxyTopicStat$ProducerStats"/>
     <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
   </Match>
-
   <!-- ignore existing violations when the rule was enabled -->
   <Match>
     <Class name="org.apache.pulsar.websocket.AbstractWebSocketHandler"/>
@@ -204,4 +204,4 @@
     <Method name="getAuthorizationService"/>
     <Bug pattern="EI_EXPOSE_REP"/>
   </Match>
-</FindBugsFilter>
\ No newline at end of file
+</FindBugsFilter>
diff --git a/src/assembly-source-package.xml b/src/assembly-source-package.xml
index 00f00bfe3a5c7..bae52588edcf6 100644
--- a/src/assembly-source-package.xml
+++ b/src/assembly-source-package.xml
@@ -31,7 +31,7 @@
     <!-- main project directory structure -->
     <fileSet>
       <directory>.</directory>
-      <outputDirectory></outputDirectory>
+      <outputDirectory/>
       <useDefaultExcludes>true</useDefaultExcludes>
       <excludes>
         <!-- need special permissions -->
@@ -39,14 +39,11 @@
         <exclude>src/*.py</exclude>
         <exclude>docker/pulsar/scripts/*.sh</exclude>
         <exclude>docker/pulsar/scripts/*.py</exclude>
-
         <!-- Pulsar standalone -->
         <exclude>data/**</exclude>
         <exclude>logs/**</exclude>
-
         <!-- build output -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/).*${project.build.directory}.*]</exclude>
-
         <!-- NOTE: Most of the following excludes should not be required
              if the standard release process is followed. This is because the
              release plugin checks out project sources into a location like
@@ -58,7 +55,6 @@
              or generate a project website, it's definitely possible that some
              of these files will be present. So, it's safer to exclude them.
         -->
-
         <!-- IDEs -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?maven-eclipse\.xml]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.project]</exclude>
@@ -72,12 +68,10 @@
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.externalToolBuilders(/.*)?]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.deployables(/.*)?]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?\.wtpmodules(/.*)?]</exclude>
-
         <!-- misc -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?cobertura\.ser]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.versionsBackup]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?dependency-reduced-pom\.xml]</exclude>
-
         <!-- release-plugin temp files -->
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?pom\.xml\.releaseBackup]</exclude>
         <exclude>%regex[(?!((?!${project.build.directory}/)[^/]+/)*src/)(.*/)?release\.properties]</exclude>
@@ -86,7 +80,7 @@
     <!-- license, readme, etc. calculated at build time -->
     <fileSet>
       <directory>${project.build.directory}/maven-shared-archive-resources/META-INF</directory>
-      <outputDirectory></outputDirectory>
+      <outputDirectory/>
     </fileSet>
     <fileSet>
       <directory>src</directory>
diff --git a/src/check-binary-license.sh b/src/check-binary-license.sh
index 3a6d266345f30..9c6a4d3223a70 100755
--- a/src/check-binary-license.sh
+++ b/src/check-binary-license.sh
@@ -61,7 +61,7 @@ EXIT=0
 
 # Check all bundled jars are mentioned in LICENSE
 for J in $JARS; do
-    echo $J | grep -q "org.apache.pulsar"
+    echo $J | grep -q "io.streamnative"
     if [ $? == 0 ]; then
         continue
     fi
@@ -104,7 +104,7 @@ if [ "$NO_PRESTO" -ne 1 ]; then
 
 
     for J in $JARS; do
-        echo $J | grep -q "org.apache.pulsar"
+        echo $J | grep -q "io.streamnative"
         if [ $? == 0 ]; then
       continue
         fi
diff --git a/src/findbugs-exclude.xml b/src/findbugs-exclude.xml
index 8f289b83a7be1..de4d3f7a93371 100644
--- a/src/findbugs-exclude.xml
+++ b/src/findbugs-exclude.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,18 +19,16 @@
     under the License.
 
 -->
-<FindBugsFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:noNamespaceSchemaLocation="http://findbugs.googlecode.com/svn/trunk/findbugs/etc/bugcollection.xsd">
-	<Match>
-		<Or>
-			<Bug pattern="DM_EXIT" />
-
-			<!-- Excluding code generated from protocol buffer -->
-			<Package name="org.apache.pulsar.common.policies.proto" />
-			<Package name="org.apache.bookkeeper.mledger.proto" />
-                        <!-- Excluding ZooKeeper shaded files -->
-			<Package name="org.apache.zookeeper.tnx" />
-			<Package name="org.apache.jute.generated.compiler" />
-		</Or>
-	</Match>
+<FindBugsFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://findbugs.googlecode.com/svn/trunk/findbugs/etc/bugcollection.xsd">
+  <Match>
+    <Or>
+      <Bug pattern="DM_EXIT"/>
+      <!-- Excluding code generated from protocol buffer -->
+      <Package name="org.apache.pulsar.common.policies.proto"/>
+      <Package name="org.apache.bookkeeper.mledger.proto"/>
+      <!-- Excluding ZooKeeper shaded files -->
+      <Package name="org.apache.zookeeper.tnx"/>
+      <Package name="org.apache.jute.generated.compiler"/>
+    </Or>
+  </Match>
 </FindBugsFilter>
diff --git a/src/idea-code-style.xml b/src/idea-code-style.xml
index 810dee34a3494..b49c523c322b2 100644
--- a/src/idea-code-style.xml
+++ b/src/idea-code-style.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,51 +21,51 @@
 -->
 <code_scheme name="pulsar" version="173">
   <JavaCodeStyleSettings>
-    <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
-    <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
+    <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
+    <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
     <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
-      <value />
+      <value/>
     </option>
     <option name="IMPORT_LAYOUT_TABLE">
       <value>
-        <package name="" withSubpackages="true" static="true" />
-        <package name="" withSubpackages="true" static="false" />
+        <package name="" withSubpackages="true" static="true"/>
+        <package name="" withSubpackages="true" static="false"/>
       </value>
     </option>
-    <option name="JD_P_AT_EMPTY_LINES" value="false" />
-    <option name="JD_PRESERVE_LINE_FEEDS" value="true" />
+    <option name="JD_P_AT_EMPTY_LINES" value="false"/>
+    <option name="JD_PRESERVE_LINE_FEEDS" value="true"/>
   </JavaCodeStyleSettings>
   <codeStyleSettings language="JAVA">
-    <option name="RIGHT_MARGIN" value="120" />
-    <option name="CALL_PARAMETERS_WRAP" value="1" />
-    <option name="METHOD_PARAMETERS_WRAP" value="1" />
-    <option name="RESOURCE_LIST_WRAP" value="1" />
-    <option name="EXTENDS_LIST_WRAP" value="1" />
-    <option name="THROWS_LIST_WRAP" value="1" />
-    <option name="EXTENDS_KEYWORD_WRAP" value="1" />
-    <option name="THROWS_KEYWORD_WRAP" value="1" />
-    <option name="METHOD_CALL_CHAIN_WRAP" value="1" />
-    <option name="BINARY_OPERATION_WRAP" value="1" />
-    <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
-    <option name="TERNARY_OPERATION_WRAP" value="1" />
-    <option name="FOR_STATEMENT_WRAP" value="1" />
-    <option name="ARRAY_INITIALIZER_WRAP" value="1" />
-    <option name="ASSIGNMENT_WRAP" value="1" />
-    <option name="WRAP_COMMENTS" value="true" />
-    <option name="ASSERT_STATEMENT_WRAP" value="1" />
-    <option name="IF_BRACE_FORCE" value="3" />
-    <option name="DOWHILE_BRACE_FORCE" value="3" />
-    <option name="WHILE_BRACE_FORCE" value="3" />
-    <option name="FOR_BRACE_FORCE" value="3" />
-    <option name="WRAP_LONG_LINES" value="true" />
-    <option name="PARAMETER_ANNOTATION_WRAP" value="1" />
-    <option name="VARIABLE_ANNOTATION_WRAP" value="1" />
-    <option name="ENUM_CONSTANTS_WRAP" value="1" />
+    <option name="RIGHT_MARGIN" value="120"/>
+    <option name="CALL_PARAMETERS_WRAP" value="1"/>
+    <option name="METHOD_PARAMETERS_WRAP" value="1"/>
+    <option name="RESOURCE_LIST_WRAP" value="1"/>
+    <option name="EXTENDS_LIST_WRAP" value="1"/>
+    <option name="THROWS_LIST_WRAP" value="1"/>
+    <option name="EXTENDS_KEYWORD_WRAP" value="1"/>
+    <option name="THROWS_KEYWORD_WRAP" value="1"/>
+    <option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
+    <option name="BINARY_OPERATION_WRAP" value="1"/>
+    <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+    <option name="TERNARY_OPERATION_WRAP" value="1"/>
+    <option name="FOR_STATEMENT_WRAP" value="1"/>
+    <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
+    <option name="ASSIGNMENT_WRAP" value="1"/>
+    <option name="WRAP_COMMENTS" value="true"/>
+    <option name="ASSERT_STATEMENT_WRAP" value="1"/>
+    <option name="IF_BRACE_FORCE" value="3"/>
+    <option name="DOWHILE_BRACE_FORCE" value="3"/>
+    <option name="WHILE_BRACE_FORCE" value="3"/>
+    <option name="FOR_BRACE_FORCE" value="3"/>
+    <option name="WRAP_LONG_LINES" value="true"/>
+    <option name="PARAMETER_ANNOTATION_WRAP" value="1"/>
+    <option name="VARIABLE_ANNOTATION_WRAP" value="1"/>
+    <option name="ENUM_CONSTANTS_WRAP" value="1"/>
   </codeStyleSettings>
   <codeStyleSettings language="XML">
     <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="TAB_SIZE" value="2" />
+      <option name="INDENT_SIZE" value="2"/>
+      <option name="TAB_SIZE" value="2"/>
     </indentOptions>
   </codeStyleSettings>
-</code_scheme>
\ No newline at end of file
+</code_scheme>
diff --git a/src/owasp-dependency-check-false-positives.xml b/src/owasp-dependency-check-false-positives.xml
index 345be8f4d2c06..151752c98f7a1 100644
--- a/src/owasp-dependency-check-false-positives.xml
+++ b/src/owasp-dependency-check-false-positives.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -54,100 +54,97 @@
     <cve>CVE-2021-43045</cve>
   </suppress>
   <suppress base="true">
-    <notes><![CDATA[
+    <notes>
         FP per #3889
-        ]]></notes>
+        </notes>
     <packageUrl regex="true">^pkg:maven/io\.netty/netty\-tcnative\-classes@.*$</packageUrl>
     <cpe>cpe:/a:netty:netty</cpe>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: netty-tcnative-boringssl-static-2.0.56.Final-osx-aarch_64.jar
-   ]]></notes>
+   </notes>
     <packageUrl regex="true">^pkg:maven/io\.netty/netty\-tcnative\-boringssl\-static@.*$</packageUrl>
     <cpe>cpe:/a:chromium_project:chromium</cpe>
   </suppress>
   <suppress>
-<!--    Zookkeeper false positive about Jetty and commons-io-->
-<!--    https://github.com/apache/zookeeper/pull/1824-->
-    <notes><![CDATA[
+    <!--    Zookkeeper false positive about Jetty and commons-io-->
+    <!--    https://github.com/apache/zookeeper/pull/1824-->
+    <notes>
    file name: zookeeper-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>e395c1d8a71557b7569cc6a83487b2e30e2e58fe</sha1>
     <cve>CVE-2021-28164</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>e395c1d8a71557b7569cc6a83487b2e30e2e58fe</sha1>
     <cve>CVE-2021-29425</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>e395c1d8a71557b7569cc6a83487b2e30e2e58fe</sha1>
     <cve>CVE-2021-34429</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-prometheus-metrics-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>849e8ece2845cb0185d721233906d487a7f1e4cf</sha1>
     <cve>CVE-2021-28164</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-prometheus-metrics-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>849e8ece2845cb0185d721233906d487a7f1e4cf</sha1>
     <cve>CVE-2021-29425</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-prometheus-metrics-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>849e8ece2845cb0185d721233906d487a7f1e4cf</sha1>
     <cve>CVE-2021-34429</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-jute-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>6560f966bcf1aa78d27bcfa75fb6c4463a72c6c5</sha1>
     <cve>CVE-2021-28164</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-jute-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>6560f966bcf1aa78d27bcfa75fb6c4463a72c6c5</sha1>
     <cve>CVE-2021-29425</cve>
   </suppress>
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: zookeeper-jute-3.8.0.jar
-   ]]></notes>
+   </notes>
     <sha1>6560f966bcf1aa78d27bcfa75fb6c4463a72c6c5</sha1>
     <cve>CVE-2021-34429</cve>
   </suppress>
-
   <!-- CVE-2021-23214 is about PostGre server -->
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: debezium-connector-postgres-1.7.2.Final.jar
-   ]]></notes>
+   </notes>
     <sha1>69c1edfa7d89531af511fcd07e8516fa450f746a</sha1>
     <cve>CVE-2021-23214</cve>
   </suppress>
-
-
-<!--  MariaDB client is being confused with MariaDB server-->
+  <!--  MariaDB client is being confused with MariaDB server-->
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: mariadb-java-client-2.7.5.jar
-   ]]></notes>
+   </notes>
     <sha1>9dd29797ecabe7d2e7fa892ec6713a5552cfcc59</sha1>
     <cve>CVE-2022-27376</cve>
     <cve>CVE-2022-27377</cve>
@@ -162,43 +159,36 @@
     <cve>CVE-2022-27386</cve>
     <cve>CVE-2022-27387</cve>
   </suppress>
-
   <!-- google-http-client-gson getting confused with gson-->
   <suppress>
-    <notes><![CDATA[
+    <notes>
    file name: google-http-client-gson-1.41.0.jar
-   ]]></notes>
+   </notes>
     <sha1>1a754a5dd672218a2ac667d7ff2b28df7a5a240e</sha1>
     <cve>CVE-2022-25647</cve>
   </suppress>
-
   <suppress>
     <notes>commons-net is not used at all and therefore commons-net vulnerability CVE-2021-37533 is a false positive.</notes>
     <cve>CVE-2021-37533</cve>
   </suppress>
-
   <suppress>
     <notes>fredsmith utils library is not used at all. CVE-2021-4277 is a false positive.</notes>
     <cve>CVE-2021-4277</cve>
   </suppress>
-
   <suppress>
     <notes>It treat pulsar-io-kafka-connect-adaptor as a lib of Kafka, CVE-2021-25194 is a false positive.</notes>
     <cve>CVE-2023-25194</cve>
   </suppress>
-
   <suppress>
     <notes>It treat pulsar-io-kafka-connect-adaptor as a lib of Kafka, CVE-2021-34917 is a false positive.</notes>
     <cve>CVE-2022-34917</cve>
   </suppress>
-
   <suppress>
     <notes>yaml_project is not used at all. Any CVEs reported for yaml_project are false positives.</notes>
     <cpe>cpe:/a:yaml_project:yaml</cpe>
   </suppress>
-
   <suppress>
     <notes>flat_project is not used at all.</notes>
     <cpe>cpe:/a:flat_project:flat</cpe>
   </suppress>
-</suppressions>
\ No newline at end of file
+</suppressions>
diff --git a/src/owasp-dependency-check-suppressions.xml b/src/owasp-dependency-check-suppressions.xml
index b5bb58c3d0eaf..7e0e54d9faab9 100644
--- a/src/owasp-dependency-check-suppressions.xml
+++ b/src/owasp-dependency-check-suppressions.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -20,453 +20,444 @@
 
 -->
 <suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
-    <!-- add supressions for known vulnerabilities detected by OWASP Dependency Check -->
-    <suppress>
-        <notes>Ignore netty CVEs in GRPC shaded Netty.</notes>
-        <filePath regex="true">.*grpc-netty-shaded.*</filePath>
-        <cpe>cpe:/a:netty:netty</cpe>
-    </suppress>
-    <suppress>
-        <notes>Suppress all pulsar-presto-distribution vulnerabilities</notes>
-        <filePath regex="true">.*pulsar-presto-distribution-.*</filePath>
-        <vulnerabilityName regex="true">.*</vulnerabilityName>
-    </suppress>
-    <suppress>
-        <notes>Suppress libthrift-0.12.0.jar vulnerabilities</notes>
-        <gav>org.apache.thrift:libthrift:0.12.0</gav>
-        <vulnerabilityName regex="true">.*</vulnerabilityName>
-    </suppress>
-
-    <!-- influxdb dependencies -->
-    <suppress>
-        <notes><![CDATA[
+  <!-- add supressions for known vulnerabilities detected by OWASP Dependency Check -->
+  <suppress>
+    <notes>Ignore netty CVEs in GRPC shaded Netty.</notes>
+    <filePath regex="true">.*grpc-netty-shaded.*</filePath>
+    <cpe>cpe:/a:netty:netty</cpe>
+  </suppress>
+  <suppress>
+    <notes>Suppress all pulsar-presto-distribution vulnerabilities</notes>
+    <filePath regex="true">.*pulsar-presto-distribution-.*</filePath>
+    <vulnerabilityName regex="true">.*</vulnerabilityName>
+  </suppress>
+  <suppress>
+    <notes>Suppress libthrift-0.12.0.jar vulnerabilities</notes>
+    <gav>org.apache.thrift:libthrift:0.12.0</gav>
+    <vulnerabilityName regex="true">.*</vulnerabilityName>
+  </suppress>
+  <!-- influxdb dependencies -->
+  <suppress>
+    <notes>
        file name: msgpack-core-0.9.0.jar
-       ]]></notes>
-        <sha1>87d9ce0b22de48428fa32bb8ad476e18b6969548</sha1>
-        <cve>CVE-2022-41719</cve>
-    </suppress>
-
-    <!-- see https://github.com/apache/pulsar/pull/16110 -->
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>87d9ce0b22de48428fa32bb8ad476e18b6969548</sha1>
+    <cve>CVE-2022-41719</cve>
+  </suppress>
+  <!-- see https://github.com/apache/pulsar/pull/16110 -->
+  <suppress>
+    <notes>
     file name: elasticsearch-java-8.1.0.jar
     CVE-2022-23712 is only related to Elastic server.
-    ]]></notes>
-        <sha1>edf5be04cbc2eafc51540ba33f9536e788b9d60b</sha1>
-        <cve>CVE-2022-23712</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>edf5be04cbc2eafc51540ba33f9536e788b9d60b</sha1>
+    <cve>CVE-2022-23712</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: elasticsearch-rest-client-8.1.0.jar
     CVE-2022-23712 is only related to Elastic server.
-    ]]></notes>
-        <sha1>10e7aa09f10955a074c0a574cb699344d2745df1</sha1>
-        <cve>CVE-2022-23712</cve>
-    </suppress>
-
-    <!-- see https://github.com/apache/pulsar/pull/14629 -->
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>10e7aa09f10955a074c0a574cb699344d2745df1</sha1>
+    <cve>CVE-2022-23712</cve>
+  </suppress>
+  <!-- see https://github.com/apache/pulsar/pull/14629 -->
+  <suppress>
+    <notes>
    file name: kotlin-stdlib-common-1.4.32.jar
-   ]]></notes>
-        <sha1>ef50bfa2c0491a11dcc35d9822edbfd6170e1ea2</sha1>
-        <cpe>cpe:/a:jetbrains:kotlin</cpe>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+   </notes>
+    <sha1>ef50bfa2c0491a11dcc35d9822edbfd6170e1ea2</sha1>
+    <cpe>cpe:/a:jetbrains:kotlin</cpe>
+  </suppress>
+  <suppress>
+    <notes>
    file name: kotlin-stdlib-jdk7-1.4.32.jar
-   ]]></notes>
-        <sha1>3546900a3ebff0c43f31190baf87a9220e37b7ea</sha1>
-        <cve>CVE-2022-24329</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+   </notes>
+    <sha1>3546900a3ebff0c43f31190baf87a9220e37b7ea</sha1>
+    <cve>CVE-2022-24329</cve>
+  </suppress>
+  <suppress>
+    <notes>
    file name: kotlin-stdlib-jdk8-1.4.32.jar
-   ]]></notes>
-        <sha1>3302f9ec8a5c1ed220781dbd37770072549bd333</sha1>
-        <cve>CVE-2022-24329</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+   </notes>
+    <sha1>3302f9ec8a5c1ed220781dbd37770072549bd333</sha1>
+    <cve>CVE-2022-24329</cve>
+  </suppress>
+  <suppress>
+    <notes>
    file name: kotlin-stdlib-1.4.32.jar
-   ]]></notes>
-        <sha1>461367948840adbb0839c51d91ed74ef4a9ccb52</sha1>
-        <cve>CVE-2022-24329</cve>
-    </suppress>
-
-    <!-- see https://github.com/alibaba/canal/issues/4010 -->
-    <suppress>
-        <notes><![CDATA[
+   </notes>
+    <sha1>461367948840adbb0839c51d91ed74ef4a9ccb52</sha1>
+    <cve>CVE-2022-24329</cve>
+  </suppress>
+  <!-- see https://github.com/alibaba/canal/issues/4010 -->
+  <suppress>
+    <notes>
        file name: canal.client-1.1.5.jar (shaded: com.google.guava:guava:22.0)
-       ]]></notes>
-        <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
-        <cve>CVE-2018-10237</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
+    <cve>CVE-2018-10237</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: canal.client-1.1.5.jar (shaded: com.google.guava:guava:22.0)
-       ]]></notes>
-        <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
-        <cve>CVE-2020-8908</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
+    <cve>CVE-2020-8908</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: canal.client-1.1.5.jar (shaded: com.google.guava:guava:32.1.1)
     CVE cannot take effect.
     Already covered by PR https://github.com/apache/pulsar/pull/20699
-    ]]></notes>
-        <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
-        <cve>CVE-2023-2976</cve>
-    </suppress>
-    <!-- clickhouse: security scan matches client lib to the server CVEs -->
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>b87878db57d5cfc2ca7d3972cc8f7486bf02fbca</sha1>
+    <cve>CVE-2023-2976</cve>
+  </suppress>
+  <!-- clickhouse: security scan matches client lib to the server CVEs -->
+  <suppress>
+    <notes>
     file name: avro-1.10.2.jar
-    ]]></notes>
-        <sha1>a65aaa91c1aeceb3dd4859dbb9765d1c2063f5a2</sha1>
-        <cve>CVE-2021-43045</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>a65aaa91c1aeceb3dd4859dbb9765d1c2063f5a2</sha1>
+    <cve>CVE-2021-43045</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2018-14668</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2018-14668</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2018-14669</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2018-14669</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2018-14670</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2018-14670</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2018-14671</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2018-14671</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2018-14672</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2018-14672</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2019-15024</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2019-15024</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2019-16535</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2019-16535</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2019-18657</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2019-18657</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.3.2.jar
-    ]]></notes>
-        <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
-        <cve>CVE-2021-25263</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>fa9a1ccda7d78edb51a3a33d3493566092786a30</sha1>
+    <cve>CVE-2021-25263</cve>
+  </suppress>
+  <suppress>
+    <notes>
     file name: clickhouse-jdbc-0.4.6-all.jar (shaded: com.google.guava:guava:32.1.1)
     CVE cannot take effect.
     Already covered by PR https://github.com/apache/pulsar/pull/20699
-    ]]></notes>
-        <sha1>d3b929509399a698915b24ff47db781d0c526760</sha1>
-        <cve>CVE-2023-2976</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+    </notes>
+    <sha1>d3b929509399a698915b24ff47db781d0c526760</sha1>
+    <cve>CVE-2023-2976</cve>
+  </suppress>
+  <suppress>
+    <notes>
      file name: logback-core-1.1.3.jar
-     ]]></notes>
-        <sha1>e3c02049f2dbbc764681b40094ecf0dcbc99b157</sha1>
-        <cpe>cpe:/a:qos:logback</cpe>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>e3c02049f2dbbc764681b40094ecf0dcbc99b157</sha1>
+    <cpe>cpe:/a:qos:logback</cpe>
+  </suppress>
+  <suppress>
+    <notes>
      file name: rocketmq-acl-4.5.2.jar
-     ]]></notes>
-        <sha1>0e2bd9c162280cd79c2ea0f67f174ee5d7b84ddd</sha1>
-        <cpe>cpe:/a:apache:rocketmq</cpe>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[Ignored since we are not vulnerable]]></notes>
-        <packageUrl regex="true">^pkg:maven/org\.springframework/spring.*$</packageUrl>
-        <cve>CVE-2016-1000027</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>0e2bd9c162280cd79c2ea0f67f174ee5d7b84ddd</sha1>
+    <cpe>cpe:/a:apache:rocketmq</cpe>
+  </suppress>
+  <suppress>
+    <notes>Ignored since we are not vulnerable</notes>
+    <packageUrl regex="true">^pkg:maven/org\.springframework/spring.*$</packageUrl>
+    <cve>CVE-2016-1000027</cve>
+  </suppress>
+  <suppress>
+    <notes>
      file name: logback-classic-1.1.3.jar
-     ]]></notes>
-        <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
-        <cpe>cpe:/a:qos:logback</cpe>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
+    <cpe>cpe:/a:qos:logback</cpe>
+  </suppress>
+  <suppress>
+    <notes>
      file name: logback-core-1.1.3.jar
-     ]]></notes>
-        <sha1>e3c02049f2dbbc764681b40094ecf0dcbc99b157</sha1>
-        <vulnerabilityName>CVE-2017-5929</vulnerabilityName>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>e3c02049f2dbbc764681b40094ecf0dcbc99b157</sha1>
+    <vulnerabilityName>CVE-2017-5929</vulnerabilityName>
+  </suppress>
+  <suppress>
+    <notes>
      file name: logback-classic-1.1.3.jar
-     ]]></notes>
-        <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
-        <cve>CVE-2017-5929</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
+    <cve>CVE-2017-5929</cve>
+  </suppress>
+  <suppress>
+    <notes>
      file name: logback-classic-1.1.3.jar
-     ]]></notes>
-        <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
-        <cve>CVE-2021-42550</cve>
-    </suppress>
-
-    <suppress>
-        <notes>Ignore etdc CVEs in jetcd</notes>
-        <filePath regex="true">.*jetcd.*</filePath>
-        <cpe>cpe:/a:etcd:etcd</cpe>
-    </suppress>
-    <suppress>
-        <notes>Ignore etdc CVEs in jetcd</notes>
-        <filePath regex="true">.*jetcd.*</filePath>
-        <cpe>cpe:/a:redhat:etcd</cpe>
-    </suppress>
-    <suppress>
-        <notes>Ignore grpc CVEs in jetcd</notes>
-        <filePath regex="true">.*jetcd-grpc.*</filePath>
-        <cpe>cpe:/a:grpc:grpc</cpe>
-    </suppress>
-
-    <!-- bouncycastle misdetections -->
-    <suppress>
-        <notes><![CDATA[
+     </notes>
+    <sha1>d90276fff414f06cb375f2057f6778cd63c6082f</sha1>
+    <cve>CVE-2021-42550</cve>
+  </suppress>
+  <suppress>
+    <notes>Ignore etdc CVEs in jetcd</notes>
+    <filePath regex="true">.*jetcd.*</filePath>
+    <cpe>cpe:/a:etcd:etcd</cpe>
+  </suppress>
+  <suppress>
+    <notes>Ignore etdc CVEs in jetcd</notes>
+    <filePath regex="true">.*jetcd.*</filePath>
+    <cpe>cpe:/a:redhat:etcd</cpe>
+  </suppress>
+  <suppress>
+    <notes>Ignore grpc CVEs in jetcd</notes>
+    <filePath regex="true">.*jetcd-grpc.*</filePath>
+    <cpe>cpe:/a:grpc:grpc</cpe>
+  </suppress>
+  <!-- bouncycastle misdetections -->
+  <suppress>
+    <notes>
        file name: bc-fips-1.0.2.jar
-       ]]></notes>
-        <sha1>4fb5db5f03d00f6a94e43b78d097978190e4abb2</sha1>
-        <cve>CVE-2020-26939</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>4fb5db5f03d00f6a94e43b78d097978190e4abb2</sha1>
+    <cve>CVE-2020-26939</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: bcpkix-fips-1.0.2.jar
-       ]]></notes>
-        <sha1>543bc7a08cdba0172e95e536b5f7ca61f021253d</sha1>
-        <cve>CVE-2020-15522</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>543bc7a08cdba0172e95e536b5f7ca61f021253d</sha1>
+    <cve>CVE-2020-15522</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: bcpkix-fips-1.0.2.jar
-       ]]></notes>
-        <sha1>543bc7a08cdba0172e95e536b5f7ca61f021253d</sha1>
-        <cve>CVE-2020-26939</cve>
-    </suppress>
-
-    <!-- jclouds/openswift misdetections -->
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>543bc7a08cdba0172e95e536b5f7ca61f021253d</sha1>
+    <cve>CVE-2020-26939</cve>
+  </suppress>
+  <!-- jclouds/openswift misdetections -->
+  <suppress>
+    <notes>
        file name: openstack-swift-2.5.0.jar
-       ]]></notes>
-        <sha1>d99d0eab2e01d69d8a326fc152427fbd759af88a</sha1>
-        <cve>CVE-2016-0738</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>d99d0eab2e01d69d8a326fc152427fbd759af88a</sha1>
+    <cve>CVE-2016-0738</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-swift-2.5.0.jar
-       ]]></notes>
-        <sha1>d99d0eab2e01d69d8a326fc152427fbd759af88a</sha1>
-        <cve>CVE-2017-16613</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>d99d0eab2e01d69d8a326fc152427fbd759af88a</sha1>
+    <cve>CVE-2017-16613</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2018-14432</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2018-14432</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2018-20170</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2018-20170</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2020-12689</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2020-12689</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2020-12690</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2020-12690</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2020-12691</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2020-12691</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2020-12692</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2020-12692</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: openstack-keystone-2.5.0.jar
-       ]]></notes>
-        <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
-        <cve>CVE-2021-3563</cve>
-    </suppress>
-
-    <!-- Solr misdetection.
+       </notes>
+    <sha1>a7e89bd278fa8be9fa604dda66d1606de5530797</sha1>
+    <cve>CVE-2021-3563</cve>
+  </suppress>
+  <!-- Solr misdetection.
     Cannot be tied to a sha1,
     mismatches org.apache.pulsar:pulsar-io-solr:2.10.0-SNAPSHOT
     -->
-    <suppress>
-        <notes><![CDATA[
+  <suppress>
+    <notes>
        file name: org.apache.pulsar:pulsar-io-solr:2.10.0-SNAPSHOT
-       ]]></notes>
-        <packageUrl regex="true">^pkg:maven/org\.apache\.pulsar/pulsar\-io\-solr@.*-SNAPSHOT$</packageUrl>
-        <cpe>cpe:/a:apache:pulsar</cpe>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <packageUrl regex="true">^pkg:maven/org\.apache\.pulsar/pulsar\-io\-solr@.*-SNAPSHOT$</packageUrl>
+    <cpe>cpe:/a:apache:pulsar</cpe>
+  </suppress>
+  <suppress>
+    <notes>
        file name: org.apache.pulsar:pulsar-io-solr:2.10.0-SNAPSHOT
-       ]]></notes>
-        <packageUrl regex="true">^pkg:maven/org\.apache\.pulsar/pulsar\-io\-solr@.*-SNAPSHOT$</packageUrl>
-        <cpe>cpe:/a:apache:solr</cpe>
-    </suppress>
-
-    <!-- debezium-related misdetections -->
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <packageUrl regex="true">^pkg:maven/org\.apache\.pulsar/pulsar\-io\-solr@.*-SNAPSHOT$</packageUrl>
+    <cpe>cpe:/a:apache:solr</cpe>
+  </suppress>
+  <!-- debezium-related misdetections -->
+  <suppress>
+    <notes>
        file name: debezium-connector-mysql-1.9.7.Final.jar
-       ]]></notes>
-        <sha1>74c623b4a9b231e2f0e8f6053b38abd3bc487ce2</sha1>
-        <cve>CVE-2017-15945</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>74c623b4a9b231e2f0e8f6053b38abd3bc487ce2</sha1>
+    <cve>CVE-2017-15945</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: mysql-binlog-connector-java-0.27.2.jar
-       ]]></notes>
-        <sha1>23294cd730e29c00b8ddfbde517dfc955aba090f</sha1>
-        <cve>CVE-2017-15945</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>23294cd730e29c00b8ddfbde517dfc955aba090f</sha1>
+    <cve>CVE-2017-15945</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: debezium-connector-postgres-1.9.7.Final.jar
-       ]]></notes>
-        <sha1>300ff0bbf795643e914b7c8a6d6ba812a8354d62</sha1>
-        <cve>CVE-2015-0241</cve>
-        <cve>CVE-2015-0242</cve>
-        <cve>CVE-2015-0243</cve>
-        <cve>CVE-2015-0244</cve>
-        <cve>CVE-2015-3166</cve>
-        <cve>CVE-2015-3167</cve>
-        <cve>CVE-2016-0766</cve>
-        <cve>CVE-2016-0768</cve>
-        <cve>CVE-2016-0773</cve>
-        <cve>CVE-2016-5423</cve>
-        <cve>CVE-2016-5424</cve>
-        <cve>CVE-2016-7048</cve>
-        <cve>CVE-2017-14798</cve>
-        <cve>CVE-2017-7484</cve>
-        <cve>CVE-2018-1115</cve>
-        <cve>CVE-2019-10127</cve>
-        <cve>CVE-2019-10128</cve>
-        <cve>CVE-2019-10210</cve>
-        <cve>CVE-2019-10211</cve>
-        <cve>CVE-2020-25694</cve>
-        <cve>CVE-2020-25695</cve>
-        <cve>CVE-2021-23214</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>300ff0bbf795643e914b7c8a6d6ba812a8354d62</sha1>
+    <cve>CVE-2015-0241</cve>
+    <cve>CVE-2015-0242</cve>
+    <cve>CVE-2015-0243</cve>
+    <cve>CVE-2015-0244</cve>
+    <cve>CVE-2015-3166</cve>
+    <cve>CVE-2015-3167</cve>
+    <cve>CVE-2016-0766</cve>
+    <cve>CVE-2016-0768</cve>
+    <cve>CVE-2016-0773</cve>
+    <cve>CVE-2016-5423</cve>
+    <cve>CVE-2016-5424</cve>
+    <cve>CVE-2016-7048</cve>
+    <cve>CVE-2017-14798</cve>
+    <cve>CVE-2017-7484</cve>
+    <cve>CVE-2018-1115</cve>
+    <cve>CVE-2019-10127</cve>
+    <cve>CVE-2019-10128</cve>
+    <cve>CVE-2019-10210</cve>
+    <cve>CVE-2019-10211</cve>
+    <cve>CVE-2020-25694</cve>
+    <cve>CVE-2020-25695</cve>
+    <cve>CVE-2021-23214</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: protostream-types-4.4.1.Final.jar
-       ]]></notes>
-        <sha1>29b45ebea1e4ce62ab3ec5eb76fa9771f98941b0</sha1>
-        <cve>CVE-2016-0750</cve>
-        <cve>CVE-2017-15089</cve>
-        <cve>CVE-2017-2638</cve>
-        <cve>CVE-2019-10158</cve>
-        <cve>CVE-2019-10174</cve>
-        <cve>CVE-2020-25711</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>29b45ebea1e4ce62ab3ec5eb76fa9771f98941b0</sha1>
+    <cve>CVE-2016-0750</cve>
+    <cve>CVE-2017-15089</cve>
+    <cve>CVE-2017-2638</cve>
+    <cve>CVE-2019-10158</cve>
+    <cve>CVE-2019-10174</cve>
+    <cve>CVE-2020-25711</cve>
+  </suppress>
+  <suppress>
+    <notes>
        file name: mariadb-java-client-2.7.5.jar
-       ]]></notes>
-        <sha1>9dd29797ecabe7d2e7fa892ec6713a5552cfcc59</sha1>
-        <cve>CVE-2020-28912</cve>
-        <cve>CVE-2021-46669</cve>
-        <cve>CVE-2021-46666</cve>
-        <cve>CVE-2021-46667</cve>
-    </suppress>
-    <!-- only affects the server -->
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>9dd29797ecabe7d2e7fa892ec6713a5552cfcc59</sha1>
+    <cve>CVE-2020-28912</cve>
+    <cve>CVE-2021-46669</cve>
+    <cve>CVE-2021-46666</cve>
+    <cve>CVE-2021-46667</cve>
+  </suppress>
+  <!-- only affects the server -->
+  <suppress>
+    <notes>
        file name: cassandra-driver-core-3.11.2.jar
-       ]]></notes>
-        <sha1>e0aad9f8611e710b9a0ce49747f7465ce07d8404</sha1>
-        <cve>CVE-2020-17516</cve>
-        <cve>CVE-2021-44521</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <sha1>e0aad9f8611e710b9a0ce49747f7465ce07d8404</sha1>
+    <cve>CVE-2020-17516</cve>
+    <cve>CVE-2021-44521</cve>
+  </suppress>
+  <suppress>
+    <notes>
        The vulnerable method is deprecated in Guava, but isn't removed. It's necessary to suppress this CVE.
        See https://github.com/google/guava/issues/4011
-       ]]></notes>
-        <cve>CVE-2020-8908</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <cve>CVE-2020-8908</cve>
+  </suppress>
+  <suppress>
+    <notes>
        This is a false positive in jackson-databind.
        See https://github.com/FasterXML/jackson-databind/issues/3972#issuecomment-1596604021
-       ]]></notes>
-        <cve>CVE-2023-35116</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+       </notes>
+    <cve>CVE-2023-35116</cve>
+  </suppress>
+  <suppress>
+    <notes>
    This is a false positive in avro-protobuf. The vulnerability is in Hamba avro golang library.
-   ]]></notes>
-        <cve>CVE-2023-37475</cve>
-    </suppress>
-    <suppress>
-        <notes><![CDATA[
+   </notes>
+    <cve>CVE-2023-37475</cve>
+  </suppress>
+  <suppress>
+    <notes>
     This CVE can be suppressed since it is covered in Pulsar by hostname verification changes made in https://github.com/apache/pulsar/pull/15824.
-   ]]></notes>
-        <cve>CVE-2023-4586</cve>
-    </suppress>
+   </notes>
+    <cve>CVE-2023-4586</cve>
+  </suppress>
 </suppressions>
diff --git a/src/settings.xml b/src/settings.xml
index 80ec2f40620e7..8fc2f13a37a59 100644
--- a/src/settings.xml
+++ b/src/settings.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -26,7 +27,6 @@
       <username>${env.APACHE_USER}</username>
       <password>${env.APACHE_PASSWORD}</password>
     </server>
-    
     <!-- To stage a release of some part of Maven -->
     <server>
       <id>apache.releases.https</id>
@@ -34,7 +34,6 @@
       <password>${env.APACHE_PASSWORD}</password>
     </server>
   </servers>
-
   <profiles>
     <profile>
       <id>apache</id>
diff --git a/structured-event-log/pom.xml b/structured-event-log/pom.xml
index 0fe941a913b43..70e006f0dc73a 100644
--- a/structured-event-log/pom.xml
+++ b/structured-event-log/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,26 +19,21 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>structured-event-log</artifactId>
   <name>Structured event logger</name>
-
   <dependencies>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-
     <!-- Optional runtime dependency on Log4j2 -->
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
@@ -60,7 +56,6 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -78,5 +73,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/testmocks/pom.xml b/testmocks/pom.xml
index a673a53e3cf59..8aff91037e6b2 100644
--- a/testmocks/pom.xml
+++ b/testmocks/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,22 +19,17 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
     <artifactId>pulsar</artifactId>
-    <groupId>org.apache.pulsar</groupId>
-    <version>3.1.2</version>
+    <groupId>io.streamnative</groupId>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>testmocks</artifactId>
   <packaging>jar</packaging>
   <name>Pulsar Test Mocks</name>
-
   <dependencies>
-
     <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
@@ -52,29 +48,23 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.objenesis</groupId>
       <artifactId>objenesis</artifactId>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -92,5 +82,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/tests/bc_2_0_0/pom.xml b/tests/bc_2_0_0/pom.xml
index f3ac2c0ac61c6..7944c4843c36e 100644
--- a/tests/bc_2_0_0/pom.xml
+++ b/tests/bc_2_0_0/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,91 +19,83 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>bc_2_0_0</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.0.0-rc1-incubating</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client</artifactId>
-            <version>2.0.0-rc1-incubating</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>bc_2_0_0</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.0.0-rc1-incubating</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.pulsar</groupId>
+      <artifactId>pulsar-client</artifactId>
+      <version>2.0.0-rc1-incubating</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DintegrationTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>BackwardsCompatTests</id>
+      <activation>
+        <property>
+          <name>BackwardsCompatTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DintegrationTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>BackwardsCompatTests</id>
-            <activation>
-                <property>
-                    <name>BackwardsCompatTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/pulsar.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/pulsar.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/bc_2_0_0/src/test/resources/pulsar.xml b/tests/bc_2_0_0/src/test/resources/pulsar.xml
index 43dfaea15813c..2e9d57ed72832 100644
--- a/tests/bc_2_0_0/src/test/resources/pulsar.xml
+++ b/tests/bc_2_0_0/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Standalone Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-standalone-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-standalone-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/bc_2_0_1/pom.xml b/tests/bc_2_0_1/pom.xml
index 95eed13cf16b3..b8f8277aba6e2 100644
--- a/tests/bc_2_0_1/pom.xml
+++ b/tests/bc_2_0_1/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,91 +19,83 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>bc_2_0_1</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.0.1-incubating</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client</artifactId>
-            <version>2.0.1-incubating</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>bc_2_0_1</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.0.1-incubating</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.pulsar</groupId>
+      <artifactId>pulsar-client</artifactId>
+      <version>2.0.1-incubating</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DintegrationTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>BackwardsCompatTests</id>
+      <activation>
+        <property>
+          <name>BackwardsCompatTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DintegrationTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>BackwardsCompatTests</id>
-            <activation>
-                <property>
-                    <name>BackwardsCompatTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/pulsar.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/pulsar.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/bc_2_0_1/src/test/resources/pulsar.xml b/tests/bc_2_0_1/src/test/resources/pulsar.xml
index 43dfaea15813c..2e9d57ed72832 100644
--- a/tests/bc_2_0_1/src/test/resources/pulsar.xml
+++ b/tests/bc_2_0_1/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Standalone Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-standalone-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-standalone-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/bc_2_6_0/pom.xml b/tests/bc_2_6_0/pom.xml
index c222a21b2107b..77a6b52026b77 100644
--- a/tests/bc_2_6_0/pom.xml
+++ b/tests/bc_2_6_0/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,100 +19,88 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>bc_2_6_0</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.6.0</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client</artifactId>
-            <version>2.6.0</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>bc_2_6_0</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Backwards Client Compatibility 2.6.0</name>
+  <dependencies>
+    <dependency>
+      <groupId>com.google.code.gson</groupId>
+      <artifactId>gson</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.pulsar</groupId>
+      <artifactId>pulsar-client</artifactId>
+      <version>2.6.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DintegrationTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>BackwardsCompatTests</id>
+      <activation>
+        <property>
+          <name>BackwardsCompatTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DintegrationTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>BackwardsCompatTests</id>
-            <activation>
-                <property>
-                    <name>BackwardsCompatTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/backwards-client.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/backwards-client.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/bc_2_6_0/src/test/resources/backwards-client.xml b/tests/bc_2_6_0/src/test/resources/backwards-client.xml
index 43dfaea15813c..2e9d57ed72832 100644
--- a/tests/bc_2_6_0/src/test/resources/backwards-client.xml
+++ b/tests/bc_2_6_0/src/test/resources/backwards-client.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Standalone Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-standalone-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-standalone-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/docker-images/java-test-functions/pom.xml b/tests/docker-images/java-test-functions/pom.xml
index 61719af01178b..c19bfb2876242 100644
--- a/tests/docker-images/java-test-functions/pom.xml
+++ b/tests/docker-images/java-test-functions/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,24 +19,23 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>java-test-functions</artifactId>
   <name>Apache Pulsar :: Tests :: Docker Images :: Java Test Functions</name>
   <dependencies>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-io-core</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-functions-api</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -59,7 +59,6 @@
     </dependency>
   </dependencies>
   <packaging>jar</packaging>
-
   <profiles>
     <profile>
       <id>docker</id>
@@ -68,15 +67,13 @@
           <name>integrationTests</name>
         </property>
       </activation>
-
       <dependencies>
         <dependency>
-          <groupId>org.apache.pulsar</groupId>
+          <groupId>io.streamnative</groupId>
           <artifactId>pulsar-functions-api-examples</artifactId>
           <version>${project.version}</version>
         </dependency>
       </dependencies>
-
       <build>
         <plugins>
           <plugin>
@@ -91,7 +88,7 @@
                 <configuration>
                   <artifactSet>
                     <includes>
-                      <include>org.apache.pulsar:pulsar-functions-api-examples</include>
+                      <include>io.streamnative:pulsar-functions-api-examples</include>
                     </includes>
                   </artifactSet>
                 </configuration>
@@ -102,5 +99,4 @@
       </build>
     </profile>
   </profiles>
-
 </project>
diff --git a/tests/docker-images/java-test-image/pom.xml b/tests/docker-images/java-test-image/pom.xml
index 175a185f41422..3e08238940347 100644
--- a/tests/docker-images/java-test-image/pom.xml
+++ b/tests/docker-images/java-test-image/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>java-test-image</artifactId>
   <name>Apache Pulsar :: Tests :: Docker Images :: Java Test Image</name>
   <packaging>pom</packaging>
-
   <profiles>
     <profile>
       <id>docker</id>
@@ -45,12 +44,12 @@
       </activation>
       <dependencies>
         <dependency>
-          <groupId>org.apache.pulsar.tests</groupId>
+          <groupId>io.streamnative.tests</groupId>
           <artifactId>java-test-functions</artifactId>
           <version>${project.parent.version}</version>
         </dependency>
         <dependency>
-          <groupId>org.apache.pulsar</groupId>
+          <groupId>io.streamnative</groupId>
           <artifactId>pulsar-server-distribution</artifactId>
           <version>${project.parent.version}</version>
           <classifier>bin</classifier>
@@ -78,7 +77,7 @@
                 <configuration>
                   <artifactItems>
                     <artifactItem>
-                      <groupId>org.apache.pulsar.tests</groupId>
+                      <groupId>io.streamnative.tests</groupId>
                       <artifactId>java-test-functions</artifactId>
                       <version>${project.parent.version}</version>
                       <type>jar</type>
@@ -87,7 +86,7 @@
                       <destFileName>java-test-functions.jar</destFileName>
                     </artifactItem>
                     <artifactItem>
-                      <groupId>org.apache.pulsar</groupId>
+                      <groupId>io.streamnative</groupId>
                       <artifactId>pulsar-server-distribution</artifactId>
                       <version>${project.parent.version}</version>
                       <classifier>bin</classifier>
diff --git a/tests/docker-images/java-test-plugins/pom.xml b/tests/docker-images/java-test-plugins/pom.xml
index b8b1b0012b3b4..d41412031bc5d 100644
--- a/tests/docker-images/java-test-plugins/pom.xml
+++ b/tests/docker-images/java-test-plugins/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,12 +19,11 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>java-test-plugins</artifactId>
@@ -31,7 +31,7 @@
   <packaging>jar</packaging>
   <dependencies>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
@@ -45,5 +45,4 @@
       </plugin>
     </plugins>
   </build>
-
 </project>
diff --git a/tests/docker-images/latest-version-image/pom.xml b/tests/docker-images/latest-version-image/pom.xml
index e99a4100d13d8..6d5608887e304 100644
--- a/tests/docker-images/latest-version-image/pom.xml
+++ b/tests/docker-images/latest-version-image/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,16 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>latest-version-image</artifactId>
   <name>Apache Pulsar :: Tests :: Docker Images :: Latest Version Testing</name>
   <packaging>pom</packaging>
-
   <profiles>
     <profile>
       <id>docker</id>
@@ -40,17 +39,17 @@
       </activation>
       <dependencies>
         <dependency>
-          <groupId>org.apache.pulsar.tests</groupId>
+          <groupId>io.streamnative.tests</groupId>
           <artifactId>java-test-functions</artifactId>
           <version>${project.parent.version}</version>
         </dependency>
         <dependency>
-          <groupId>org.apache.pulsar.tests</groupId>
+          <groupId>io.streamnative.tests</groupId>
           <artifactId>java-test-plugins</artifactId>
           <version>${project.parent.version}</version>
         </dependency>
         <dependency>
-          <groupId>org.apache.pulsar</groupId>
+          <groupId>io.streamnative</groupId>
           <artifactId>pulsar-all-docker-image</artifactId>
           <version>${project.parent.version}</version>
           <type>pom</type>
@@ -77,7 +76,7 @@
                 <configuration>
                   <artifactItems>
                     <artifactItem>
-                      <groupId>org.apache.pulsar.tests</groupId>
+                      <groupId>io.streamnative.tests</groupId>
                       <artifactId>java-test-functions</artifactId>
                       <version>${project.parent.version}</version>
                       <type>jar</type>
@@ -86,7 +85,7 @@
                       <destFileName>java-test-functions.jar</destFileName>
                     </artifactItem>
                     <artifactItem>
-                      <groupId>org.apache.pulsar.tests</groupId>
+                      <groupId>io.streamnative.tests</groupId>
                       <artifactId>java-test-plugins</artifactId>
                       <version>${project.parent.version}</version>
                       <type>jar</type>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index 89ff0329d3923..ba6611dec7fdb 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,15 +19,13 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <packaging>pom</packaging>
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
   <artifactId>docker-images</artifactId>
   <name>Apache Pulsar :: Tests :: Docker Images</name>
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index 44cca702ad2ed..937979f4ad1a1 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,24 +19,20 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar.tests</groupId>
+    <groupId>io.streamnative.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-
   <artifactId>integration</artifactId>
   <packaging>jar</packaging>
   <name>Apache Pulsar :: Tests :: Integration</name>
-
   <properties>
     <integrationTestSuiteFile>pulsar.xml</integrationTestSuiteFile>
     <mongo-reactivestreams.version>4.1.2</mongo-reactivestreams.version>
   </properties>
-
   <dependencies>
     <dependency>
       <groupId>com.google.code.gson</groupId>
@@ -44,37 +40,37 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-functions-api-examples</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-broker</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-common</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-client-original</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-client-admin-original</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>managed-ledger</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
@@ -96,31 +92,27 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-io-kafka</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>mysql</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>${postgresql-jdbc.version}</version>
       <scope>runtime</scope>
     </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>postgresql</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.github.docker-java</groupId>
       <artifactId>docker-java-core</artifactId>
@@ -131,72 +123,60 @@
       <artifactId>bcpkix-jdk18on</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
-      <groupId>org.apache.pulsar</groupId>
+      <groupId>io.streamnative</groupId>
       <artifactId>pulsar-io-jdbc-postgres</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.opensearch.client</groupId>
       <artifactId>opensearch-rest-high-level-client</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>co.elastic.clients</groupId>
       <artifactId>elasticsearch-java</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>elasticsearch</artifactId>
       <scope>test</scope>
     </dependency>
-
-
     <dependency>
       <groupId>com.rabbitmq</groupId>
       <artifactId>amqp-client</artifactId>
       <version>${rabbitmq-client.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>joda-time</groupId>
       <artifactId>joda-time</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>io.trino</groupId>
       <artifactId>trino-jdbc</artifactId>
       <version>${trino.version}</version>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.awaitility</groupId>
       <artifactId>awaitility</artifactId>
       <scope>test</scope>
     </dependency>
-
-<!--    kinesis-->
+    <!--    kinesis-->
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>localstack</artifactId>
@@ -213,7 +193,6 @@
       <artifactId>aws-java-sdk-core</artifactId>
       <scope>test</scope>
     </dependency>
-
     <!-- mongodb -->
     <dependency>
       <groupId>org.testcontainers</groupId>
@@ -226,9 +205,7 @@
       <version>${mongo-reactivestreams.version}</version>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
@@ -269,7 +246,6 @@
       </plugin>
     </plugins>
   </build>
-
   <profiles>
     <profile>
       <id>integrationTests</id>
diff --git a/tests/integration/src/test/resources/pulsar-auth.xml b/tests/integration/src/test/resources/pulsar-auth.xml
index 81d2c1361a269..3647730dee201 100644
--- a/tests/integration/src/test/resources/pulsar-auth.xml
+++ b/tests/integration/src/test/resources/pulsar-auth.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,10 +19,10 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Auth Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-auth-test-suite" preserve-order="true" >
-        <classes>
+  <test name="pulsar-auth-test-suite" preserve-order="true">
+    <classes>
         </classes>
-    </test>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-backwards-compatibility.xml b/tests/integration/src/test/resources/pulsar-backwards-compatibility.xml
index b50af74ed17f0..b0f55f3e04b16 100644
--- a/tests/integration/src/test/resources/pulsar-backwards-compatibility.xml
+++ b/tests/integration/src/test/resources/pulsar-backwards-compatibility.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,18 +19,18 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Messaging Backwards Compatibility Tests" verbose="2" annotations="JDK">
-    <test name="messaging-backwards-compatibility-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_2" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_3" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_4" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_5" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_2" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_3" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_4" />
-            <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_5" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="messaging-backwards-compatibility-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_2"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_3"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_4"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.SmokeTest2_5"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_2"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_3"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_4"/>
+      <class name="org.apache.pulsar.tests.integration.backwardscompatibility.ClientTest2_5"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-cli.xml b/tests/integration/src/test/resources/pulsar-cli.xml
index af55aca8a0098..1243dc7e485d7 100644
--- a/tests/integration/src/test/resources/pulsar-cli.xml
+++ b/tests/integration/src/test/resources/pulsar-cli.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,22 +19,22 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar CLI Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-cli-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.cli.ClientToolTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.ClusterMetadataTearDownTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.CLITest" />
-            <class name="org.apache.pulsar.tests.integration.cli.HealthCheckTest" />
-            <class name="org.apache.pulsar.tests.integration.compaction.TestCompaction" />
-            <class name="org.apache.pulsar.tests.integration.cli.AdminMultiHostTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.FunctionsCLITest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.PackagesCliTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.PulsarVersionTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.tenant.TenantTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.PerfToolTest"/>
-            <class name="org.apache.pulsar.tests.integration.cli.topicpolicies.SchemaCompatibilityStrategyTest"/>
-        </classes>
-    </test>
+  <test name="pulsar-cli-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.cli.ClientToolTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.ClusterMetadataTearDownTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.CLITest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.HealthCheckTest"/>
+      <class name="org.apache.pulsar.tests.integration.compaction.TestCompaction"/>
+      <class name="org.apache.pulsar.tests.integration.cli.AdminMultiHostTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.FunctionsCLITest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.PackagesCliTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.PulsarVersionTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.tenant.TenantTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.PerfToolTest"/>
+      <class name="org.apache.pulsar.tests.integration.cli.topicpolicies.SchemaCompatibilityStrategyTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-function.xml b/tests/integration/src/test/resources/pulsar-function.xml
index a18a65ff2e16d..03a8d83997a3c 100644
--- a/tests/integration/src/test/resources/pulsar-function.xml
+++ b/tests/integration/src/test/resources/pulsar-function.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,14 +19,14 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Function Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-function-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.functions.PulsarStateTest" />
-            <class name="org.apache.pulsar.tests.integration.io.PulsarGenericObjectSinkTest"/>
-            <class name="org.apache.pulsar.tests.integration.io.sources.GenericRecordSourceTest" />
-            <class name="org.apache.pulsar.tests.integration.io.sources.PulsarSourcePropertyTest"/>
-        </classes>
-    </test>
+  <test name="pulsar-function-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.functions.PulsarStateTest"/>
+      <class name="org.apache.pulsar.tests.integration.io.PulsarGenericObjectSinkTest"/>
+      <class name="org.apache.pulsar.tests.integration.io.sources.GenericRecordSourceTest"/>
+      <class name="org.apache.pulsar.tests.integration.io.sources.PulsarSourcePropertyTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-io-ora-source.xml b/tests/integration/src/test/resources/pulsar-io-ora-source.xml
index 1c5bb5faf677c..0a9927015be86 100644
--- a/tests/integration/src/test/resources/pulsar-io-ora-source.xml
+++ b/tests/integration/src/test/resources/pulsar-io-ora-source.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar IO Oracle Source Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-function-process-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.io.sources.debezium.PulsarDebeziumOracleSourceTest" />
-        </classes>
-    </test>
+  <test name="pulsar-function-process-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.io.sources.debezium.PulsarDebeziumOracleSourceTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-io-sinks.xml b/tests/integration/src/test/resources/pulsar-io-sinks.xml
index 614c371f3e52c..046f977f3e13b 100644
--- a/tests/integration/src/test/resources/pulsar-io-sinks.xml
+++ b/tests/integration/src/test/resources/pulsar-io-sinks.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar IO Sinks Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-function-process-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.io.sinks.PulsarSinksTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-function-process-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.io.sinks.PulsarSinksTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-io-sources.xml b/tests/integration/src/test/resources/pulsar-io-sources.xml
index 636b3e479195f..c995a7df249dd 100644
--- a/tests/integration/src/test/resources/pulsar-io-sources.xml
+++ b/tests/integration/src/test/resources/pulsar-io-sources.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,13 +19,13 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar IO Sources Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-function-process-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.io.sources.debezium.PulsarDebeziumSourcesTest" />
-            <class name="org.apache.pulsar.tests.integration.io.sources.BatchSourceTest" />
-            <class name="org.apache.pulsar.tests.integration.io.sources.AvroKafkaSourceTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-function-process-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.io.sources.debezium.PulsarDebeziumSourcesTest"/>
+      <class name="org.apache.pulsar.tests.integration.io.sources.BatchSourceTest"/>
+      <class name="org.apache.pulsar.tests.integration.io.sources.AvroKafkaSourceTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-loadbalance.xml b/tests/integration/src/test/resources/pulsar-loadbalance.xml
index dfc4536e25592..d28dd1e0da7ee 100644
--- a/tests/integration/src/test/resources/pulsar-loadbalance.xml
+++ b/tests/integration/src/test/resources/pulsar-loadbalance.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (LoadBalance) Integration Tests" verbose="2" annotations="JDK">
-    <test name="loadbalance-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.loadbalance.ExtensibleLoadManagerTest"/>
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="loadbalance-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.loadbalance.ExtensibleLoadManagerTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-messaging.xml b/tests/integration/src/test/resources/pulsar-messaging.xml
index cfbdb22587034..f8813b614f5cb 100644
--- a/tests/integration/src/test/resources/pulsar-messaging.xml
+++ b/tests/integration/src/test/resources/pulsar-messaging.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,17 +19,17 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (Messaging) Integration Tests" verbose="2" annotations="JDK">
-    <test name="messaging-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.messaging.PersistentTopicMessagingTest" />
-            <class name="org.apache.pulsar.tests.integration.messaging.NonPersistentTopicMessagingTest" />
-            <class name="org.apache.pulsar.tests.integration.messaging.GeoReplicationTest" />
-            <class name="org.apache.pulsar.tests.integration.messaging.DelayMessagingTest" />
-            <class name="org.apache.pulsar.tests.integration.messaging.ReaderMessagingTest" />
-            <class name="org.apache.pulsar.tests.integration.messaging.NonDurableConsumerMessagingTest" />
-            <class name="org.apache.pulsar.tests.integration.admin.AdminTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="messaging-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.messaging.PersistentTopicMessagingTest"/>
+      <class name="org.apache.pulsar.tests.integration.messaging.NonPersistentTopicMessagingTest"/>
+      <class name="org.apache.pulsar.tests.integration.messaging.GeoReplicationTest"/>
+      <class name="org.apache.pulsar.tests.integration.messaging.DelayMessagingTest"/>
+      <class name="org.apache.pulsar.tests.integration.messaging.ReaderMessagingTest"/>
+      <class name="org.apache.pulsar.tests.integration.messaging.NonDurableConsumerMessagingTest"/>
+      <class name="org.apache.pulsar.tests.integration.admin.AdminTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-plugin.xml b/tests/integration/src/test/resources/pulsar-plugin.xml
index f88b67256e547..06fa8ee628c0f 100644
--- a/tests/integration/src/test/resources/pulsar-plugin.xml
+++ b/tests/integration/src/test/resources/pulsar-plugin.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,14 +19,14 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Plugin Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-plugin-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.plugins.TestProtocolHandlers" />
-            <class name="org.apache.pulsar.tests.integration.plugins.TestAdditionalServlets" />
-            <class name="org.apache.pulsar.tests.integration.plugins.TestBrokerInterceptors" />
-            <class name="org.apache.pulsar.tests.integration.plugins.TestEntryFilters" />
-        </classes>
-    </test>
+  <test name="pulsar-plugin-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.plugins.TestProtocolHandlers"/>
+      <class name="org.apache.pulsar.tests.integration.plugins.TestAdditionalServlets"/>
+      <class name="org.apache.pulsar.tests.integration.plugins.TestBrokerInterceptors"/>
+      <class name="org.apache.pulsar.tests.integration.plugins.TestEntryFilters"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-process.xml b/tests/integration/src/test/resources/pulsar-process.xml
index 8e5258d30624c..a6f1ac468d954 100644
--- a/tests/integration/src/test/resources/pulsar-process.xml
+++ b/tests/integration/src/test/resources/pulsar-process.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,15 +19,14 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Function Process Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-function-process-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.functions.go.PulsarFunctionsGoProcessTest" />
-            <class name="org.apache.pulsar.tests.integration.functions.java.PulsarFunctionsJavaProcessTest"/>
-            <class name="org.apache.pulsar.tests.integration.functions.python.PulsarFunctionsPythonProcessTest" />
-
-            <class name="org.apache.pulsar.tests.integration.functions.java.PulsarWorkerRebalanceDrainProcessTest"/>
-        </classes>
-    </test>
+  <test name="pulsar-function-process-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.functions.go.PulsarFunctionsGoProcessTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.java.PulsarFunctionsJavaProcessTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.python.PulsarFunctionsPythonProcessTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.java.PulsarWorkerRebalanceDrainProcessTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-proxy.xml b/tests/integration/src/test/resources/pulsar-proxy.xml
index ae6f13810535c..fabfb54d781a3 100644
--- a/tests/integration/src/test/resources/pulsar-proxy.xml
+++ b/tests/integration/src/test/resources/pulsar-proxy.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (Proxy) Integration Tests" verbose="2" annotations="JDK">
-    <test name="messaging-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.proxy.TestProxy" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="messaging-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.proxy.TestProxy"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-python.xml b/tests/integration/src/test/resources/pulsar-python.xml
index a5faa6389e0f1..365768083d21b 100644
--- a/tests/integration/src/test/resources/pulsar-python.xml
+++ b/tests/integration/src/test/resources/pulsar-python.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Python Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-python-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.python.PythonSchemaTest" />
-        </classes>
-    </test>
+  <test name="pulsar-python-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.python.PythonSchemaTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-schema.xml b/tests/integration/src/test/resources/pulsar-schema.xml
index e07fdf2b2d86f..595bb8fda5521 100644
--- a/tests/integration/src/test/resources/pulsar-schema.xml
+++ b/tests/integration/src/test/resources/pulsar-schema.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,13 +19,13 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Schema Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-schema-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.schema.SchemaTest" />
-            <class name="org.apache.pulsar.tests.integration.schema.JodaTimeTest" />
-            <class name="org.apache.pulsar.tests.integration.python.PythonSchemaTest" />
-        </classes>
-    </test>
+  <test name="pulsar-schema-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.schema.SchemaTest"/>
+      <class name="org.apache.pulsar.tests.integration.schema.JodaTimeTest"/>
+      <class name="org.apache.pulsar.tests.integration.python.PythonSchemaTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-semantics.xml b/tests/integration/src/test/resources/pulsar-semantics.xml
index 5b5402af4623b..69e171931f0e4 100644
--- a/tests/integration/src/test/resources/pulsar-semantics.xml
+++ b/tests/integration/src/test/resources/pulsar-semantics.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Semantics Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-semantics-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.semantics.SemanticsTest" />
-        </classes>
-    </test>
+  <test name="pulsar-semantics-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.semantics.SemanticsTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-sql.xml b/tests/integration/src/test/resources/pulsar-sql.xml
index 1ab4d479ad041..a7e0995f1f2d0 100644
--- a/tests/integration/src/test/resources/pulsar-sql.xml
+++ b/tests/integration/src/test/resources/pulsar-sql.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,13 +19,13 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar SQL Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-sql-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.presto.TestBasicPresto" />
-            <class name="org.apache.pulsar.tests.integration.presto.TestPrestoQueryTieredStorage" />
-            <class name="org.apache.pulsar.tests.integration.presto.TestPulsarSQLAuth" />
-        </classes>
-    </test>
+  <test name="pulsar-sql-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.presto.TestBasicPresto"/>
+      <class name="org.apache.pulsar.tests.integration.presto.TestPrestoQueryTieredStorage"/>
+      <class name="org.apache.pulsar.tests.integration.presto.TestPulsarSQLAuth"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-standalone.xml b/tests/integration/src/test/resources/pulsar-standalone.xml
index d8892c0746181..45d79a72821b5 100644
--- a/tests/integration/src/test/resources/pulsar-standalone.xml
+++ b/tests/integration/src/test/resources/pulsar-standalone.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Standalone Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-standalone-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.standalone.SmokeTest" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-standalone-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.standalone.SmokeTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-thread.xml b/tests/integration/src/test/resources/pulsar-thread.xml
index cf3da15e8e1ad..dc1b8e3b3de15 100644
--- a/tests/integration/src/test/resources/pulsar-thread.xml
+++ b/tests/integration/src/test/resources/pulsar-thread.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,15 +19,14 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (Thread Function Worker) Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-thread-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.functions.go.PulsarFunctionsGoThreadTest" />
-            <class name="org.apache.pulsar.tests.integration.functions.java.PulsarFunctionsJavaThreadTest" />
-            <class name="org.apache.pulsar.tests.integration.functions.python.PulsarFunctionsPythonThreadTest" />
-
-            <class name="org.apache.pulsar.tests.integration.functions.java.PulsarWorkerRebalanceDrainThreadTest"/>
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="pulsar-thread-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.functions.go.PulsarFunctionsGoThreadTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.java.PulsarFunctionsJavaThreadTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.python.PulsarFunctionsPythonThreadTest"/>
+      <class name="org.apache.pulsar.tests.integration.functions.java.PulsarWorkerRebalanceDrainThreadTest"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar-tls.xml b/tests/integration/src/test/resources/pulsar-tls.xml
index 153d14b62a725..88e90c43107fb 100644
--- a/tests/integration/src/test/resources/pulsar-tls.xml
+++ b/tests/integration/src/test/resources/pulsar-tls.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar TLS Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-tls" preserve-order="true">
-        <packages>
-            <package name="org.apache.pulsar.tests.integration.tls"/>
-        </packages>
-    </test>
+  <test name="pulsar-tls" preserve-order="true">
+    <packages>
+      <package name="org.apache.pulsar.tests.integration.tls"/>
+    </packages>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-transaction.xml b/tests/integration/src/test/resources/pulsar-transaction.xml
index 72c375d000d8e..425f58ebda639 100644
--- a/tests/integration/src/test/resources/pulsar-transaction.xml
+++ b/tests/integration/src/test/resources/pulsar-transaction.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Transaction Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-transaction-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.transaction.TransactionTest" />
-        </classes>
-    </test>
+  <test name="pulsar-transaction-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.transaction.TransactionTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-upgrade.xml b/tests/integration/src/test/resources/pulsar-upgrade.xml
index a52db54753372..cb312b04ed7a3 100644
--- a/tests/integration/src/test/resources/pulsar-upgrade.xml
+++ b/tests/integration/src/test/resources/pulsar-upgrade.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Upgrade Integration Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-upgrade-test-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.upgrade.PulsarZKDowngradeTest" />
-        </classes>
-    </test>
+  <test name="pulsar-upgrade-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.upgrade.PulsarZKDowngradeTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/integration/src/test/resources/pulsar-websocket.xml b/tests/integration/src/test/resources/pulsar-websocket.xml
index 87bf832d4e40a..e5023451518e0 100644
--- a/tests/integration/src/test/resources/pulsar-websocket.xml
+++ b/tests/integration/src/test/resources/pulsar-websocket.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="WebSocket Integration Tests" verbose="2" annotations="JDK">
-    <test name="messaging-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.websocket.TestWebSocket" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="messaging-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.websocket.TestWebSocket"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/pulsar.xml b/tests/integration/src/test/resources/pulsar.xml
index d309a7695dd0b..ada31c2e5da8c 100644
--- a/tests/integration/src/test/resources/pulsar.xml
+++ b/tests/integration/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,25 +19,25 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Test Suite" parallel="instances" thread-count="1">
-    <suite-files>
-        <suite-file path="./pulsar-cli.xml" />
-        <suite-file path="./pulsar-schema.xml" />
-        <suite-file path="./pulsar-process.xml" />
-        <suite-file path="./pulsar-sql.xml" />
-        <suite-file path="./pulsar-thread.xml" />
-        <suite-file path="./tiered-jcloud-storage.xml" />
-        <suite-file path="./tiered-filesystem-storage.xml"/>
-        <suite-file path="./pulsar-function.xml" />
-        <suite-file path="./pulsar-messaging.xml" />
-        <suite-file path="./pulsar-loadbalance.xml" />
-        <suite-file path="./pulsar-backwards-compatibility.xml" />
-        <suite-file path="./pulsar-io-sinks.xml" />
-        <suite-file path="./pulsar-io-sources.xml" />
-        <suite-file path="./pulsar-io-ora-source.xml" />
-        <suite-file path="./pulsar-python.xml" />
-        <suite-file path="./pulsar-semantics.xml" />
-        <suite-file path="./pulsar-upgrade.xml" />
-    </suite-files>
+  <suite-files>
+    <suite-file path="./pulsar-cli.xml"/>
+    <suite-file path="./pulsar-schema.xml"/>
+    <suite-file path="./pulsar-process.xml"/>
+    <suite-file path="./pulsar-sql.xml"/>
+    <suite-file path="./pulsar-thread.xml"/>
+    <suite-file path="./tiered-jcloud-storage.xml"/>
+    <suite-file path="./tiered-filesystem-storage.xml"/>
+    <suite-file path="./pulsar-function.xml"/>
+    <suite-file path="./pulsar-messaging.xml"/>
+    <suite-file path="./pulsar-loadbalance.xml"/>
+    <suite-file path="./pulsar-backwards-compatibility.xml"/>
+    <suite-file path="./pulsar-io-sinks.xml"/>
+    <suite-file path="./pulsar-io-sources.xml"/>
+    <suite-file path="./pulsar-io-ora-source.xml"/>
+    <suite-file path="./pulsar-python.xml"/>
+    <suite-file path="./pulsar-semantics.xml"/>
+    <suite-file path="./pulsar-upgrade.xml"/>
+  </suite-files>
 </suite>
diff --git a/tests/integration/src/test/resources/tiered-filesystem-storage.xml b/tests/integration/src/test/resources/tiered-filesystem-storage.xml
index b14077594e0c9..c8cb694ea2d02 100644
--- a/tests/integration/src/test/resources/tiered-filesystem-storage.xml
+++ b/tests/integration/src/test/resources/tiered-filesystem-storage.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (Filesystem Tiered Storage) Integration Tests" verbose="2" annotations="JDK">
-    <test name="tiered-storage-filesystem-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.offload.TestFileSystemOffload" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="tiered-storage-filesystem-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.offload.TestFileSystemOffload"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/integration/src/test/resources/tiered-jcloud-storage.xml b/tests/integration/src/test/resources/tiered-jcloud-storage.xml
index f61f9f5fa1612..be699ba0a8680 100644
--- a/tests/integration/src/test/resources/tiered-jcloud-storage.xml
+++ b/tests/integration/src/test/resources/tiered-jcloud-storage.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,11 +19,11 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar (Jcloud Tiered Storage) Integration Tests" verbose="2" annotations="JDK">
-    <test name="tiered-storage-jcloud-test-suite" preserve-order="true">
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.offload.TestS3Offload" />
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
+  <test name="tiered-storage-jcloud-test-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.offload.TestS3Offload"/>
+    </classes>
+  </test>
+</suite>
diff --git a/tests/pom.xml b/tests/pom.xml
index 07cf7376b5d07..add95fd41f448 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +19,15 @@
     under the License.
 
 -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <packaging>pom</packaging>
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
   </parent>
-  <groupId>org.apache.pulsar.tests</groupId>
+  <groupId>io.streamnative.tests</groupId>
   <artifactId>tests-parent</artifactId>
   <name>Apache Pulsar :: Tests</name>
   <build>
@@ -50,7 +49,7 @@
           <name>skipIntegrationTests</name>
         </property>
       </activation>
-      <modules />
+      <modules/>
     </profile>
     <profile>
       <id>integrationTests</id>
diff --git a/tests/pulsar-client-admin-shade-test/pom.xml b/tests/pulsar-client-admin-shade-test/pom.xml
index aba48a9abe335..8825323577b7a 100644
--- a/tests/pulsar-client-admin-shade-test/pom.xml
+++ b/tests/pulsar-client-admin-shade-test/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,106 +19,95 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-client-admin-shade-test</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Pulsar-Client-Admin-Shade Test</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-admin</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-admin-api</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-messagecrypto-bc</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-client-admin-shade-test</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Pulsar-Client-Admin-Shade Test</name>
+  <dependencies>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-admin</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-admin-api</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-messagecrypto-bc</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DShadeTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>ShadeTests</id>
+      <activation>
+        <property>
+          <name>ShadeTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DShadeTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>ShadeTests</id>
-            <activation>
-                <property>
-                    <name>ShadeTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/pulsar.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/pulsar.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/pulsar-client-admin-shade-test/src/test/resources/pulsar.xml b/tests/pulsar-client-admin-shade-test/src/test/resources/pulsar.xml
index d95dd95ae1775..2476755a95f7e 100644
--- a/tests/pulsar-client-admin-shade-test/src/test/resources/pulsar.xml
+++ b/tests/pulsar-client-admin-shade-test/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,12 +19,12 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Shade Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-client-admin-shade-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-            <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest" />
-        </classes>
-    </test>
+  <test name="pulsar-client-admin-shade-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+      <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/pulsar-client-all-shade-test/pom.xml b/tests/pulsar-client-all-shade-test/pom.xml
index 598af60141f7e..d7b0f87becd35 100644
--- a/tests/pulsar-client-all-shade-test/pom.xml
+++ b/tests/pulsar-client-all-shade-test/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,105 +19,94 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-client-all-shade-test</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Pulsar-Client-All-Shade Test</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-all</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>bouncy-castle-bc</artifactId>
-            <version>${project.version}</version>
-            <classifier>pkg</classifier>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-messagecrypto-bc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-client-all-shade-test</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Pulsar-Client-All-Shade Test</name>
+  <dependencies>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-all</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>bouncy-castle-bc</artifactId>
+      <version>${project.version}</version>
+      <classifier>pkg</classifier>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-messagecrypto-bc</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DShadeTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>ShadeTests</id>
+      <activation>
+        <property>
+          <name>ShadeTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DShadeTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>ShadeTests</id>
-            <activation>
-                <property>
-                    <name>ShadeTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/pulsar.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/pulsar.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/pulsar-client-all-shade-test/src/test/resources/pulsar.xml b/tests/pulsar-client-all-shade-test/src/test/resources/pulsar.xml
index 5c725f80eaea6..cfbc5ce59488b 100644
--- a/tests/pulsar-client-all-shade-test/src/test/resources/pulsar.xml
+++ b/tests/pulsar-client-all-shade-test/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,12 +19,12 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Shade Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-client-all-shade-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-            <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest" />
-        </classes>
-    </test>
+  <test name="pulsar-client-all-shade-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+      <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tests/pulsar-client-shade-test/pom.xml b/tests/pulsar-client-shade-test/pom.xml
index 63d7befebfc3c..39c740810b999 100644
--- a/tests/pulsar-client-shade-test/pom.xml
+++ b/tests/pulsar-client-shade-test/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -19,100 +19,89 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar.tests</groupId>
-        <artifactId>tests-parent</artifactId>
-        <version>3.1.2</version>
-    </parent>
-
-    <artifactId>pulsar-client-shade-test</artifactId>
-    <packaging>jar</packaging>
-    <name>Apache Pulsar :: Tests :: Pulsar-Client-Shade Test</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.pulsar</groupId>
-            <artifactId>pulsar-client-admin</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative.tests</groupId>
+    <artifactId>tests-parent</artifactId>
+    <version>3.1.2.2</version>
+  </parent>
+  <artifactId>pulsar-client-shade-test</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Pulsar :: Tests :: Pulsar-Client-Shade Test</name>
+  <dependencies>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.streamnative</groupId>
+      <artifactId>pulsar-client-admin</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testcontainers</groupId>
+      <artifactId>testcontainers</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- only run tests when -DShadeTests is specified //-->
+          <skipTests>true</skipTests>
+          <systemPropertyVariables>
+            <currentVersion>${project.version}</currentVersion>
+            <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>ShadeTests</id>
+      <activation>
+        <property>
+          <name>ShadeTests</name>
+        </property>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- only run tests when -DShadeTests is specified //-->
-                    <skipTests>true</skipTests>
-                    <systemPropertyVariables>
-                        <currentVersion>${project.version}</currentVersion>
-                        <maven.buildDirectory>${project.build.directory}</maven.buildDirectory>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>ShadeTests</id>
-            <activation>
-                <property>
-                    <name>ShadeTests</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <argLine>${testJacocoAgentArgument} -XX:+ExitOnOutOfMemoryError -Xmx2G -XX:MaxDirectMemorySize=8G
                                 -Dio.netty.leakDetectionLevel=advanced
                                 ${test.additional.args}
                             </argLine>
-                            <skipTests>false</skipTests>
-                            <suiteXmlFiles>
-                                <file>src/test/resources/pulsar.xml</file>
-                            </suiteXmlFiles>
-                            <forkCount>1</forkCount>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+              <skipTests>false</skipTests>
+              <suiteXmlFiles>
+                <file>src/test/resources/pulsar.xml</file>
+              </suiteXmlFiles>
+              <forkCount>1</forkCount>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tests/pulsar-client-shade-test/src/test/resources/pulsar.xml b/tests/pulsar-client-shade-test/src/test/resources/pulsar.xml
index 6132ad05f6ccf..e2ac6a9ee4f30 100644
--- a/tests/pulsar-client-shade-test/src/test/resources/pulsar.xml
+++ b/tests/pulsar-client-shade-test/src/test/resources/pulsar.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,12 +19,12 @@
     under the License.
 
 -->
-<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
 <suite name="Pulsar Shade Tests" verbose="2" annotations="JDK">
-    <test name="pulsar-client-shade-suite" preserve-order="true" >
-        <classes>
-            <class name="org.apache.pulsar.tests.integration.SmokeTest" />
-            <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest" />
-        </classes>
-    </test>
+  <test name="pulsar-client-shade-suite" preserve-order="true">
+    <classes>
+      <class name="org.apache.pulsar.tests.integration.SmokeTest"/>
+      <class name="org.apache.pulsar.tests.integration.SimpleProducerConsumerTest"/>
+    </classes>
+  </test>
 </suite>
diff --git a/tiered-storage/file-system/pom.xml b/tiered-storage/file-system/pom.xml
index a70d07b63cc17..f219c339a5870 100644
--- a/tiered-storage/file-system/pom.xml
+++ b/tiered-storage/file-system/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,205 +19,195 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.pulsar</groupId>
-        <artifactId>tiered-storage-parent</artifactId>
-        <version>3.1.2</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>tiered-storage-file-system</artifactId>
-    <name>Apache Pulsar :: Tiered Storage :: File System</name>
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>managed-ledger</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-common</artifactId>
-            <version>${hdfs-offload-version3}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-hdfs-client</artifactId>
-            <version>${hdfs-offload-version3}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.avro</groupId>
-                    <artifactId>avro</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.mortbay.jetty</groupId>
-                    <artifactId>jetty</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.jersey</groupId>
-                    <artifactId>jersey-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.jersey</groupId>
-                    <artifactId>jersey-server</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- fix hadoop-commons vulnerable dependencies -->
-        <dependency>
-            <groupId>org.apache.avro</groupId>
-            <artifactId>avro</artifactId>
-            <version>${avro.version}</version>
-        </dependency>
-        <!-- fix hadoop-commons vulnerable dependencies -->
-        <dependency>
-            <groupId>net.minidev</groupId>
-            <artifactId>json-smart</artifactId>
-            <version>${json-smart.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>testmocks</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-minicluster</artifactId>
-            <version>${hdfs-offload-version3}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>io.netty</groupId>
-                    <artifactId>netty-all</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.bouncycastle</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>bcpkix-jdk18on</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>io.streamnative</groupId>
+    <artifactId>tiered-storage-parent</artifactId>
+    <version>3.1.2.2</version>
+    <relativePath>..</relativePath>
+  </parent>
+  <artifactId>tiered-storage-file-system</artifactId>
+  <name>Apache Pulsar :: Tiered Storage :: File System</name>
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>managed-ledger</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-common</artifactId>
+      <version>${hdfs-offload-version3}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdfs-client</artifactId>
+      <version>${hdfs-offload-version3}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.avro</groupId>
+          <artifactId>avro</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.mortbay.jetty</groupId>
+          <artifactId>jetty</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-server</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.servlet</groupId>
+          <artifactId>servlet-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <!-- fix hadoop-commons vulnerable dependencies -->
+    <dependency>
+      <groupId>org.apache.avro</groupId>
+      <artifactId>avro</artifactId>
+      <version>${avro.version}</version>
+    </dependency>
+    <!-- fix hadoop-commons vulnerable dependencies -->
+    <dependency>
+      <groupId>net.minidev</groupId>
+      <artifactId>json-smart</artifactId>
+      <version>${json-smart.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>testmocks</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-minicluster</artifactId>
+      <version>${hdfs-offload-version3}</version>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
           <groupId>io.netty</groupId>
-          <artifactId>netty-codec-http</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-server</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-alpn-conscrypt-server</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-servlet</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-util</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.nifi</groupId>
-                <artifactId>nifi-nar-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>com.github.spotbugs</groupId>
-                <artifactId>spotbugs-maven-plugin</artifactId>
-                <version>${spotbugs-maven-plugin.version}</version>
-                <configuration>
-                    <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>spotbugs</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>checkstyle</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <profiles>
-        <!--
+          <artifactId>netty-all</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.bouncycastle</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.bouncycastle</groupId>
+      <artifactId>bcpkix-jdk18on</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-codec-http</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-alpn-conscrypt-server</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.nifi</groupId>
+        <artifactId>nifi-nar-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${spotbugs-maven-plugin.version}</version>
+        <configuration>
+          <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>spotbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <!--
         The only working way for OWASP dependency checker plugin
         to exclude module when failBuildOnCVSS is used
         in the root pom's plugin.
         -->
-        <profile>
-            <id>owasp-dependency-check</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.owasp</groupId>
-                        <artifactId>dependency-check-maven</artifactId>
-                        <version>${dependency-check-maven.version}</version>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>aggregate</goal>
-                                </goals>
-                                <phase>none</phase>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+    <profile>
+      <id>owasp-dependency-check</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.owasp</groupId>
+            <artifactId>dependency-check-maven</artifactId>
+            <version>${dependency-check-maven.version}</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>none</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/tiered-storage/file-system/src/main/resources/findbugsExclude.xml b/tiered-storage/file-system/src/main/resources/findbugsExclude.xml
index 051f0e68e257a..1b8cc1ac799ca 100644
--- a/tiered-storage/file-system/src/main/resources/findbugsExclude.xml
+++ b/tiered-storage/file-system/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/tiered-storage/jcloud/pom.xml b/tiered-storage/jcloud/pom.xml
index 0f2303a654ec5..00431ad320ba6 100644
--- a/tiered-storage/jcloud/pom.xml
+++ b/tiered-storage/jcloud/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,27 +19,22 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>tiered-storage-parent</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>tiered-storage-jcloud</artifactId>
   <name>Apache Pulsar :: Tiered Storage :: JCloud</name>
-
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>managed-ledger</artifactId>
       <version>${project.version}</version>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>jclouds-shaded</artifactId>
@@ -74,7 +70,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-allblobstore</artifactId>
@@ -85,12 +80,10 @@
       <groupId>com.amazonaws</groupId>
       <artifactId>aws-java-sdk-core</artifactId>
     </dependency>
-
     <dependency>
       <groupId>com.amazonaws</groupId>
       <artifactId>aws-java-sdk-sts</artifactId>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>testmocks</artifactId>
@@ -103,7 +96,6 @@
       <version>${jclouds.version}</version>
       <scope>provided</scope>
     </dependency>
-
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
@@ -115,13 +107,11 @@
       </exclusions>
       <scope>runtime</scope>
     </dependency>
-
     <dependency>
       <groupId>com.sun.activation</groupId>
       <artifactId>javax.activation</artifactId>
       <scope>runtime</scope>
     </dependency>
-
   </dependencies>
   <build>
     <plugins>
@@ -129,7 +119,6 @@
         <groupId>org.apache.nifi</groupId>
         <artifactId>nifi-nar-maven-plugin</artifactId>
       </plugin>
-
       <plugin>
         <groupId>com.github.spotbugs</groupId>
         <artifactId>spotbugs-maven-plugin</artifactId>
diff --git a/tiered-storage/jcloud/src/main/resources/findbugsExclude.xml b/tiered-storage/jcloud/src/main/resources/findbugsExclude.xml
index a8a9b9aae925f..c6ad70823a5ac 100644
--- a/tiered-storage/jcloud/src/main/resources/findbugsExclude.xml
+++ b/tiered-storage/jcloud/src/main/resources/findbugsExclude.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/tiered-storage/pom.xml b/tiered-storage/pom.xml
index cf24deff58412..be7c620cf6586 100644
--- a/tiered-storage/pom.xml
+++ b/tiered-storage/pom.xml
@@ -1,3 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
 <!--
 
     Licensed to the Apache Software Foundation (ASF) under one
@@ -18,24 +19,20 @@
     under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
   <parent>
-    <groupId>org.apache.pulsar</groupId>
+    <groupId>io.streamnative</groupId>
     <artifactId>pulsar</artifactId>
-    <version>3.1.2</version>
+    <version>3.1.2.2</version>
     <relativePath>..</relativePath>
   </parent>
-
   <artifactId>tiered-storage-parent</artifactId>
   <name>Apache Pulsar :: Tiered Storage :: Parent</name>
-
   <properties>
     <pulsar.jclouds.shaded.version>${project.version}</pulsar.jclouds.shaded.version>
   </properties>
-
   <modules>
     <module>jcloud</module>
     <module>file-system</module>

From c899f340bd4cd1e20505089a30b1fdda43d1788f Mon Sep 17 00:00:00 2001
From: StreamNative Bot <snbot@streamnative.io>
Date: Sun, 4 Feb 2024 04:37:46 +0000
Subject: [PATCH 2/3] Release 3.1.2.2


From f6f24a89b541db36b951546f01bda7f2121fa5b5 Mon Sep 17 00:00:00 2001
From: StreamNative Bot <snbot@streamnative.io>
Date: Wed, 21 Feb 2024 23:04:45 +0000
Subject: [PATCH 3/3] Release 3.1.2.2