You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ur...@apache.org on 2022/02/17 07:41:33 UTC

[pulsar-site] 05/06: update 2.7.x

This is an automated email from the ASF dual-hosted git repository.

urfree pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git

commit a5bbebae4bb0a6eb95d2b44b76439795bfb26fb6
Author: LiLi <ur...@apache.org>
AuthorDate: Thu Feb 17 15:37:34 2022 +0800

    update 2.7.x
    
    Signed-off-by: LiLi <ur...@apache.org>
---
 .../versioned_docs/version-2.7.0/adaptors-kafka.md |   4 -
 .../versioned_docs/version-2.7.0/adaptors-spark.md |   4 -
 .../versioned_docs/version-2.7.0/adaptors-storm.md |   4 -
 .../version-2.7.0/admin-api-brokers.md             |  75 +--
 .../version-2.7.0/admin-api-clusters.md            |  90 +---
 .../version-2.7.0/admin-api-functions.md           | 270 +---------
 .../version-2.7.0/admin-api-namespaces.md          | 450 ++--------------
 .../admin-api-non-partitioned-topics.md            |   4 -
 .../admin-api-non-persistent-topics.md             |   4 -
 .../version-2.7.0/admin-api-overview.md            |  15 +-
 .../version-2.7.0/admin-api-partitioned-topics.md  |   4 -
 .../version-2.7.0/admin-api-permissions.md         |  45 +-
 .../version-2.7.0/admin-api-persistent-topics.md   |   4 -
 .../version-2.7.0/admin-api-schemas.md             |   4 -
 .../version-2.7.0/admin-api-tenants.md             |  75 +--
 .../version-2.7.0/admin-api-topics.md              | 591 +++++----------------
 .../version-2.7.0/administration-dashboard.md      |   3 -
 .../version-2.7.0/administration-geo.md            |   4 -
 .../version-2.7.0/administration-load-balance.md   |   4 -
 .../version-2.7.0/administration-proxy.md          |   4 -
 .../version-2.7.0/administration-pulsar-manager.md |   6 +-
 .../version-2.7.0/administration-stats.md          |   4 -
 .../version-2.7.0/administration-upgrade.md        |   4 -
 .../version-2.7.0/administration-zk-bk.md          |   4 -
 .../version-2.7.0/client-libraries-cgo.md          |   4 -
 .../version-2.7.0/client-libraries-cpp.md          |   4 -
 .../version-2.7.0/client-libraries-dotnet.md       |   6 +-
 .../version-2.7.0/client-libraries-go.md           |   9 +-
 .../version-2.7.0/client-libraries-java.md         |   4 -
 .../version-2.7.0/client-libraries-node.md         |   4 -
 .../version-2.7.0/client-libraries-python.md       |   4 -
 .../version-2.7.0/client-libraries-websocket.md    |   4 -
 .../concepts-architecture-overview.md              |   4 -
 .../version-2.7.0/concepts-authentication.md       |   4 -
 .../version-2.7.0/concepts-clients.md              |   4 -
 .../version-2.7.0/concepts-messaging.md            |  85 ++-
 .../version-2.7.0/concepts-multi-tenancy.md        |   4 -
 .../concepts-multiple-advertised-listeners.md      |   4 -
 .../version-2.7.0/concepts-overview.md             |   4 -
 .../version-2.7.0/concepts-proxy-sni-routing.md    |   4 -
 .../version-2.7.0/concepts-replication.md          |   4 -
 .../version-2.7.0/concepts-tiered-storage.md       |   4 -
 .../version-2.7.0/concepts-topic-compaction.md     |   4 -
 .../version-2.7.0/concepts-transactions.md         |  34 --
 .../version-2.7.0/cookbooks-bookkeepermetadata.md  |   4 -
 .../version-2.7.0/cookbooks-compaction.md          |   4 -
 .../version-2.7.0/cookbooks-deduplication.md       |  15 +-
 .../version-2.7.0/cookbooks-encryption.md          |   4 -
 .../version-2.7.0/cookbooks-message-queue.md       |   4 -
 .../version-2.7.0/cookbooks-non-persistent.md      |   4 -
 .../version-2.7.0/cookbooks-partitioned.md         |   4 -
 .../version-2.7.0/cookbooks-retention-expiry.md    |  17 +-
 .../version-2.7.0/cookbooks-tiered-storage.md      |   4 -
 .../versioned_docs/version-2.7.0/deploy-aws.md     |   4 -
 .../deploy-bare-metal-multi-cluster.md             |  30 +-
 .../version-2.7.0/deploy-bare-metal.md             |  31 +-
 .../versioned_docs/version-2.7.0/deploy-dcos.md    |  10 +-
 .../versioned_docs/version-2.7.0/deploy-docker.md  |   4 -
 .../version-2.7.0/deploy-kubernetes.md             |   4 -
 .../version-2.7.0/deploy-monitoring.md             |   4 -
 .../develop-binary-protocol.md}                    |   0
 .../develop-cpp.md}                                |   0
 .../develop-load-manager.md}                       |   0
 .../versioned_docs/version-2.7.0/develop-schema.md |   4 -
 .../develop-tools.md}                              |   0
 .../version-2.7.0/developing-binary-protocol.md    | 585 --------------------
 .../versioned_docs/version-2.7.0/developing-cpp.md | 118 ----
 .../version-2.7.0/developing-load-manager.md       | 231 --------
 .../version-2.7.0/developing-tools.md              | 115 ----
 .../versioned_docs/version-2.7.0/functions-cli.md  |   4 -
 .../version-2.7.0/functions-debug.md               |   4 -
 .../version-2.7.0/functions-deploy.md              |   4 -
 .../version-2.7.0/functions-develop.md             | 153 +-----
 .../version-2.7.0/functions-metrics.md             |   4 -
 .../version-2.7.0/functions-overview.md            |   4 -
 .../version-2.7.0/functions-package.md             |   4 -
 .../version-2.7.0/functions-runtime.md             |   4 -
 .../version-2.7.0/functions-worker.md              |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 .../version-2.7.0/getting-started-docker.md        | 183 -------
 .../version-2.7.0/getting-started-helm.md          | 442 ---------------
 .../version-2.7.0/getting-started-pulsar.md        |   4 -
 .../versioned_docs/version-2.7.0/helm-deploy.md    |   4 -
 .../versioned_docs/version-2.7.0/helm-install.md   |   4 -
 .../versioned_docs/version-2.7.0/helm-overview.md  |   4 -
 .../versioned_docs/version-2.7.0/helm-prepare.md   |   4 -
 .../versioned_docs/version-2.7.0/helm-tools.md     |   4 -
 .../versioned_docs/version-2.7.0/helm-upgrade.md   |   4 -
 .../version-2.7.0/io-aerospike-sink.md             |   4 -
 .../version-2.7.0/io-canal-source.md               |   4 -
 .../version-2.7.0/io-cassandra-sink.md             |   4 -
 .../version-2.7.0/io-cdc-debezium.md               |   4 -
 .../versioned_docs/version-2.7.0/io-cdc.md         |   4 -
 .../versioned_docs/version-2.7.0/io-cli.md         |   4 -
 .../versioned_docs/version-2.7.0/io-connectors.md  |   4 -
 .../version-2.7.0/io-debezium-source.md            |   4 -
 .../versioned_docs/version-2.7.0/io-debug.md       |   4 -
 .../versioned_docs/version-2.7.0/io-develop.md     |   4 -
 .../version-2.7.0/io-dynamodb-source.md            |   4 -
 .../version-2.7.0/io-elasticsearch-sink.md         |   4 -
 .../versioned_docs/version-2.7.0/io-file-source.md |   4 -
 .../versioned_docs/version-2.7.0/io-flume-sink.md  |   4 -
 .../version-2.7.0/io-flume-source.md               |   4 -
 .../versioned_docs/version-2.7.0/io-hbase-sink.md  |   4 -
 .../versioned_docs/version-2.7.0/io-hdfs2-sink.md  |   4 -
 .../versioned_docs/version-2.7.0/io-hdfs3-sink.md  |   4 -
 .../version-2.7.0/io-influxdb-sink.md              |   4 -
 .../versioned_docs/version-2.7.0/io-jdbc-sink.md   |   4 -
 .../versioned_docs/version-2.7.0/io-kafka-sink.md  |   4 -
 .../version-2.7.0/io-kafka-source.md               |   4 -
 .../version-2.7.0/io-kinesis-sink.md               |   4 -
 .../version-2.7.0/io-kinesis-source.md             |   4 -
 .../versioned_docs/version-2.7.0/io-mongo-sink.md  |   4 -
 .../version-2.7.0/io-netty-source.md               |   4 -
 .../versioned_docs/version-2.7.0/io-nsq-source.md  |   4 -
 .../versioned_docs/version-2.7.0/io-overview.md    |  22 +-
 .../versioned_docs/version-2.7.0/io-quickstart.md  |   4 -
 .../version-2.7.0/io-rabbitmq-sink.md              |   4 -
 .../version-2.7.0/io-rabbitmq-source.md            |   4 -
 .../versioned_docs/version-2.7.0/io-redis-sink.md  |   4 -
 .../versioned_docs/version-2.7.0/io-solr-sink.md   |   4 -
 .../version-2.7.0/io-twitter-source.md             |   4 -
 .../versioned_docs/version-2.7.0/io-twitter.md     |   4 -
 .../versioned_docs/version-2.7.0/io-use.md         | 282 +---------
 .../kubernetes-helm.md}                            |   0
 .../version-2.7.0/performance-pulsar-perf.md       |   4 -
 .../{reference-pulsar-admin.md => pulsar-admin.md} |   4 -
 .../version-2.7.0/reference-cli-tools.md           |   6 +-
 .../version-2.7.0/reference-configuration.md       |   4 -
 .../version-2.7.0/reference-connector-admin.md     |   4 -
 .../version-2.7.0/reference-metrics.md             |   4 -
 .../version-2.7.0/reference-terminology.md         |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../version-2.7.0/schema-get-started.md            |   4 -
 .../versioned_docs/version-2.7.0/schema-manage.md  |  75 +--
 .../version-2.7.0/schema-understand.md             |   4 -
 .../version-2.7.0/security-athenz.md               |   4 -
 .../version-2.7.0/security-authorization.md        |   4 -
 .../version-2.7.0/security-bouncy-castle.md        |   4 -
 .../version-2.7.0/security-encryption.md           |   4 -
 .../version-2.7.0/security-extending.md            |   4 -
 .../versioned_docs/version-2.7.0/security-jwt.md   |  23 +-
 .../version-2.7.0/security-kerberos.md             |   4 -
 .../version-2.7.0/security-oauth2.md               |   4 -
 .../version-2.7.0/security-overview.md             |   4 -
 .../version-2.7.0/security-tls-authentication.md   |   4 -
 .../version-2.7.0/security-tls-keystore.md         |   4 -
 .../version-2.7.0/security-tls-transport.md        |  20 +-
 .../version-2.7.0/security-token-admin.md          |   4 -
 .../version-2.7.0/sql-deployment-configurations.md |   4 -
 .../version-2.7.0/sql-getting-started.md           |   4 -
 .../versioned_docs/version-2.7.0/sql-overview.md   |   4 -
 .../versioned_docs/version-2.7.0/sql-rest-api.md   |   4 -
 .../standalone-docker.md}                          |   0
 .../version-2.7.0/tiered-storage-aws.md            |   4 -
 .../version-2.7.0/tiered-storage-azure.md          |   4 -
 .../version-2.7.0/tiered-storage-filesystem.md     | 520 ++++++++++++++----
 .../version-2.7.0/tiered-storage-gcs.md            |   4 -
 .../version-2.7.0/tiered-storage-overview.md       |   4 -
 .../version-2.7.0/transaction-api.md               | 178 -------
 .../version-2.7.0/transaction-guarantee.md         |  21 -
 .../transactions-api.md}                           |   0
 .../transactions-guarantee.md}                     |   0
 .../transactions.md}                               |   0
 .../version-2.7.0/window-functions-context.md      |   4 -
 .../version-2.7.1/administration-pulsar-manager.md |   2 +-
 .../version-2.7.1/client-libraries-go.md           |   5 +-
 .../version-2.7.1/concepts-messaging.md            |   2 +-
 ...nary-protocol.md => develop-binary-protocol.md} |   0
 .../{developing-cpp.md => develop-cpp.md}          |   0
 ...ing-load-manager.md => develop-load-manager.md} |   0
 .../{developing-tools.md => develop-tools.md}      |   0
 .../kubernetes-helm.md}                            |   0
 .../version-2.7.1/reference-cli-tools.md           |   2 +-
 .../standalone-docker.md}                          |   0
 .../version-2.7.1/tiered-storage-filesystem.md     |  33 +-
 .../transactions-api.md}                           |   0
 ...tion-guarantee.md => transactions-guarantee.md} |   0
 .../transactions.md}                               |   0
 .../version-2.7.2/administration-pulsar-manager.md |   2 +-
 .../version-2.7.2/client-libraries-dotnet.md       |   2 +-
 .../version-2.7.2/client-libraries-go.md           |   5 +-
 .../version-2.7.2/concepts-messaging.md            |   2 +-
 .../versioned_docs/version-2.7.2/deploy-aws.md     |   2 +-
 .../version-2.7.2/deploy-bare-metal.md             |   2 +-
 .../kubernetes-helm.md}                            |   0
 .../version-2.7.2/reference-cli-tools.md           |   2 +-
 .../standalone-docker.md}                          |   0
 .../version-2.7.2/tiered-storage-filesystem.md     |  33 +-
 .../transactions-api.md}                           |   0
 .../transactions-guarantee.md}                     |   0
 .../transactions.md}                               |   0
 .../version-2.7.3/administration-pulsar-manager.md |   2 +-
 .../version-2.7.3/client-libraries-dotnet.md       |   2 +-
 .../version-2.7.3/client-libraries-go.md           |   5 +-
 .../version-2.7.3/concepts-messaging.md            |   2 +-
 .../versioned_docs/version-2.7.3/deploy-aws.md     |   2 +-
 ...nary-protocol.md => develop-binary-protocol.md} |   0
 .../{developing-cpp.md => develop-cpp.md}          |   0
 ...ing-load-manager.md => develop-load-manager.md} |   0
 .../versioned_docs/version-2.7.3/develop-schema.md |   6 +-
 .../{developing-tools.md => develop-tools.md}      |   0
 ...{getting-started-helm.md => kubernetes-helm.md} |   0
 .../version-2.7.3/reference-cli-tools.md           |   2 +-
 ...ting-started-docker.md => standalone-docker.md} |   0
 .../version-2.7.3/tiered-storage-filesystem.md     |  33 +-
 .../{transaction-api.md => transactions-api.md}    |   0
 .../transactions-guarantee.md}                     |   0
 .../{concepts-transactions.md => transactions.md}  |   0
 .../versioned_sidebars/version-2.7.0-sidebars.json |   2 +-
 .../versioned_sidebars/version-2.7.3-sidebars.json |   2 +-
 site2/website-next/versions.json                   |   2 +-
 212 files changed, 869 insertions(+), 4600 deletions(-)

diff --git a/site2/website-next/versioned_docs/version-2.7.0/adaptors-kafka.md b/site2/website-next/versioned_docs/version-2.7.0/adaptors-kafka.md
index 24bf975..f6ab170 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/adaptors-kafka.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/adaptors-kafka.md
@@ -5,10 +5,6 @@ sidebar_label: "Kafka client wrapper"
 original_id: adaptors-kafka
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 Pulsar provides an easy option for applications that are currently written using the [Apache Kafka](http://kafka.apache.org) Java client API.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/adaptors-spark.md b/site2/website-next/versioned_docs/version-2.7.0/adaptors-spark.md
index 856b32b..8e98b27 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/adaptors-spark.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/adaptors-spark.md
@@ -5,10 +5,6 @@ sidebar_label: "Apache Spark"
 original_id: adaptors-spark
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Spark Streaming receiver for Pulsar is a custom receiver that enables Apache [Spark Streaming](https://spark.apache.org/streaming/) to receive raw data from Pulsar.
 
 An application can receive data in [Resilient Distributed Dataset](https://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds) (RDD) format via the Spark Streaming receiver and can process it in a variety of ways.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/adaptors-storm.md b/site2/website-next/versioned_docs/version-2.7.0/adaptors-storm.md
index e4b07db..76d5071 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/adaptors-storm.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/adaptors-storm.md
@@ -5,10 +5,6 @@ sidebar_label: "Apache Storm"
 original_id: adaptors-storm
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Storm is an adaptor for integrating with [Apache Storm](http://storm.apache.org/) topologies. It provides core Storm implementations for sending and receiving data.
 
 An application can inject data into a Storm topology via a generic Pulsar spout, as well as consume data from a Storm topology via a generic Pulsar bolt.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-brokers.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-brokers.md
index 28adfdf..5f25271 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-brokers.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-brokers.md
@@ -32,20 +32,7 @@ Fetch all available active brokers that are serving traffic.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -84,20 +71,7 @@ It finds all namespaces which are owned and served by a given broker.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -150,20 +124,7 @@ But since all broker configuration in Pulsar is stored in ZooKeeper, configurati
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 The [`update-dynamic-config`](reference-pulsar-admin.md#brokers-update-dynamic-config) subcommand will update existing configuration. It takes two arguments: the name of the parameter and the new value using the `config` and `value` flag respectively. Here's an example for the [`brokerShutdownTimeoutMs`](reference-configuration.md#broker-brokerShutdownTimeoutMs) parameter:
@@ -197,20 +158,7 @@ admin.brokers().updateDynamicConfiguration(configName, configValue);
 Fetch a list of all potentially updatable configuration parameters.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -244,20 +192,7 @@ Fetch a list of all parameters that have been dynamically updated.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-clusters.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-clusters.md
index 17aa3a3..05b267f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-clusters.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-clusters.md
@@ -28,20 +28,7 @@ New clusters can be provisioned using the admin interface.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 You can provision a new cluster using the [`create`](reference-pulsar-admin.md#clusters-create) subcommand. Here's an example:
@@ -120,20 +107,7 @@ You can fetch the [configuration](reference-configuration) for an existing clust
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get`](reference-pulsar-admin.md#clusters-get) subcommand and specify the name of the cluster. Here's an example:
@@ -175,20 +149,7 @@ You can update the configuration for an existing cluster at any time.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update`](reference-pulsar-admin.md#clusters-update) subcommand and specify new configuration values using flags.
@@ -231,20 +192,7 @@ Clusters can be deleted from a Pulsar [instance](reference-terminology.md#instan
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#clusters-delete) subcommand and specify the name of the cluster.
@@ -279,20 +227,7 @@ You can fetch a list of all clusters in a Pulsar [instance](reference-terminolog
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#clusters-list) subcommand.
@@ -329,20 +264,7 @@ Peer clusters can be configured for a given cluster in a Pulsar [instance](refer
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update-peer-clusters`](reference-pulsar-admin.md#clusters-update-peer-clusters) subcommand and specify the list of peer-cluster names.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-functions.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-functions.md
index 6b31c12..3219740 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-functions.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-functions.md
@@ -33,20 +33,7 @@ You can create a Pulsar function in cluster mode (deploy it on a Pulsar cluster)
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`create`](reference-pulsar-admin.md#functions-create) subcommand. 
@@ -102,20 +89,7 @@ You can update a Pulsar function that has been deployed to a Pulsar cluster usin
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST Admin API",
-    "value": "REST Admin API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST Admin API","value":"REST Admin API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`update`](reference-pulsar-admin.md#functions-update) subcommand. 
@@ -166,20 +140,7 @@ You can start a stopped function instance with `instance-id` using Admin CLI, RE
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
@@ -218,20 +179,7 @@ You can start all stopped function instances using Admin CLI, REST API or Java A
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
@@ -271,20 +219,7 @@ You can stop a function instance with `instance-id` using Admin CLI, REST API or
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
@@ -325,20 +260,7 @@ You can stop all function instances using Admin CLI, REST API or Java Admin API.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
@@ -378,20 +300,7 @@ Restart a function instance with `instance-id` using Admin CLI, REST API or Java
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
@@ -432,20 +341,7 @@ You can restart all function instances using Admin CLI, REST API or Java admin A
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
@@ -485,20 +381,7 @@ You can list all Pulsar functions running under a specific tenant and namespace
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`list`](reference-pulsar-admin.md#functions-list) subcommand.
@@ -537,20 +420,7 @@ You can delete a Pulsar function that is running on a Pulsar cluster using Admin
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`delete`](reference-pulsar-admin.md#functions-delete) subcommand. 
@@ -590,20 +460,7 @@ You can get information about a Pulsar function currently running in cluster mod
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`get`](reference-pulsar-admin.md#functions-get) subcommand. 
@@ -642,20 +499,7 @@ admin.functions().getFunction(tenant, namespace, functionName);
 You can get the current status of a Pulsar function instance with `instance-id` using Admin CLI, REST API or Java Admin API.
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
@@ -696,20 +540,7 @@ You can get the current status of a Pulsar function instance using Admin CLI, RE
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
@@ -748,20 +579,7 @@ admin.functions().getFunctionStatus(tenant, namespace, functionName);
 You can get the current stats of a Pulsar Function instance with `instance-id` using Admin CLI, REST API or Java admin API.
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
@@ -802,20 +620,7 @@ You can get the current stats of a Pulsar function using Admin CLI, REST API or
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
@@ -855,20 +660,7 @@ You can trigger a specified Pulsar function with a supplied value using Admin CL
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`trigger`](reference-pulsar-admin.md#functions-trigger) subcommand. 
@@ -911,20 +703,7 @@ You can put the state associated with a Pulsar function using Admin CLI, REST AP
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`putstate`](reference-pulsar-admin.md#functions-putstate) subcommand. 
@@ -967,20 +746,7 @@ You can fetch the current state associated with a Pulsar function using Admin CL
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin CLI",
-    "value": "Java Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin CLI","value":"Java Admin CLI"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`querystate`](reference-pulsar-admin.md#functions-querystate) subcommand. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-namespaces.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-namespaces.md
index ced4c53..1e2f229 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-namespaces.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-namespaces.md
@@ -25,20 +25,7 @@ You can create new namespaces under a given [tenant](reference-terminology.md#te
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`create`](reference-pulsar-admin.md#namespaces-create) subcommand and specify the namespace by name:
@@ -73,20 +60,7 @@ You can fetch the current policies associated with a namespace at any time.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`policies`](reference-pulsar-admin.md#namespaces-policies) subcommand and specify the namespace:
@@ -142,20 +116,7 @@ You can list all namespaces within a given Pulsar [tenant](reference-terminology
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#namespaces-list) subcommand and specify the tenant:
@@ -192,20 +153,7 @@ You can delete existing namespaces from a tenant.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#namespaces-delete) subcommand and specify the namespace:
@@ -240,20 +188,7 @@ It sets replication clusters for a namespace, so Pulsar can internally replicate
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -291,20 +226,7 @@ It gives a list of replication clusters for a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -355,20 +277,7 @@ Backlog quota helps the broker to restrict bandwidth/storage of a namespace once
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -411,20 +320,7 @@ It shows a configured backlog quota for a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -472,20 +368,7 @@ It removes backlog quota policies for a given namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -536,20 +419,7 @@ Persistence policies allow to configure persistency-level for all topic messages
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -592,20 +462,7 @@ It shows the configured persistence policies of a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -653,20 +510,7 @@ The namespace bundle is a virtual group of topics which belong to the same names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -709,20 +553,7 @@ It configures message’s time to live (in seconds) duration.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -765,20 +596,7 @@ It gives a message ttl of configured namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -821,20 +639,7 @@ Remove a message TTL of the configured namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -878,20 +683,7 @@ If a single bundle is creating an excessive load on a broker, an admin splits th
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -934,20 +726,7 @@ It clears all message backlog for all the topics that belong to a specific names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -990,20 +769,7 @@ It clears all message backlog for all the topics that belong to a specific Names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1046,20 +812,7 @@ Each namespace contains multiple topics and the retention size (storage size) of
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1102,20 +855,7 @@ It shows retention information of a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1174,20 +914,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1227,20 +954,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1290,20 +1004,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1343,20 +1044,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1406,20 +1094,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1459,20 +1134,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1519,20 +1181,7 @@ It shows configured `deduplicationSnapshotInterval` for a namespace (Each topic
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1570,20 +1219,7 @@ Set configured `deduplicationSnapshotInterval` for a namespace. Each topic under
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1628,20 +1264,7 @@ Remove configured `deduplicationSnapshotInterval` of a namespace (Each topic und
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1686,20 +1309,7 @@ Use the [`unload`](reference-pulsar-admin.md#unload) subcommand of the [`namespa
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST",
-    "value": "REST"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST","value":"REST"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-partitioned-topics.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-partitioned-topics.md
index 232ce34..7662fcc 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-partitioned-topics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-partitioned-topics.md
@@ -5,8 +5,4 @@ sidebar_label: "Non-partitioned topics"
 original_id: admin-api-non-partitioned-topics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-persistent-topics.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-persistent-topics.md
index b468be2..12220de 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-persistent-topics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-non-persistent-topics.md
@@ -5,8 +5,4 @@ sidebar_label: "Non-Persistent topics"
 original_id: admin-api-non-persistent-topics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-overview.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-overview.md
index 420e1bc..61fbd4b 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-overview.md
@@ -49,20 +49,7 @@ Each of Pulsar's three admin interfaces---the [`pulsar-admin`](reference-pulsar-
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 If you have [authentication](security-overview.md#authentication-providers) enabled, you will need to provide an auth configuration to use the [`pulsar-admin`](reference-pulsar-admin) tool. By default, the configuration for the `pulsar-admin` tool is found in the [`conf/client.conf`](reference-configuration.md#client) file. Here are the available parameters:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-partitioned-topics.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-partitioned-topics.md
index f521bcc..6734586 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-partitioned-topics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-partitioned-topics.md
@@ -5,8 +5,4 @@ sidebar_label: "Partitioned topics"
 original_id: admin-api-partitioned-topics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-permissions.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-permissions.md
index 190122b..b9911a9 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-permissions.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-permissions.md
@@ -18,20 +18,7 @@ You can grant permissions to specific roles for lists of operations such as `pro
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`grant-permission`](reference-pulsar-admin.md#grant-permission) subcommand and specify a namespace, actions using the `--actions` flag, and a role using the `--role` flag:
@@ -107,20 +94,7 @@ You can see which permissions have been granted to which roles in a namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`permissions`](reference-pulsar-admin#permissions) subcommand and specify a namespace:
@@ -161,20 +135,7 @@ You can revoke permissions from specific roles, which means that those roles wil
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`revoke-permission`](reference-pulsar-admin.md#revoke-permission) subcommand and specify a namespace and a role using the `--role` flag:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-persistent-topics.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-persistent-topics.md
index 753781f..b6d293b 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-persistent-topics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-persistent-topics.md
@@ -5,8 +5,4 @@ sidebar_label: "Persistent topics"
 original_id: admin-api-persistent-topics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-schemas.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-schemas.md
index cd56ead..9ffe21f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-schemas.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-schemas.md
@@ -5,7 +5,3 @@ sidebar_label: "Schemas"
 original_id: admin-api-schemas
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-tenants.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-tenants.md
index 82880d1..4f55b7d 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-tenants.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-tenants.md
@@ -22,20 +22,7 @@ You can list all of the tenants associated with an [instance](reference-terminol
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#tenants-list) subcommand.
@@ -72,20 +59,7 @@ You can create a new tenant.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`create`](reference-pulsar-admin.md#tenants-create) subcommand:
@@ -132,20 +106,7 @@ You can fetch the [configuration](reference-configuration) for an existing tenan
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get`](reference-pulsar-admin.md#tenants-get) subcommand and specify the name of the tenant. Here's an example:
@@ -190,20 +151,7 @@ Tenants can be deleted from a Pulsar [instance](reference-terminology.md#instanc
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#tenants-delete) subcommand and specify the name of the tenant.
@@ -238,20 +186,7 @@ You can update a tenant's configuration.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update`](reference-pulsar-admin.md#tenants-update) subcommand.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/admin-api-topics.md b/site2/website-next/versioned_docs/version-2.7.0/admin-api-topics.md
index 6eef9fe..5290789 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/admin-api-topics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/admin-api-topics.md
@@ -41,20 +41,7 @@ You can get the list of topics under a given namespace in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -89,20 +76,7 @@ You can grant permissions on a client role to perform specific actions on a give
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -140,20 +114,7 @@ You can fetch permission in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -194,20 +155,7 @@ admin.topics().getPermissions(topic);
 You can revoke a permission granted on a client role in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -251,20 +199,7 @@ You can delete a topic in the following ways. You cannot delete a topic if any a
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -298,20 +233,7 @@ admin.topics().delete(topic);
 You can unload a topic in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -479,20 +401,7 @@ To get the status of a topic, you can use the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -640,20 +549,7 @@ The following is an example of the detailed statistics of a topic.
 To get the internal status of a topic, you can use the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -687,20 +583,7 @@ admin.topics().getInternalStats(topic);
 You can peek a number of messages for a specific subscription of a given topic in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -742,20 +625,7 @@ You can fetch the message with the given ledger ID and entry ID in the following
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -793,20 +663,7 @@ You can skip a number of messages for a specific subscription of a given topic i
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -844,20 +701,7 @@ You can skip all the old messages for a specific subscription of a given topic.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -894,20 +738,7 @@ You can reset a subscription cursor position back to the position which is recor
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -945,20 +776,7 @@ You can locate the broker URL which is serving the given topic in the following
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -995,20 +813,7 @@ You can check the range of the bundle which contains given topic in the followin
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1045,20 +850,7 @@ You can check all subscription names for a given topic in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1089,76 +881,13 @@ admin.topics().getSubscriptions(topic);
 
 </Tabs>
 
-### Unsubscribe
-
-When a subscription does not process messages any more, you can unsubscribe it in the following ways. 
-
-<Tabs 
-  defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
-<TabItem value="pulsar-admin">
-
-```shell
-
-$ pulsar-admin topics unsubscribe \
-  --subscription my-subscription \
-  persistent://test-tenant/ns1/tp1 \
-
-```
-
-</TabItem>
-<TabItem value="REST API">
-
-{@inject: endpoint|DELETE|/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription|operation/deleteSubscription?version=@pulsar:version_number@}
-
-</TabItem>
-<TabItem value="Java">
-
-```java
-
-String topic = "persistent://my-tenant/my-namespace/my-topic";
-String subscriptionName = "my-subscription";
-admin.topics().deleteSubscription(topic, subscriptionName);
-
-```
-
-</TabItem>
-
-</Tabs>
-
 ### Last Message Id
 
 You can get the last committed message ID for a persistent topic. It is available since 2.3.0 release.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1199,20 +928,7 @@ For more information about the two parameters, see [here](reference-configuratio
 You can create non-partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 When you create non-partitioned topics with the [`create`](reference-pulsar-admin.md#create-3) command, you need to specify the topic name as an argument.
@@ -1226,7 +942,7 @@ $ bin/pulsar-admin topics create \
 
 :::note
 
-When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic. 
+When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic.
 
 :::
 
@@ -1253,20 +969,7 @@ admin.topics().createNonPartitionedTopic(topicName);
 You can delete non-partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1299,20 +1002,7 @@ admin.topics().delete(topic);
 You can get the list of topics under a given namespace in the following ways.  
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1383,20 +1073,7 @@ You can check the current statistics of a given topic. The following is an examp
 You can check the current statistics of a given topic and its connected producers and consumers in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1439,20 +1116,7 @@ For more information about the two parameters, see [here](reference-configuratio
 You can create partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 When you create partitioned topics with the [`create-partitioned-topic`](reference-pulsar-admin.md#create-partitioned-topic)
@@ -1498,20 +1162,7 @@ When topic auto-creation is disabled, and you have a partitioned topic without a
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can create missed partitions with the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command and specify the topic name as an argument.
@@ -1552,20 +1203,7 @@ Field | Description
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can check the number of partitions in a partitioned topic with the [`get-partitioned-topic-metadata`](reference-pulsar-admin.md#get-partitioned-topic-metadata) subcommand. 
@@ -1607,20 +1245,7 @@ Producers and consumers can find the newly created partitions automatically.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can update partitioned topics with the [`update-partitioned-topic`](reference-pulsar-admin.md#update-partitioned-topic) command.
@@ -1656,20 +1281,7 @@ You can delete partitioned topics with the [`delete-partitioned-topic`](referenc
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1701,20 +1313,7 @@ admin.topics().delete(topic);
 You can get the list of partitioned topics under a given namespace in the following ways.  
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1805,20 +1404,7 @@ You can check the current statistics of a given partitioned topic and its connec
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1894,20 +1480,7 @@ You can get the internal stats for the partitioned topic in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -2028,4 +1601,106 @@ If a message has a key, it supersedes the round robin routing policy. The follow
 
 ```
 
-        
\ No newline at end of file
+## Manage subscriptions
+You can use [Pulsar admin API](admin-api-overview) to create, check, and delete subscriptions.
+### Create subscription
+You can create a subscription for a topic using one of the following methods.
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics create-subscription \
+--subscription my-subscription \
+persistent://test-tenant/ns1/tp1
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|PUT|/admin/v2/persistent/:tenant/:namespace/:topic/subscription/:subscription|operation/createSubscriptions?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+String subscriptionName = "my-subscription";
+admin.topics().createSubscription(topic, subscriptionName, MessageId.latest);
+
+```
+
+</TabItem>
+
+</Tabs>
+### Get subscription
+You can check all subscription names for a given topic using one of the following methods.
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics subscriptions \
+persistent://test-tenant/ns1/tp1 \
+my-subscription
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/subscriptions|operation/getSubscriptions?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+admin.topics().getSubscriptions(topic);
+
+```
+
+</TabItem>
+
+</Tabs>
+### Unsubscribe subscription 
+When a subscription does not process messages any more, you can unsubscribe it using one of the following methods. 
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics unsubscribe \
+--subscription my-subscription \
+persistent://test-tenant/ns1/tp1
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|DELETE|/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription|operation/deleteSubscription?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+String subscriptionName = "my-subscription";
+admin.topics().deleteSubscription(topic, subscriptionName);
+
+```
+
+</TabItem>
+
+</Tabs>
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-dashboard.md b/site2/website-next/versioned_docs/version-2.7.0/administration-dashboard.md
index 64f9030..514b076 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-dashboard.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-dashboard.md
@@ -5,9 +5,6 @@ sidebar_label: "Dashboard"
 original_id: administration-dashboard
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 :::note
 
 Pulsar dashboard is deprecated. If you want to manage and monitor the stats of your topics, use [Pulsar Manager](administration-pulsar-manager). 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-geo.md b/site2/website-next/versioned_docs/version-2.7.0/administration-geo.md
index 82db21d..f0170ad 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-geo.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-geo.md
@@ -5,10 +5,6 @@ sidebar_label: "Geo-replication"
 original_id: administration-geo
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 *Geo-replication* is the replication of persistently stored message data across multiple clusters of a Pulsar instance.
 
 ## How geo-replication works
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-load-balance.md b/site2/website-next/versioned_docs/version-2.7.0/administration-load-balance.md
index a14142b..3efba60 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-load-balance.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-load-balance.md
@@ -5,10 +5,6 @@ sidebar_label: "Load balance"
 original_id: administration-load-balance
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Load balance across Pulsar brokers
 
 Pulsar is an horizontally scalable messaging system, so the traffic
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-proxy.md b/site2/website-next/versioned_docs/version-2.7.0/administration-proxy.md
index 821aa4d..c046ed3 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-proxy.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-proxy.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar proxy"
 original_id: administration-proxy
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar proxy is an optional gateway. Pulsar proxy is used when direction connections between clients and Pulsar brokers are either infeasible or undesirable. For example, when you run Pulsar in a cloud environment or on [Kubernetes](https://kubernetes.io) or an analogous platform, you can run Pulsar proxy.
 
 ## Configure the proxy
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-pulsar-manager.md b/site2/website-next/versioned_docs/version-2.7.0/administration-pulsar-manager.md
index 6c8945e..dd8a392 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-pulsar-manager.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-pulsar-manager.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar Manager"
 original_id: administration-pulsar-manager
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Manager is a web-based GUI management and monitoring tool that helps administrators and users manage and monitor tenants, namespaces, topics, subscriptions, brokers, clusters, and so on, and supports dynamic configuration of multiple environments.
 
 :::note
@@ -107,7 +103,7 @@ If you want to enable JWT authentication, use one of the following methods.
 
 ```
 
-wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/apache-pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
+wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
 tar -zxvf apache-pulsar-manager-0.2.0-bin.tar.gz
 cd pulsar-manager
 tar -zxvf pulsar-manager.tar
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-stats.md b/site2/website-next/versioned_docs/version-2.7.0/administration-stats.md
index 029ebf2..ac0c036 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-stats.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-stats.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar statistics"
 original_id: administration-stats
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Partitioned topics
 
 |Stat|Description|
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-upgrade.md b/site2/website-next/versioned_docs/version-2.7.0/administration-upgrade.md
index aefdd81..72d136b 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-upgrade.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-upgrade.md
@@ -5,10 +5,6 @@ sidebar_label: "Upgrade"
 original_id: administration-upgrade
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Upgrade guidelines
 
 Apache Pulsar is comprised of multiple components, ZooKeeper, bookies, and brokers. These components are either stateful or stateless. You do not have to upgrade ZooKeeper nodes unless you have special requirement. While you upgrade, you need to pay attention to bookies (stateful), brokers and proxies (stateless).
diff --git a/site2/website-next/versioned_docs/version-2.7.0/administration-zk-bk.md b/site2/website-next/versioned_docs/version-2.7.0/administration-zk-bk.md
index 2ed9989..de10d50 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/administration-zk-bk.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/administration-zk-bk.md
@@ -5,10 +5,6 @@ sidebar_label: "ZooKeeper and BookKeeper"
 original_id: administration-zk-bk
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar relies on two external systems for essential tasks:
 
 * [ZooKeeper](https://zookeeper.apache.org/) is responsible for a wide variety of configuration-related and coordination-related tasks.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cgo.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cgo.md
index b7e216f..c79f7bb 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cgo.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cgo.md
@@ -5,10 +5,6 @@ sidebar_label: "CGo(deprecated)"
 original_id: client-libraries-cgo
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use Pulsar Go client to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Go (aka Golang).
 
 All the methods in [producers](#producers), [consumers](#consumers), and [readers](#readers) of a Go client are thread-safe.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cpp.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cpp.md
index 6e7a091..bb52d9e 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cpp.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-cpp.md
@@ -5,10 +5,6 @@ sidebar_label: "C++"
 original_id: client-libraries-cpp
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use Pulsar C++ client to create Pulsar producers and consumers in C++.
 
 All the methods in producer, consumer, and reader of a C++ client are thread-safe.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-dotnet.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-dotnet.md
index 68c5810..4e0afe3 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-dotnet.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-dotnet.md
@@ -5,15 +5,11 @@ sidebar_label: "C#"
 original_id: client-libraries-dotnet
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the Pulsar C# client (DotPulsar) to create Pulsar producers and consumers in C#. All the methods in the producer, consumer, and reader of a C# client are thread-safe. The official documentation for DotPulsar is available [here](https://github.com/apache/pulsar-dotpulsar/wiki).
 
 ## Installation
 
-You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio , see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
+You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio, see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
 
 ### Prerequisites
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-go.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-go.md
index e6d3c56..df40107 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-go.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-go.md
@@ -5,10 +5,6 @@ sidebar_label: "Go"
 original_id: client-libraries-go
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > Tips: Currently, the CGo client will be deprecated, if you want to know more about the CGo client, please refer to [CGo client docs](client-libraries-cgo)
 
 You can use Pulsar [Go client](https://github.com/apache/pulsar-client-go) to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Go (aka Golang).
@@ -196,8 +192,9 @@ if err != nil {
 defer client.Close()
 
 topicName := newTopicName()
-producer, err := client.CreateProducer(ProducerOptions{
-	Topic: topicName,
+producer, err := client.CreateProducer(pulsar.ProducerOptions{
+    Topic:           topicName,
+    DisableBatching: true,
 })
 if err != nil {
 	log.Fatal(err)
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-java.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-java.md
index 7ab17ec..d92cf5a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-java.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-java.md
@@ -5,10 +5,6 @@ sidebar_label: "Java"
 original_id: client-libraries-java
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use Pulsar Java client to create Java [producer](#producer), [consumer](#consumer), and [readers](#reader-interface) of messages and to perform [administrative tasks](admin-api-overview). The current version of the Java client is **@pulsar:version@**.
 
 All the methods in [producer](#producer), [consumer](#consumer), and [reader](#reader) of a Java client are thread-safe.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-node.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-node.md
index bae5df0..961114e 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-node.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-node.md
@@ -5,10 +5,6 @@ sidebar_label: "Node.js"
 original_id: client-libraries-node
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Pulsar Node.js client can be used to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Node.js.
 
 All the methods in [producers](#producers), [consumers](#consumers), and [readers](#readers) of a Node.js client are thread-safe.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-python.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-python.md
index fb440cf..f9f9392 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-python.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-python.md
@@ -5,10 +5,6 @@ sidebar_label: "Python"
 original_id: client-libraries-python
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Python client library is a wrapper over the existing [C++ client library](client-libraries-cpp) and exposes all of the [same features](/api/cpp). You can find the code in the [`python` subdirectory](https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/python) of the C++ client code.
 
 All the methods in producer, consumer, and reader of a Python client are thread-safe.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-websocket.md b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-websocket.md
index 9ed1005..cdf87d7 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/client-libraries-websocket.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/client-libraries-websocket.md
@@ -5,10 +5,6 @@ sidebar_label: "WebSocket"
 original_id: client-libraries-websocket
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) API provides a simple way to interact with Pulsar using languages that do not have an official [client library](getting-started-clients). Through WebSocket, you can publish and consume messages and use features available on the [Client Features Matrix](https://github.com/apache/pulsar/wiki/Client-Features-Matrix) page.
 
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-architecture-overview.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-architecture-overview.md
index 2719db4..c65f914 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-architecture-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-architecture-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Architecture"
 original_id: concepts-architecture-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 At the highest level, a Pulsar instance is composed of one or more Pulsar clusters. Clusters within an instance can [replicate](concepts-replication) data amongst themselves.
 
 In a Pulsar cluster:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-authentication.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-authentication.md
index 5580a0b..b375ecb 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-authentication.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-authentication.md
@@ -5,9 +5,5 @@ sidebar_label: "Authentication and Authorization"
 original_id: concepts-authentication
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar supports a pluggable [authentication](security-overview.md) mechanism which can be configured at the proxy and/or the broker. Pulsar also supports a pluggable [authorization](security-authorization) mechanism. These mechanisms work together to identify the client and its access rights on topics, namespaces and tenants.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-clients.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-clients.md
index 36bef54..b68f76a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-clients.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-clients.md
@@ -5,10 +5,6 @@ sidebar_label: "Clients"
 original_id: concepts-clients
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar exposes a client API with language bindings for [Java](client-libraries-java.md), [Go](client-libraries-go.md), [Python](client-libraries-python.md), [C++](client-libraries-cpp.md) and [C#](client-libraries-dotnet). The client API optimizes and encapsulates Pulsar's client-broker communication protocol and exposes a simple and intuitive API for use by applications.
 
 Under the hood, the current official Pulsar client libraries support transparent reconnection and/or connection failover to brokers, queuing of messages until acknowledged by the broker, and heuristics such as connection retries with backoff.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-messaging.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-messaging.md
index a70a3b5..a285cc9 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-messaging.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-messaging.md
@@ -70,7 +70,7 @@ When you enable chunking, read the following instructions.
 - Chunking is only supported for persisted topics.
 - Chunking is only supported for the exclusive and failover subscription types.
 
-When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
+When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
 
 The consumer consumes the chunked messages and buffers them until the consumer receives all the chunks of a message. And then the consumer stitches chunked messages together and places them into the receiver-queue. Clients consume messages from the receiver-queue. Once the consumer consumes the entire large message and acknowledges it, the consumer internally sends acknowledgement of all the chunk messages associated to that large message. You can set the `maxPendingChuckedMessage` param [...]
 
@@ -272,10 +272,10 @@ A subscription is a named configuration rule that determines how messages are de
 > * If you want to achieve "message queuing" among consumers, share the same subscription name among multiple consumers(shared, failover, key_shared).
 > * If you want to achieve both effects simultaneously, combine exclusive subscription type with other subscription types for consumers.
 
-### Consumerless Subscriptions and Their Corresponding Types
+### Subscription types
 When a subscription has no consumers, its subscription type is undefined. The type of a subscription is defined when a consumer connects to it, and the type can be changed by restarting all consumers with a different configuration.
 
-### Exclusive
+#### Exclusive
 
 In *exclusive* type, only a single consumer is allowed to attach to the subscription. If multiple consumers subscribe to a topic using the same subscription, an error occurs.
 
@@ -285,7 +285,7 @@ In the diagram below, only **Consumer A-0** is allowed to consume messages.
 
 ![Exclusive subscriptions](/assets/pulsar-exclusive-subscriptions.png)
 
-### Failover
+#### Failover
 
 In *Failover* type, multiple consumers can attach to the same subscription. A master consumer is picked for non-partitioned topic or each partition of partitioned topic and receives messages. When the master consumer disconnects, all (non-acknowledged and subsequent) messages are delivered to the next consumer in line.
 
@@ -297,33 +297,92 @@ In the diagram below, **Consumer-B-0** is the master consumer while **Consumer-B
 
 ![Failover subscriptions](/assets/pulsar-failover-subscriptions.png)
 
-### Shared
+#### Shared
 
 In *shared* or *round robin* mode, multiple consumers can attach to the same subscription. Messages are delivered in a round robin distribution across consumers, and any given message is delivered to only one consumer. When a consumer disconnects, all the messages that were sent to it and not acknowledged will be rescheduled for sending to the remaining consumers.
 
 In the diagram below, **Consumer-C-1** and **Consumer-C-2** are able to subscribe to the topic, but **Consumer-C-3** and others could as well.
 
-> **Limitations of shared mode**
-> When using shared mode, be aware that:
+> **Limitations of shared type**
+> When using Shared type, be aware that:
 > * Message ordering is not guaranteed.
-> * You cannot use cumulative acknowledgment with shared mode.
+> * You cannot use cumulative acknowledgment with Shared type.
 
 ![Shared subscriptions](/assets/pulsar-shared-subscriptions.png)
 
-### Key_Shared
+#### Key_Shared
 
-In *Key_Shared* mode, multiple consumers can attach to the same subscription. Messages are delivered in a distribution across consumers and message with same key or same ordering key are delivered to only one consumer. No matter how many times the message is re-delivered, it is delivered to the same consumer. When a consumer connected or disconnected will cause served consumer change for some key of message.
+In *Key_Shared* type, multiple consumers can attach to the same subscription. Messages are delivered in a distribution across consumers and message with same key or same ordering key are delivered to only one consumer. No matter how many times the message is re-delivered, it is delivered to the same consumer. When a consumer connected or disconnected will cause served consumer change for some key of message.
 
-> **Limitations of Key_Shared mode**
-> When you use Key_Shared mode, be aware that:
+> **Limitations of Key_Shared type**
+> When you use Key_Shared type, be aware that:
 > * You need to specify a key or orderingKey for messages.
-> * You cannot use cumulative acknowledgment with Key_Shared mode.
+> * You cannot use cumulative acknowledgment with Key_Shared type.
 > * Your producers should disable batching or use a key-based batch builder.
 
 ![Key_Shared subscriptions](/assets/pulsar-key-shared-subscriptions.png)
 
 **You can disable Key_Shared subscription in the `broker.config` file.**
 
+### Subscription modes
+
+#### What is a subscription mode
+
+The subscription mode indicates the cursor type. 
+
+- When a subscription is created, an associated cursor is created to record the last consumed position. 
+- When a consumer of the subscription restarts, it can continue consuming from the last message it consumes.
+
+Subscription mode | Description | Note
+|---|---|---
+`Durable`|The cursor is durable, which retains messages and persists the current position. <br /><br />If a broker restarts from a failure, it can recover the cursor from the persistent storage (BookKeeper), so that messages can continue to be consumed from the last consumed position.|`Durable` is the **default** subscription mode.
+`NonDurable`|The cursor is non-durable. <br /><br />Once a broker stops, the cursor is lost and can never be recovered, so that messages **can not** continue to be consumed from the last consumed position.|Reader’s subscription mode is `NonDurable` in nature and it does not prevent data in a topic from being deleted. Reader’s subscription mode **can not** be changed. 
+
+A [subscription](#concepts-messaging.md/#subscriptions) can have one or more consumers. When a consumer subscribes to a topic, it must specify the subscription name. A durable subscription and a non-durable subscription can have the same name, they are independent of each other. If a consumer specifies a subscription which does not exist before, the subscription is automatically created.
+
+#### When to use
+
+By default, messages of a topic without any durable subscriptions are marked as deleted. If you want to prevent the messages being marked as deleted, you can create a durable subscription for this topic. In this case, only acknowledged messages are marked as deleted. For more information, see [message retention and expiry](cookbooks-retention-expiry).
+
+#### How to use
+
+After a consumer is created, the default subscription mode of the consumer is `Durable`. You can change the subscription mode to `NonDurable` by making changes to the consumer’s configuration.
+
+<Tabs 
+  defaultValue="Durable"
+  values={[{"label":"Durable","value":"Durable"},{"label":"Non-durable","value":"Non-durable"}]}>
+
+<TabItem value="Durable">
+
+```java
+
+        Consumer<byte[]> consumer = pulsarClient.newConsumer()
+                .topic("my-topic")
+                .subscriptionName("my-sub")
+                .subscriptionMode(SubscriptionMode.Durable)
+                .subscribe();
+
+```
+
+</TabItem>
+<TabItem value="Non-durable">
+
+```java
+
+        Consumer<byte[]> consumer = pulsarClient.newConsumer()
+                .topic("my-topic")
+                .subscriptionName("my-sub")
+                .subscriptionMode(SubscriptionMode.NonDurable)
+                .subscribe();
+
+```
+
+</TabItem>
+
+</Tabs>
+
+For how to create, check, or delete a durable subscription, see [manage subscriptions](admin-api-topics.md/#manage-subscriptions).
+
 ## Multi-topic subscriptions
 
 When a consumer subscribes to a Pulsar topic, by default it subscribes to one specific topic, such as `persistent://public/default/my-topic`. As of Pulsar version 1.23.0-incubating, however, Pulsar consumers can simultaneously subscribe to multiple topics. You can define a list of topics in two ways:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-multi-tenancy.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-multi-tenancy.md
index 2c556c9..be752cc 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-multi-tenancy.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-multi-tenancy.md
@@ -5,10 +5,6 @@ sidebar_label: "Multi Tenancy"
 original_id: concepts-multi-tenancy
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar was created from the ground up as a multi-tenant system. To support multi-tenancy, Pulsar has a concept of tenants. Tenants can be spread across clusters and can each have their own [authentication and authorization](security-overview) scheme applied to them. They are also the administrative unit at which storage quotas, [message TTL](cookbooks-retention-expiry.md#time-to-live-ttl), and isolation policies can be managed.
 
 The multi-tenant nature of Pulsar is reflected mostly visibly in topic URLs, which have this structure:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-multiple-advertised-listeners.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-multiple-advertised-listeners.md
index a5e9663..f2e1ae0 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-multiple-advertised-listeners.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-multiple-advertised-listeners.md
@@ -5,10 +5,6 @@ sidebar_label: "Multiple advertised listeners"
 original_id: concepts-multiple-advertised-listeners
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 When a Pulsar cluster is deployed in the production environment, it may require to expose multiple advertised addresses for the broker. For example, when you deploy a Pulsar cluster in Kubernetes and want other clients, which are not in the same Kubernetes cluster, to connect to the Pulsar cluster, you need to assign a broker URL to external clients. But clients in the same Kubernetes cluster can still connect to the Pulsar cluster through the internal network of Kubernetes.
 
 ## Advertised listeners
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-overview.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-overview.md
index 9638ae7..b903fa4 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: concepts-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar is a multi-tenant, high-performance solution for server-to-server messaging. Pulsar was originally developed by Yahoo, it is under the stewardship of the [Apache Software Foundation](https://www.apache.org/).
 
 Key features of Pulsar are listed below:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-proxy-sni-routing.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-proxy-sni-routing.md
index 6501a66..329959e 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-proxy-sni-routing.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-proxy-sni-routing.md
@@ -5,10 +5,6 @@ sidebar_label: "Proxy support with SNI routing"
 original_id: concepts-proxy-sni-routing
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Pulsar Proxy with SNI routing
 A proxy server is an intermediary server that forwards requests from multiple clients to different servers across the Internet. The proxy server acts as a "traffic cop" in both forward and reverse proxy scenarios, and benefits your system such as load balancing, performance, security, auto-scaling, and so on.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-replication.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-replication.md
index 0be527a..6e23962 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-replication.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-replication.md
@@ -5,9 +5,5 @@ sidebar_label: "Geo Replication"
 original_id: concepts-replication
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar enables messages to be produced and consumed in different geo-locations. For instance, your application may be publishing data in one region or market and you would like to process it for consumption in other regions or markets. [Geo-replication](administration-geo) in Pulsar enables you to do that.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-tiered-storage.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-tiered-storage.md
index 8207661..0b45b0a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-tiered-storage.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-tiered-storage.md
@@ -5,10 +5,6 @@ sidebar_label: "Tiered Storage"
 original_id: concepts-tiered-storage
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's segment oriented architecture allows for topic backlogs to grow very large, effectively without limit. However, this can become expensive over time.
 
 One way to alleviate this cost is to use Tiered Storage. With tiered storage, older messages in the backlog can be moved from BookKeeper to a cheaper storage mechanism, while still allowing clients to access the backlog as if nothing had changed.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-topic-compaction.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-topic-compaction.md
index c685721..c85e703 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-topic-compaction.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/concepts-topic-compaction.md
@@ -5,10 +5,6 @@ sidebar_label: "Topic Compaction"
 original_id: concepts-topic-compaction
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar was built with highly scalable [persistent storage](concepts-architecture-overview.md#persistent-storage) of message data as a primary objective. Pulsar topics enable you to persistently store as many unacknowledged messages as you need while preserving message ordering. By default, Pulsar stores *all* unacknowledged/unprocessed messages produced on a topic. Accumulating many unacknowledged messages on a topic is necessary for many Pulsar use cases but it can also be very time int [...]
 
 > For a more practical guide to topic compaction, see the [Topic compaction cookbook](cookbooks-compaction).
diff --git a/site2/website-next/versioned_docs/version-2.7.0/concepts-transactions.md b/site2/website-next/versioned_docs/version-2.7.0/concepts-transactions.md
deleted file mode 100644
index 9e44d4f..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/concepts-transactions.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-id: transactions
-title: Transactions
-sidebar_label: "Overview"
-original_id: transactions
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-Transactional semantics enable event streaming applications to consume, process, and produce messages in one atomic operation. In Pulsar, a producer or consumer can work with messages across multiple topics and partitions and ensure those messages are processed as a single unit. 
-
-The following concepts help you understand Pulsar transactions.
-
-## Transaction coordinator and transaction log
-The transaction coordinator maintains the topics and subscriptions that interact in a transaction. When a transaction is committed, the transaction coordinator interacts with the topic owner broker to complete the transaction.
-
-The transaction coordinator maintains the entire life cycle of transactions, and prevents a transaction from incorrect status.
-
-The transaction coordinator handles transaction timeout, and ensures that the transaction is aborted after a transaction timeout.
-
-All the transaction metadata is persisted in the transaction log. The transaction log is backed by a Pulsar topic. After the transaction coordinator crashes, it can restore the transaction metadata from the transaction log.
-
-## Transaction ID
-The transaction ID (TxnID) identifies a unique transaction in Pulsar. The transaction ID is 128-bit. The highest 16 bits are reserved for the ID of the transaction coordinator, and the remaining bits are used for monotonically increasing numbers in each transaction coordinator. It is easy to locate the transaction crash with the TxnID.
-
-## Transaction buffer
-Messages produced within a transaction are stored in the transaction buffer. The messages in transaction buffer are not materialized (visible) to consumers until the transactions are committed. The messages in the transaction buffer are discarded when the transactions are aborted. 
-
-## Pending acknowledge state
-Message acknowledges within a transaction are maintained by the pending acknowledge state before the transaction completes. If a message is in the pending acknowledge state, the message cannot be acknowledged by other transactions until the message is removed from the pending acknowledge state.
-
-The pending acknowledge state is persisted to the pending acknowledge log. The pending acknowledge log is backed by a Pulsar topic. A new broker can restore the state from the pending acknowledge log to ensure the acknowledgement is not lost.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-bookkeepermetadata.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-bookkeepermetadata.md
index ee8df2b..b0fa98d 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-bookkeepermetadata.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-bookkeepermetadata.md
@@ -4,10 +4,6 @@ title: BookKeeper Ledger Metadata
 original_id: cookbooks-bookkeepermetadata
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar stores data on BookKeeper ledgers, you can understand the contents of a ledger by inspecting the metadata attached to the ledger.
 Such metadata are stored on ZooKeeper and they are readable using BookKeeper APIs.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-compaction.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-compaction.md
index ebcf4ba..0a36233 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-compaction.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-compaction.md
@@ -5,10 +5,6 @@ sidebar_label: "Topic compaction"
 original_id: cookbooks-compaction
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's [topic compaction](concepts-topic-compaction.md#compaction) feature enables you to create **compacted** topics in which older, "obscured" entries are pruned from the topic, allowing for faster reads through the topic's history (which messages are deemed obscured/outdated/irrelevant will depend on your use case).
 
 To use compaction:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-deduplication.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-deduplication.md
index 332228c..1669afa 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-deduplication.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-deduplication.md
@@ -77,20 +77,7 @@ The instructions for Java, Python, and C++ clients are different.
 
 <Tabs 
   defaultValue="Java clients"
-  values={[
-  {
-    "label": "Java clients",
-    "value": "Java clients"
-  },
-  {
-    "label": "Python clients",
-    "value": "Python clients"
-  },
-  {
-    "label": "C++ clients",
-    "value": "C++ clients"
-  }
-]}>
+  values={[{"label":"Java clients","value":"Java clients"},{"label":"Python clients","value":"Python clients"},{"label":"C++ clients","value":"C++ clients"}]}>
 <TabItem value="Java clients">
 
 To enable message deduplication on a [Java producer](client-libraries-java.md#producers), set the producer name using the `producerName` setter, and set the timeout to `0` using the `sendTimeout` setter. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-encryption.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-encryption.md
index c782e69..f0d8fb8 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-encryption.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-encryption.md
@@ -5,10 +5,6 @@ sidebar_label: "Encryption"
 original_id: cookbooks-encryption
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar encryption allows applications to encrypt messages at the producer and decrypt at the consumer. Encryption is performed using the public/private key pair configured by the application. Encrypted messages can only be decrypted by consumers with a valid key.
 
 ## Asymmetric and symmetric encryption
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-message-queue.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-message-queue.md
index 2e4d0e8..eb43cbd 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-message-queue.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-message-queue.md
@@ -5,10 +5,6 @@ sidebar_label: "Message queue"
 original_id: cookbooks-message-queue
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Message queues are essential components of many large-scale data architectures. If every single work object that passes through your system absolutely *must* be processed in spite of the slowness or downright failure of this or that system component, there's a good chance that you'll need a message queue to step in and ensure that unprocessed data is retained---with correct ordering---until the required actions are taken.
 
 Pulsar is a great choice for a message queue because:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-non-persistent.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-non-persistent.md
index f10d837..391569a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-non-persistent.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-non-persistent.md
@@ -5,10 +5,6 @@ sidebar_label: "Non-persistent messaging"
 original_id: cookbooks-non-persistent
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 **Non-persistent topics** are Pulsar topics in which message data is *never* [persistently stored](concepts-architecture-overview.md#persistent-storage) and kept only in memory. This cookbook provides:
 
 * A basic [conceptual overview](#overview) of non-persistent topics
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-partitioned.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-partitioned.md
index 5535276..7882fb9 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-partitioned.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-partitioned.md
@@ -4,8 +4,4 @@ title: Partitioned topics
 sidebar_label: "Partitioned Topics"
 original_id: cookbooks-partitioned
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-retention-expiry.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-retention-expiry.md
index 60441a3..b68caab 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-retention-expiry.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-retention-expiry.md
@@ -64,20 +64,7 @@ You can set a retention policy for a namespace by specifying the namespace, a si
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can use the [`set-retention`](reference-pulsar-admin.md#namespaces-set-retention) subcommand and specify a namespace, a size limit using the `-s`/`--size` flag, and a time limit using the `-t`/`--time` flag. 
@@ -141,7 +128,7 @@ $ pulsar-admin namespaces set-retention my-tenant/my-ns \
 
 :::note
 
-To disable the retention policy, you need to set both the size and time limit to `0`. Set either size or time limit to `0` is invalid. 
+To disable the retention policy, you need to set both the size and time limit to `0`. Set either size or time limit to `0` is invalid.
 
 :::
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-tiered-storage.md b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-tiered-storage.md
index 9f5aa62..2d2255f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/cookbooks-tiered-storage.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/cookbooks-tiered-storage.md
@@ -5,10 +5,6 @@ sidebar_label: "Tiered Storage"
 original_id: cookbooks-tiered-storage
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's **Tiered Storage** feature allows older backlog data to be offloaded to long term storage, thereby freeing up space in BookKeeper and reducing storage costs. This cookbook walks you through using tiered storage in your Pulsar cluster.
 
 * Tiered storage uses [Apache jclouds](https://jclouds.apache.org) to support [Amazon S3](https://aws.amazon.com/s3/) and [Google Cloud Storage](https://cloud.google.com/storage/)(GCS for short) for long term storage. With Jclouds, it is easy to add support for more [cloud storage providers](https://jclouds.apache.org/reference/providers/#blobstore-providers) in the future.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-aws.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-aws.md
index 09c0440..6323051 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-aws.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-aws.md
@@ -5,10 +5,6 @@ sidebar_label: "Amazon Web Services"
 original_id: deploy-aws
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > For instructions on deploying a single Pulsar cluster manually rather than using Terraform and Ansible, see [Deploying a Pulsar cluster on bare metal](deploy-bare-metal.md). For instructions on manually deploying a multi-cluster Pulsar instance, see [Deploying a Pulsar instance on bare metal](deploy-bare-metal-multi-cluster).
 
 One of the easiest ways to get a Pulsar [cluster](reference-terminology.md#cluster) running on [Amazon Web Services](https://aws.amazon.com/) (AWS) is to use the [Terraform](https://terraform.io) infrastructure provisioning tool and the [Ansible](https://www.ansible.com) server automation tool. Terraform can create the resources necessary for running the Pulsar cluster---[EC2](https://aws.amazon.com/ec2/) instances, networking and security infrastructure, etc.---While Ansible can install [...]
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal-multi-cluster.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal-multi-cluster.md
index 783b171..c81f2ef 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal-multi-cluster.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal-multi-cluster.md
@@ -5,23 +5,19 @@ sidebar_label: "Bare metal multi-cluster"
 original_id: deploy-bare-metal-multi-cluster
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-> ### Tips
->
-> 1. Single-cluster Pulsar installations should be sufficient for all but the most ambitious use cases. If you are interested in experimenting with
-> Pulsar or using it in a startup or on a single team, you had better opt for a single cluster. For instructions on deploying a single cluster,
-> see the guide [here](deploy-bare-metal).
->
-> 2. If you want to use all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you need to download `apache-pulsar-io-connectors`
-> package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you
-> run a separate cluster of function workers for [Pulsar Functions](functions-overview).
->
-> 3. If you want to use [Tiered Storage](concepts-tiered-storage) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`
-> package and install `apache-pulsar-offloaders` under `offloaders` directory in the pulsar directory on every broker node. For more details of how to configure
-> this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+:::tip
+
+1. Single-cluster Pulsar installations should be sufficient for all but the most ambitious use cases. If you are interested in experimenting with
+Pulsar or using it in a startup or on a single team, you had better opt for a single cluster. For instructions on deploying a single cluster,
+see the guide [here](deploy-bare-metal).
+2. If you want to use all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you need to download `apache-pulsar-io-connectors`
+package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you
+run a separate cluster of function workers for [Pulsar Functions](functions-overview).
+3. If you want to use [Tiered Storage](concepts-tiered-storage) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`
+package and install `apache-pulsar-offloaders` under `offloaders` directory in the pulsar directory on every broker node. For more details of how to configure
+this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+
+:::
 
 A Pulsar *instance* consists of multiple Pulsar clusters working in unison. You can distribute clusters across data centers or geographical regions and replicate the clusters amongst themselves using [geo-replication](administration-geo). Deploying a multi-cluster Pulsar instance involves the following basic steps:
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal.md
index 6ffea83..b24cc82 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-bare-metal.md
@@ -5,24 +5,19 @@ sidebar_label: "Bare metal"
 original_id: deploy-bare-metal
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-
-> ### Tips
->
-> 1. Single-cluster Pulsar installations should be sufficient for all but the most ambitious use cases. If you are interested in experimenting with
-> Pulsar or using Pulsar in a startup or on a single team, it is simplest to opt for a single cluster. If you do need to run a multi-cluster Pulsar instance,
-> see the guide [here](deploy-bare-metal-multi-cluster).
->
-> 2. If you want to use all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you need to download `apache-pulsar-io-connectors`
-> package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you
-> have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
->
-> 3. If you want to use [Tiered Storage](concepts-tiered-storage) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`
-> package and install `apache-pulsar-offloaders` under `offloaders` directory in the pulsar directory on every broker node. For more details of how to configure
-> this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+:::tip
+
+1. Single-cluster Pulsar installations should be sufficient for all but the most ambitious use cases. If you are interested in experimenting with
+Pulsar or using Pulsar in a startup or on a single team, it is simplest to opt for a single cluster. If you do need to run a multi-cluster Pulsar instance,
+see the guide [here](deploy-bare-metal-multi-cluster).
+2. If you want to use all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you need to download `apache-pulsar-io-connectors`
+package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you
+have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
+3. If you want to use [Tiered Storage](concepts-tiered-storage) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`
+package and install `apache-pulsar-offloaders` under `offloaders` directory in the pulsar directory on every broker node. For more details of how to configure
+this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+
+:::
 
 Deploying a Pulsar cluster involves doing the following (in order):
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-dcos.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-dcos.md
index 14a3635..f5f8d1f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-dcos.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-dcos.md
@@ -5,14 +5,12 @@ sidebar_label: "DC/OS"
 original_id: deploy-dcos
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+:::tip
 
+If you want to enable all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you can choose to use `apachepulsar/pulsar-all` image instead of
+`apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled [all builtin connectors](io-overview.md#working-with-connectors).
 
-> ### Tips
->
-> If you want to enable all builtin [Pulsar IO](io-overview) connectors in your Pulsar deployment, you can choose to use `apachepulsar/pulsar-all` image instead of
-> `apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled [all builtin connectors](io-overview.md#working-with-connectors).
+:::
 
 [DC/OS](https://dcos.io/) (the <strong>D</strong>ata<strong>C</strong>enter <strong>O</strong>perating <strong>S</strong>ystem) is a distributed operating system used for deploying and managing applications and systems on [Apache Mesos](http://mesos.apache.org/). DC/OS is an open-source tool that [Mesosphere](https://mesosphere.com/) creates and maintains .
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-docker.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-docker.md
index f76318f..64a0939 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-docker.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-docker.md
@@ -5,10 +5,6 @@ sidebar_label: "Docker"
 original_id: deploy-docker
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 To deploy a Pulsar cluster on Docker, complete the following steps:
 1. Deploy a ZooKeeper cluster (optional)
 2. Initialize cluster metadata
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-kubernetes.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-kubernetes.md
index f8f4500..dc7123d 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-kubernetes.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-kubernetes.md
@@ -5,10 +5,6 @@ sidebar_label: "Kubernetes"
 original_id: deploy-kubernetes
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 To get up and running with these charts as fast as possible, in a **non-production** use case, we provide
 a [quick start guide](getting-started-helm) for Proof of Concept (PoC) deployments.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/deploy-monitoring.md b/site2/website-next/versioned_docs/version-2.7.0/deploy-monitoring.md
index 3961c6a..01915e0 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/deploy-monitoring.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/deploy-monitoring.md
@@ -5,10 +5,6 @@ sidebar_label: "Monitor"
 original_id: deploy-monitoring
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use different ways to monitor a Pulsar cluster, exposing both metrics related to the usage of topics and the overall health of the individual components of the cluster.
 
 ## Collect metrics
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-binary-protocol.md b/site2/website-next/versioned_docs/version-2.7.0/develop-binary-protocol.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/developing-binary-protocol.md
copy to site2/website-next/versioned_docs/version-2.7.0/develop-binary-protocol.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-cpp.md b/site2/website-next/versioned_docs/version-2.7.0/develop-cpp.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/developing-cpp.md
copy to site2/website-next/versioned_docs/version-2.7.0/develop-cpp.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-load-manager.md b/site2/website-next/versioned_docs/version-2.7.0/develop-load-manager.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/developing-load-manager.md
copy to site2/website-next/versioned_docs/version-2.7.0/develop-load-manager.md
diff --git a/site2/website-next/versioned_docs/version-2.7.0/develop-schema.md b/site2/website-next/versioned_docs/version-2.7.0/develop-schema.md
index 1a30faf..e71c04e 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/develop-schema.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/develop-schema.md
@@ -5,10 +5,6 @@ sidebar_label: "Custom schema storage"
 original_id: develop-schema
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 By default, Pulsar stores data type [schemas](concepts-schema-registry) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
 
 In order to use a non-default (i.e. non-BookKeeper) storage system for Pulsar schemas, you need to implement two Java interfaces: [`SchemaStorage`](#schemastorage-interface) and [`SchemaStorageFactory`](#schemastoragefactory-interface).
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-tools.md b/site2/website-next/versioned_docs/version-2.7.0/develop-tools.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/developing-tools.md
copy to site2/website-next/versioned_docs/version-2.7.0/develop-tools.md
diff --git a/site2/website-next/versioned_docs/version-2.7.0/developing-binary-protocol.md b/site2/website-next/versioned_docs/version-2.7.0/developing-binary-protocol.md
deleted file mode 100644
index 3a202a3..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/developing-binary-protocol.md
+++ /dev/null
@@ -1,585 +0,0 @@
----
-id: develop-binary-protocol
-title: Pulsar binary protocol specification
-sidebar_label: "Binary protocol"
-original_id: develop-binary-protocol
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-Pulsar uses a custom binary protocol for communications between producers/consumers and brokers. This protocol is designed to support required features, such as acknowledgements and flow control, while ensuring maximum transport and implementation efficiency.
-
-Clients and brokers exchange *commands* with each other. Commands are formatted as binary [protocol buffer](https://developers.google.com/protocol-buffers/) (aka *protobuf*) messages. The format of protobuf commands is specified in the [`PulsarApi.proto`](https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/proto/PulsarApi.proto) file and also documented in the [Protobuf interface](#protobuf-interface) section below.
-
-> ### Connection sharing
-> Commands for different producers and consumers can be interleaved and sent through the same connection without restriction.
-
-All commands associated with Pulsar's protocol are contained in a [`BaseCommand`](#pulsar.proto.BaseCommand) protobuf message that includes a [`Type`](#pulsar.proto.Type) [enum](https://developers.google.com/protocol-buffers/docs/proto#enum) with all possible subcommands as optional fields. `BaseCommand` messages can specify only one subcommand.
-
-## Framing
-
-Since protobuf doesn't provide any sort of message frame, all messages in the Pulsar protocol are prepended with a 4-byte field that specifies the size of the frame. The maximum allowable size of a single frame is 5 MB.
-
-The Pulsar protocol allows for two types of commands:
-
-1. **Simple commands** that do not carry a message payload.
-2. **Payload commands** that bear a payload that is used when publishing or delivering messages. In payload commands, the protobuf command data is followed by protobuf [metadata](#message-metadata) and then the payload, which is passed in raw format outside of protobuf. All sizes are passed as 4-byte unsigned big endian integers.
-
-> Message payloads are passed in raw format rather than protobuf format for efficiency reasons.
-
-### Simple commands
-
-Simple (payload-free) commands have this basic structure:
-
-| Component   | Description                                                                             | Size (in bytes) |
-|:------------|:----------------------------------------------------------------------------------------|:----------------|
-| totalSize   | The size of the frame, counting everything that comes after it (in bytes)               | 4               |
-| commandSize | The size of the protobuf-serialized command                                             | 4               |
-| message     | The protobuf message serialized in a raw binary format (rather than in protobuf format) |                 |
-
-### Payload commands
-
-Payload commands have this basic structure:
-
-| Component    | Description                                                                                 | Size (in bytes) |
-|:-------------|:--------------------------------------------------------------------------------------------|:----------------|
-| totalSize    | The size of the frame, counting everything that comes after it (in bytes)                   | 4               |
-| commandSize  | The size of the protobuf-serialized command                                                 | 4               |
-| message      | The protobuf message serialized in a raw binary format (rather than in protobuf format)     |                 |
-| magicNumber  | A 2-byte byte array (`0x0e01`) identifying the current format                               | 2               |
-| checksum     | A [CRC32-C checksum](http://www.evanjones.ca/crc32c.html) of everything that comes after it | 4               |
-| metadataSize | The size of the message [metadata](#message-metadata)                                       | 4               |
-| metadata     | The message [metadata](#message-metadata) stored as a binary protobuf message               |                 |
-| payload      | Anything left in the frame is considered the payload and can include any sequence of bytes  |                 |
-
-## Message metadata
-
-Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed on unchanged to the consumer.
-
-| Field                                | Description                                                                                                                                                                                                                                               |
-|:-------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `producer_name`                      | The name of the producer that published the message                                                                                                                                                                                         |
-| `sequence_id`                        | The sequence ID of the message, assigned by producer                                                                                                                                                                                        |
-| `publish_time`                       | The publish timestamp in Unix time (i.e. as the number of milliseconds since January 1st, 1970 in UTC)                                                                                                                                                    |
-| `properties`                         | A sequence of key/value pairs (using the [`KeyValue`](https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/proto/PulsarApi.proto#L32) message). These are application-defined keys and values with no special meaning to Pulsar. |
-| `replicated_from` *(optional)*       | Indicates that the message has been replicated and specifies the name of the [cluster](reference-terminology.md#cluster) where the message was originally published                                                                                                             |
-| `partition_key` *(optional)*         | While publishing on a partition topic, if the key is present, the hash of the key is used to determine which partition to choose                                                                                                                          |
-| `compression` *(optional)*           | Signals that payload has been compressed and with which compression library                                                                                                                                                                               |
-| `uncompressed_size` *(optional)*     | If compression is used, the producer must fill the uncompressed size field with the original payload size                                                                                                                                                 |
-| `num_messages_in_batch` *(optional)* | If this message is really a [batch](#batch-messages) of multiple entries, this field must be set to the number of messages in the batch                                                                                                                   |
-
-### Batch messages
-
-When using batch messages, the payload will be containing a list of entries,
-each of them with its individual metadata, defined by the `SingleMessageMetadata`
-object.
-
-
-For a single batch, the payload format will look like this:
-
-
-| Field         | Description                                                 |
-|:--------------|:------------------------------------------------------------|
-| metadataSizeN | The size of the single message metadata serialized Protobuf |
-| metadataN     | Single message metadata                                     |
-| payloadN      | Message payload passed by application                       |
-
-Each metadata field looks like this;
-
-| Field                      | Description                                             |
-|:---------------------------|:--------------------------------------------------------|
-| properties                 | Application-defined properties                          |
-| partition key *(optional)* | Key to indicate the hashing to a particular partition   |
-| payload_size               | Size of the payload for the single message in the batch |
-
-When compression is enabled, the whole batch will be compressed at once.
-
-## Interactions
-
-### Connection establishment
-
-After opening a TCP connection to a broker, typically on port 6650, the client
-is responsible to initiate the session.
-
-![Connect interaction](/assets/binary-protocol-connect.png)
-
-After receiving a `Connected` response from the broker, the client can
-consider the connection ready to use. Alternatively, if the broker doesn't
-validate the client authentication, it will reply with an `Error` command and
-close the TCP connection.
-
-Example:
-
-```protobuf
-
-message CommandConnect {
-  "client_version" : "Pulsar-Client-Java-v1.15.2",
-  "auth_method_name" : "my-authentication-plugin",
-  "auth_data" : "my-auth-data",
-  "protocol_version" : 6
-}
-
-```
-
-Fields:
- * `client_version` → String based identifier. Format is not enforced
- * `auth_method_name` → *(optional)* Name of the authentication plugin if auth
-   enabled
- * `auth_data` → *(optional)* Plugin specific authentication data
- * `protocol_version` → Indicates the protocol version supported by the
-   client. Broker will not send commands introduced in newer revisions of the
-   protocol. Broker might be enforcing a minimum version
-
-```protobuf
-
-message CommandConnected {
-  "server_version" : "Pulsar-Broker-v1.15.2",
-  "protocol_version" : 6
-}
-
-```
-
-Fields:
- * `server_version` → String identifier of broker version
- * `protocol_version` → Protocol version supported by the broker. Client
-   must not attempt to send commands introduced in newer revisions of the
-   protocol
-
-### Keep Alive
-
-To identify prolonged network partitions between clients and brokers or cases
-in which a machine crashes without interrupting the TCP connection on the remote
-end (eg: power outage, kernel panic, hard reboot...), we have introduced a
-mechanism to probe for the availability status of the remote peer.
-
-Both clients and brokers are sending `Ping` commands periodically and they will
-close the socket if a `Pong` response is not received within a timeout (default
-used by broker is 60s).
-
-A valid implementation of a Pulsar client is not required to send the `Ping`
-probe, though it is required to promptly reply after receiving one from the
-broker in order to prevent the remote side from forcibly closing the TCP connection.
-
-
-### Producer
-
-In order to send messages, a client needs to establish a producer. When creating
-a producer, the broker will first verify that this particular client is
-authorized to publish on the topic.
-
-Once the client gets confirmation of the producer creation, it can publish
-messages to the broker, referring to the producer id negotiated before.
-
-![Producer interaction](/assets/binary-protocol-producer.png)
-
-##### Command Producer
-
-```protobuf
-
-message CommandProducer {
-  "topic" : "persistent://my-property/my-cluster/my-namespace/my-topic",
-  "producer_id" : 1,
-  "request_id" : 1
-}
-
-```
-
-Parameters:
- * `topic` → Complete topic name to where you want to create the producer on
- * `producer_id` → Client generated producer identifier. Needs to be unique
-    within the same connection
- * `request_id` → Identifier for this request. Used to match the response with
-    the originating request. Needs to be unique within the same connection
- * `producer_name` → *(optional)* If a producer name is specified, the name will
-    be used, otherwise the broker will generate a unique name. Generated
-    producer name is guaranteed to be globally unique. Implementations are
-    expected to let the broker generate a new producer name when the producer
-    is initially created, then reuse it when recreating the producer after
-    reconnections.
-
-The broker will reply with either `ProducerSuccess` or `Error` commands.
-
-##### Command ProducerSuccess
-
-```protobuf
-
-message CommandProducerSuccess {
-  "request_id" :  1,
-  "producer_name" : "generated-unique-producer-name"
-}
-
-```
-
-Parameters:
- * `request_id` → Original id of the `CreateProducer` request
- * `producer_name` → Generated globally unique producer name or the name
-    specified by the client, if any.
-
-##### Command Send
-
-Command `Send` is used to publish a new message within the context of an
-already existing producer. This command is used in a frame that includes command
-as well as message payload, for which the complete format is specified in the [payload commands](#payload-commands) section.
-
-```protobuf
-
-message CommandSend {
-  "producer_id" : 1,
-  "sequence_id" : 0,
-  "num_messages" : 1
-}
-
-```
-
-Parameters:
- * `producer_id` → id of an existing producer
- * `sequence_id` → each message has an associated sequence id which is expected
-   to be implemented with a counter starting at 0. The `SendReceipt` that
-   acknowledges the effective publishing of a messages will refer to it by
-   its sequence id.
- * `num_messages` → *(optional)* Used when publishing a batch of messages at
-   once.
-
-##### Command SendReceipt
-
-After a message has been persisted on the configured number of replicas, the
-broker will send the acknowledgment receipt to the producer.
-
-```protobuf
-
-message CommandSendReceipt {
-  "producer_id" : 1,
-  "sequence_id" : 0,
-  "message_id" : {
-    "ledgerId" : 123,
-    "entryId" : 456
-  }
-}
-
-```
-
-Parameters:
- * `producer_id` → id of producer originating the send request
- * `sequence_id` → sequence id of the published message
- * `message_id` → message id assigned by the system to the published message
-   Unique within a single cluster. Message id is composed of 2 longs, `ledgerId`
-   and `entryId`, that reflect that this unique id is assigned when appending
-   to a BookKeeper ledger
-
-
-##### Command CloseProducer
-
-**Note**: *This command can be sent by either producer or broker*.
-
-When receiving a `CloseProducer` command, the broker will stop accepting any
-more messages for the producer, wait until all pending messages are persisted
-and then reply `Success` to the client.
-
-The broker can send a `CloseProducer` command to client when it's performing
-a graceful failover (eg: broker is being restarted, or the topic is being unloaded
-by load balancer to be transferred to a different broker).
-
-When receiving the `CloseProducer`, the client is expected to go through the
-service discovery lookup again and recreate the producer again. The TCP
-connection is not affected.
-
-### Consumer
-
-A consumer is used to attach to a subscription and consume messages from it.
-After every reconnection, a client needs to subscribe to the topic. If a
-subscription is not already there, a new one will be created.
-
-![Consumer](/assets/binary-protocol-consumer.png)
-
-#### Flow control
-
-After the consumer is ready, the client needs to *give permission* to the
-broker to push messages. This is done with the `Flow` command.
-
-A `Flow` command gives additional *permits* to send messages to the consumer.
-A typical consumer implementation will use a queue to accumulate these messages
-before the application is ready to consume them.
-
-After the application has dequeued half of the messages in the queue, the consumer 
-sends permits to the broker to ask for more messages (equals to half of the messages in the queue).
-
-For example, if the queue size is 1000 and the consumer consumes 500 messages in the queue.
-Then the consumer sends permits to the broker to ask for 500 messages.
-
-##### Command Subscribe
-
-```protobuf
-
-message CommandSubscribe {
-  "topic" : "persistent://my-property/my-cluster/my-namespace/my-topic",
-  "subscription" : "my-subscription-name",
-  "subType" : "Exclusive",
-  "consumer_id" : 1,
-  "request_id" : 1
-}
-
-```
-
-Parameters:
- * `topic` → Complete topic name to where you want to create the consumer on
- * `subscription` → Subscription name
- * `subType` → Subscription type: Exclusive, Shared, Failover, Key_Shared
- * `consumer_id` → Client generated consumer identifier. Needs to be unique
-    within the same connection
- * `request_id` → Identifier for this request. Used to match the response with
-    the originating request. Needs to be unique within the same connection
- * `consumer_name` → *(optional)* Clients can specify a consumer name. This
-    name can be used to track a particular consumer in the stats. Also, in
-    Failover subscription type, the name is used to decide which consumer is
-    elected as *master* (the one receiving messages): consumers are sorted by
-    their consumer name and the first one is elected master.
-
-##### Command Flow
-
-```protobuf
-
-message CommandFlow {
-  "consumer_id" : 1,
-  "messagePermits" : 1000
-}
-
-```
-
-Parameters:
-* `consumer_id` → Id of an already established consumer
-* `messagePermits` → Number of additional permits to grant to the broker for
-  pushing more messages
-
-##### Command Message
-
-Command `Message` is used by the broker to push messages to an existing consumer,
-within the limits of the given permits.
-
-
-This command is used in a frame that includes the message payload as well, for
-which the complete format is specified in the [payload commands](#payload-commands)
-section.
-
-```protobuf
-
-message CommandMessage {
-  "consumer_id" : 1,
-  "message_id" : {
-    "ledgerId" : 123,
-    "entryId" : 456
-  }
-}
-
-```
-
-##### Command Ack
-
-An `Ack` is used to signal to the broker that a given message has been
-successfully processed by the application and can be discarded by the broker.
-
-In addition, the broker will also maintain the consumer position based on the
-acknowledged messages.
-
-```protobuf
-
-message CommandAck {
-  "consumer_id" : 1,
-  "ack_type" : "Individual",
-  "message_id" : {
-    "ledgerId" : 123,
-    "entryId" : 456
-  }
-}
-
-```
-
-Parameters:
- * `consumer_id` → Id of an already established consumer
- * `ack_type` → Type of acknowledgment: `Individual` or `Cumulative`
- * `message_id` → Id of the message to acknowledge
- * `validation_error` → *(optional)* Indicates that the consumer has discarded
-   the messages due to: `UncompressedSizeCorruption`,
-   `DecompressionError`, `ChecksumMismatch`, `BatchDeSerializeError`
-
-##### Command CloseConsumer
-
-***Note***: **This command can be sent by either producer or broker*.
-
-This command behaves the same as [`CloseProducer`](#command-closeproducer)
-
-##### Command RedeliverUnacknowledgedMessages
-
-A consumer can ask the broker to redeliver some or all of the pending messages
-that were pushed to that particular consumer and not yet acknowledged.
-
-The protobuf object accepts a list of message ids that the consumer wants to
-be redelivered. If the list is empty, the broker will redeliver all the
-pending messages.
-
-On redelivery, messages can be sent to the same consumer or, in the case of a
-shared subscription, spread across all available consumers.
-
-
-##### Command ReachedEndOfTopic
-
-This is sent by a broker to a particular consumer, whenever the topic
-has been "terminated" and all the messages on the subscription were
-acknowledged.
-
-The client should use this command to notify the application that no more
-messages are coming from the consumer.
-
-##### Command ConsumerStats
-
-This command is sent by the client to retrieve Subscriber and Consumer level 
-stats from the broker.
-Parameters:
- * `request_id` → Id of the request, used to correlate the request 
-      and the response.
- * `consumer_id` → Id of an already established consumer.
-
-##### Command ConsumerStatsResponse
-
-This is the broker's response to ConsumerStats request by the client. 
-It contains the Subscriber and Consumer level stats of the `consumer_id` sent in the request.
-If the `error_code` or the `error_message` field is set it indicates that the request has failed.
-
-##### Command Unsubscribe
-
-This command is sent by the client to unsubscribe the `consumer_id` from the associated topic.
-Parameters:
- * `request_id` → Id of the request.
- * `consumer_id` → Id of an already established consumer which needs to unsubscribe.
-
-
-## Service discovery
-
-### Topic lookup
-
-Topic lookup needs to be performed each time a client needs to create or
-reconnect a producer or a consumer. Lookup is used to discover which particular
-broker is serving the topic we are about to use.
-
-Lookup can be done with a REST call as described in the [admin API](admin-api-topics.md#lookup-of-topic)
-docs.
-
-Since Pulsar-1.16 it is also possible to perform the lookup within the binary
-protocol.
-
-For the sake of example, let's assume we have a service discovery component
-running at `pulsar://broker.example.com:6650`
-
-Individual brokers will be running at `pulsar://broker-1.example.com:6650`,
-`pulsar://broker-2.example.com:6650`, ...
-
-A client can use a connection to the discovery service host to issue a
-`LookupTopic` command. The response can either be a broker hostname to
-connect to, or a broker hostname to which retry the lookup.
-
-The `LookupTopic` command has to be used in a connection that has already
-gone through the `Connect` / `Connected` initial handshake.
-
-![Topic lookup](/assets/binary-protocol-topic-lookup.png)
-
-```protobuf
-
-message CommandLookupTopic {
-  "topic" : "persistent://my-property/my-cluster/my-namespace/my-topic",
-  "request_id" : 1,
-  "authoritative" : false
-}
-
-```
-
-Fields:
- * `topic` → Topic name to lookup
- * `request_id` → Id of the request that will be passed with its response
- * `authoritative` → Initial lookup request should use false. When following a
-   redirect response, client should pass the same value contained in the
-   response
-
-##### LookupTopicResponse
-
-Example of response with successful lookup:
-
-```protobuf
-
-message CommandLookupTopicResponse {
-  "request_id" : 1,
-  "response" : "Connect",
-  "brokerServiceUrl" : "pulsar://broker-1.example.com:6650",
-  "brokerServiceUrlTls" : "pulsar+ssl://broker-1.example.com:6651",
-  "authoritative" : true
-}
-
-```
-
-Example of lookup response with redirection:
-
-```protobuf
-
-message CommandLookupTopicResponse {
-  "request_id" : 1,
-  "response" : "Redirect",
-  "brokerServiceUrl" : "pulsar://broker-2.example.com:6650",
-  "brokerServiceUrlTls" : "pulsar+ssl://broker-2.example.com:6651",
-  "authoritative" : true
-}
-
-```
-
-In this second case, we need to reissue the `LookupTopic` command request
-to `broker-2.example.com` and this broker will be able to give a definitive
-answer to the lookup request.
-
-### Partitioned topics discovery
-
-Partitioned topics metadata discovery is used to find out if a topic is a
-"partitioned topic" and how many partitions were set up.
-
-If the topic is marked as "partitioned", the client is expected to create
-multiple producers or consumers, one for each partition, using the `partition-X`
-suffix.
-
-This information only needs to be retrieved the first time a producer or
-consumer is created. There is no need to do this after reconnections.
-
-The discovery of partitioned topics metadata works very similar to the topic
-lookup. The client send a request to the service discovery address and the
-response will contain actual metadata.
-
-##### Command PartitionedTopicMetadata
-
-```protobuf
-
-message CommandPartitionedTopicMetadata {
-  "topic" : "persistent://my-property/my-cluster/my-namespace/my-topic",
-  "request_id" : 1
-}
-
-```
-
-Fields:
- * `topic` → the topic for which to check the partitions metadata
- * `request_id` → Id of the request that will be passed with its response
-
-
-##### Command PartitionedTopicMetadataResponse
-
-Example of response with metadata:
-
-```protobuf
-
-message CommandPartitionedTopicMetadataResponse {
-  "request_id" : 1,
-  "response" : "Success",
-  "partitions" : 32
-}
-
-```
-
-## Protobuf interface
-
-All Pulsar's Protobuf definitions can be found {@inject: github:here:/pulsar-common/src/main/proto/PulsarApi.proto}.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/developing-cpp.md b/site2/website-next/versioned_docs/version-2.7.0/developing-cpp.md
deleted file mode 100644
index 76c5671..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/developing-cpp.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-id: develop-cpp
-title: Building Pulsar C++ client
-sidebar_label: "Building Pulsar C++ client"
-original_id: develop-cpp
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-## Supported platforms
-
-The Pulsar C++ client has been successfully tested on **MacOS** and **Linux**.
-
-## System requirements
-
-You need to have the following installed to use the C++ client:
-
-* [CMake](https://cmake.org/)
-* [Boost](http://www.boost.org/)
-* [Protocol Buffers](https://developers.google.com/protocol-buffers/) 2.6
-* [Log4CXX](https://logging.apache.org/log4cxx)
-* [libcurl](https://curl.haxx.se/libcurl/)
-* [Google Test](https://github.com/google/googletest)
-* [JsonCpp](https://github.com/open-source-parsers/jsoncpp)
-
-## Compilation
-
-There are separate compilation instructions for [MacOS](#macos) and [Linux](#linux). For both systems, start by cloning the Pulsar repository:
-
-```shell
-
-$ git clone https://github.com/apache/pulsar
-
-```
-
-### Linux
-
-First, install all of the necessary dependencies:
-
-```shell
-
-$ apt-get install cmake libssl-dev libcurl4-openssl-dev liblog4cxx-dev \
-  libprotobuf-dev protobuf-compiler libboost-all-dev google-mock libgtest-dev libjsoncpp-dev
-
-```
-
-Then compile and install [Google Test](https://github.com/google/googletest):
-
-```shell
-
-# libgtest-dev version is 1.18.0 or above
-$ cd /usr/src/googletest
-$ sudo cmake .
-$ sudo make
-$ sudo cp ./googlemock/libgmock.a ./googlemock/gtest/libgtest.a /usr/lib/
-
-# less than 1.18.0
-$ cd /usr/src/gtest
-$ sudo cmake .
-$ sudo make
-$ sudo cp libgtest.a /usr/lib
-
-$ cd /usr/src/gmock
-$ sudo cmake .
-$ sudo make
-$ sudo cp libgmock.a /usr/lib
-
-```
-
-Finally, compile the Pulsar client library for C++ inside the Pulsar repo:
-
-```shell
-
-$ cd pulsar-client-cpp
-$ cmake .
-$ make
-
-```
-
-The resulting files, `libpulsar.so` and `libpulsar.a`, will be placed in the `lib` folder of the repo while two tools, `perfProducer` and `perfConsumer`, will be placed in the `perf` directory.
-
-### MacOS
-
-First, install all of the necessary dependencies:
-
-```shell
-
-# OpenSSL installation
-$ brew install openssl
-$ export OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/
-$ export OPENSSL_ROOT_DIR=/usr/local/opt/openssl/
-
-# Protocol Buffers installation
-$ brew tap homebrew/versions
-$ brew install protobuf260
-$ brew install boost
-$ brew install log4cxx
-
-# Google Test installation
-$ git clone https://github.com/google/googletest.git
-$ cd googletest
-$ cmake .
-$ make install
-
-```
-
-Then compile the Pulsar client library in the repo that you cloned:
-
-```shell
-
-$ cd pulsar-client-cpp
-$ cmake .
-$ make
-
-```
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/developing-load-manager.md b/site2/website-next/versioned_docs/version-2.7.0/developing-load-manager.md
deleted file mode 100644
index ed60d5c..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/developing-load-manager.md
+++ /dev/null
@@ -1,231 +0,0 @@
----
-id: develop-load-manager
-title: Modular load manager
-sidebar_label: "Modular load manager"
-original_id: develop-load-manager
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-The *modular load manager*, implemented in  [`ModularLoadManagerImpl`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java), is a flexible alternative to the previously implemented load manager, [`SimpleLoadManagerImpl`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java), which attempts to simplify how load  [...]
-
-## Usage
-
-There are two ways that you can enable the modular load manager:
-
-1. Change the value of the `loadManagerClassName` parameter in `conf/broker.conf` from `org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl` to `org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl`.
-2. Using the `pulsar-admin` tool. Here's an example:
-
-   ```shell
-   
-   $ pulsar-admin update-dynamic-config \
-    --config loadManagerClassName \
-    --value org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl
-   
-   ```
-
-   You can use the same method to change back to the original value. In either case, any mistake in specifying the load manager will cause Pulsar to default to `SimpleLoadManagerImpl`.
-
-## Verification
-
-There are a few different ways to determine which load manager is being used:
-
-1. Use `pulsar-admin` to examine the `loadManagerClassName` element:
-
-   ```shell
-   
-   $ bin/pulsar-admin brokers get-all-dynamic-config
-   {
-    "loadManagerClassName" : "org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl"
-   }
-   
-   ```
-
-   If there is no `loadManagerClassName` element, then the default load manager is used.
-
-2. Consult a ZooKeeper load report. With the module load manager, the load report in `/loadbalance/brokers/...` will have many differences. for example the `systemResourceUsage` sub-elements (`bandwidthIn`, `bandwidthOut`, etc.) are now all at the top level. Here is an example load report from the module load manager:
-
-   ```json
-   
-   {
-     "bandwidthIn": {
-       "limit": 10240000.0,
-       "usage": 4.256510416666667
-     },
-     "bandwidthOut": {
-       "limit": 10240000.0,
-       "usage": 5.287239583333333
-     },
-     "bundles": [],
-     "cpu": {
-       "limit": 2400.0,
-       "usage": 5.7353247655435915
-     },
-     "directMemory": {
-       "limit": 16384.0,
-       "usage": 1.0
-     }
-   }
-   
-   ```
-
-   With the simple load manager, the load report in `/loadbalance/brokers/...` will look like this:
-
-   ```json
-   
-   {
-     "systemResourceUsage": {
-       "bandwidthIn": {
-         "limit": 10240000.0,
-         "usage": 0.0
-       },
-       "bandwidthOut": {
-         "limit": 10240000.0,
-         "usage": 0.0
-       },
-       "cpu": {
-         "limit": 2400.0,
-         "usage": 0.0
-       },
-       "directMemory": {
-         "limit": 16384.0,
-         "usage": 1.0
-       },
-       "memory": {
-         "limit": 8192.0,
-         "usage": 3903.0
-       }
-     }
-   }
-   
-   ```
-
-3. The command-line [broker monitor](reference-cli-tools.md#monitor-brokers) will have a different output format depending on which load manager implementation is being used.
-
-   Here is an example from the modular load manager:
-
-   ```
-   
-   ===================================================================================================================
-   ||SYSTEM         |CPU %          |MEMORY %       |DIRECT %       |BW IN %        |BW OUT %       |MAX %          ||
-   ||               |0.00           |48.33          |0.01           |0.00           |0.00           |48.33          ||
-   ||COUNT          |TOPIC          |BUNDLE         |PRODUCER       |CONSUMER       |BUNDLE +       |BUNDLE -       ||
-   ||               |4              |4              |0              |2              |4              |0              ||
-   ||LATEST         |MSG/S IN       |MSG/S OUT      |TOTAL          |KB/S IN        |KB/S OUT       |TOTAL          ||
-   ||               |0.00           |0.00           |0.00           |0.00           |0.00           |0.00           ||
-   ||SHORT          |MSG/S IN       |MSG/S OUT      |TOTAL          |KB/S IN        |KB/S OUT       |TOTAL          ||
-   ||               |0.00           |0.00           |0.00           |0.00           |0.00           |0.00           ||
-   ||LONG           |MSG/S IN       |MSG/S OUT      |TOTAL          |KB/S IN        |KB/S OUT       |TOTAL          ||
-   ||               |0.00           |0.00           |0.00           |0.00           |0.00           |0.00           ||
-   ===================================================================================================================
-   
-   ```
-
-   Here is an example from the simple load manager:
-
-   ```
-   
-   ===================================================================================================================
-   ||COUNT          |TOPIC          |BUNDLE         |PRODUCER       |CONSUMER       |BUNDLE +       |BUNDLE -       ||
-   ||               |4              |4              |0              |2              |0              |0              ||
-   ||RAW SYSTEM     |CPU %          |MEMORY %       |DIRECT %       |BW IN %        |BW OUT %       |MAX %          ||
-   ||               |0.25           |47.94          |0.01           |0.00           |0.00           |47.94          ||
-   ||ALLOC SYSTEM   |CPU %          |MEMORY %       |DIRECT %       |BW IN %        |BW OUT %       |MAX %          ||
-   ||               |0.20           |1.89           |               |1.27           |3.21           |3.21           ||
-   ||RAW MSG        |MSG/S IN       |MSG/S OUT      |TOTAL          |KB/S IN        |KB/S OUT       |TOTAL          ||
-   ||               |0.00           |0.00           |0.00           |0.01           |0.01           |0.01           ||
-   ||ALLOC MSG      |MSG/S IN       |MSG/S OUT      |TOTAL          |KB/S IN        |KB/S OUT       |TOTAL          ||
-   ||               |54.84          |134.48         |189.31         |126.54         |320.96         |447.50         ||
-   ===================================================================================================================
-   
-   ```
-
-It is important to note that the module load manager is _centralized_, meaning that all requests to assign a bundle---whether it's been seen before or whether this is the first time---only get handled by the _lead_ broker (which can change over time). To determine the current lead broker, examine the `/loadbalance/leader` node in ZooKeeper.
-
-## Implementation
-
-### Data
-
-The data monitored by the modular load manager is contained in the [`LoadData`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadData.java) class.
-Here, the available data is subdivided into the bundle data and the broker data.
-
-#### Broker
-
-The broker data is contained in the [`BrokerData`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/BrokerData.java) class. It is further subdivided into two parts,
-one being the local data which every broker individually writes to ZooKeeper, and the other being the historical broker
-data which is written to ZooKeeper by the leader broker.
-
-##### Local Broker Data
-The local broker data is contained in the class [`LocalBrokerData`](https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerData.java) and provides information about the following resources:
-
-* CPU usage
-* JVM heap memory usage
-* Direct memory usage
-* Bandwidth in/out usage
-* Most recent total message rate in/out across all bundles
-* Total number of topics, bundles, producers, and consumers
-* Names of all bundles assigned to this broker
-* Most recent changes in bundle assignments for this broker
-
-The local broker data is updated periodically according to the service configuration
-"loadBalancerReportUpdateMaxIntervalMinutes". After any broker updates their local broker data, the leader broker will
-receive the update immediately via a ZooKeeper watch, where the local data is read from the ZooKeeper node
-`/loadbalance/brokers/<broker host/port>`
-
-##### Historical Broker Data
-
-The historical broker data is contained in the [`TimeAverageBrokerData`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/TimeAverageBrokerData.java) class.
-
-In order to reconcile the need to make good decisions in a steady-state scenario and make reactive decisions in a critical scenario, the historical data is split into two parts: the short-term data for reactive decisions, and the long-term data for steady-state decisions. Both time frames maintain the following information:
-
-* Message rate in/out for the entire broker
-* Message throughput in/out for the entire broker
-
-Unlike the bundle data, the broker data does not maintain samples for the global broker message rates and throughputs, which is not expected to remain steady as new bundles are removed or added. Instead, this data is aggregated over the short-term and long-term data for the bundles. See the section on bundle data to understand how that data is collected and maintained.
-
-The historical broker data is updated for each broker in memory by the leader broker whenever any broker writes their local data to ZooKeeper. Then, the historical data is written to ZooKeeper by the leader broker periodically according to the configuration `loadBalancerResourceQuotaUpdateIntervalMinutes`.
-
-##### Bundle Data
-
-The bundle data is contained in the [`BundleData`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/BundleData.java). Like the historical broker data, the bundle data is split into a short-term and a long-term time frame. The information maintained in each time frame:
-
-* Message rate in/out for this bundle
-* Message Throughput In/Out for this bundle
-* Current number of samples for this bundle
-
-The time frames are implemented by maintaining the average of these values over a set, limited number of samples, where
-the samples are obtained through the message rate and throughput values in the local data. Thus, if the update interval
-for the local data is 2 minutes, the number of short samples is 10 and the number of long samples is 1000, the
-short-term data is maintained over a period of `10 samples * 2 minutes / sample = 20 minutes`, while the long-term
-data is similarly over a period of 2000 minutes. Whenever there are not enough samples to satisfy a given time frame,
-the average is taken only over the existing samples. When no samples are available, default values are assumed until
-they are overwritten by the first sample. Currently, the default values are
-
-* Message rate in/out: 50 messages per second both ways
-* Message throughput in/out: 50KB per second both ways
-
-The bundle data is updated in memory on the leader broker whenever any broker writes their local data to ZooKeeper.
-Then, the bundle data is written to ZooKeeper by the leader broker periodically at the same time as the historical
-broker data, according to the configuration `loadBalancerResourceQuotaUpdateIntervalMinutes`.
-
-### Traffic Distribution
-
-The modular load manager uses the abstraction provided by [`ModularLoadManagerStrategy`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerStrategy.java) to make decisions about bundle assignment. The strategy makes a decision by considering the service configuration, the entire load data, and the bundle data for the bundle to be assigned. Currently, the only supported strategy is [`LeastLongTermMessageRate`](h [...]
-
-#### Least Long Term Message Rate Strategy
-
-As its name suggests, the least long term message rate strategy attempts to distribute bundles across brokers so that
-the message rate in the long-term time window for each broker is roughly the same. However, simply balancing load based
-on message rate does not handle the issue of asymmetric resource burden per message on each broker. Thus, the system
-resource usages, which are CPU, memory, direct memory, bandwidth in, and bandwidth out, are also considered in the
-assignment process. This is done by weighting the final message rate according to
-`1 / (overload_threshold - max_usage)`, where `overload_threshold` corresponds to the configuration
-`loadBalancerBrokerOverloadedThresholdPercentage` and `max_usage` is the maximum proportion among the system resources
-that is being utilized by the candidate broker. This multiplier ensures that machines with are being more heavily taxed
-by the same message rates will receive less load. In particular, it tries to ensure that if one machine is overloaded,
-then all machines are approximately overloaded. In the case in which a broker's max usage exceeds the overload
-threshold, that broker is not considered for bundle assignment. If all brokers are overloaded, the bundle is randomly
-assigned.
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/developing-tools.md b/site2/website-next/versioned_docs/version-2.7.0/developing-tools.md
deleted file mode 100644
index 29036dc..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/developing-tools.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-id: develop-tools
-title: Simulation tools
-sidebar_label: "Simulation tools"
-original_id: develop-tools
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-It is sometimes necessary create an test environment and incur artificial load to observe how well load managers
-handle the load. The load simulation controller, the load simulation client, and the broker monitor were created as an
-effort to make create this load and observe the effects on the managers more easily.
-
-## Simulation Client
-The simulation client is a machine which will create and subscribe to topics with configurable message rates and sizes.
-Because it is sometimes necessary in simulating large load to use multiple client machines, the user does not interact
-with the simulation client directly, but instead delegates their requests to the simulation controller, which will then
-send signals to clients to start incurring load. The client implementation is in the class
-`org.apache.pulsar.testclient.LoadSimulationClient`.
-
-### Usage
-To Start a simulation client, use the `pulsar-perf` script with the command `simulation-client` as follows:
-
-```
-
-pulsar-perf simulation-client --port <listen port> --service-url <pulsar service url>
-
-```
-
-The client will then be ready to receive controller commands.
-## Simulation Controller
-The simulation controller send signals to the simulation clients, requesting them to create new topics, stop old
-topics, change the load incurred by topics, as well as several other tasks. It is implemented in the class
-`org.apache.pulsar.testclient.LoadSimulationController` and presents a shell to the user as an interface to send
-command with.
-
-### Usage
-To start a simulation controller, use the `pulsar-perf` script with the command `simulation-controller` as follows:
-
-```
-
-pulsar-perf simulation-controller --cluster <cluster to simulate on> --client-port <listen port for clients>
---clients <comma-separated list of client host names>
-
-```
-
-The clients should already be started before the controller is started. You will then be presented with a simple prompt,
-where you can issue commands to simulation clients. Arguments often refer to tenant names, namespace names, and topic
-names. In all cases, the BASE name of the tenants, namespaces, and topics are used. For example, for the topic
-`persistent://my_tenant/my_cluster/my_namespace/my_topic`, the tenant name is `my_tenant`, the namespace name is
-`my_namespace`, and the topic name is `my_topic`. The controller can perform the following actions:
-
-* Create a topic with a producer and a consumer
-  * `trade <tenant> <namespace> <topic> [--rate <message rate per second>]
-  [--rand-rate <lower bound>,<upper bound>]
-  [--size <message size in bytes>]`
-* Create a group of topics with a producer and a consumer
-  * `trade_group <tenant> <group> <num_namespaces> [--rate <message rate per second>]
-  [--rand-rate <lower bound>,<upper bound>]
-  [--separation <separation between creating topics in ms>] [--size <message size in bytes>]
-  [--topics-per-namespace <number of topics to create per namespace>]`
-* Change the configuration of an existing topic
-  * `change <tenant> <namespace> <topic> [--rate <message rate per second>]
-  [--rand-rate <lower bound>,<upper bound>]
-  [--size <message size in bytes>]`
-* Change the configuration of a group of topics
-  * `change_group <tenant> <group> [--rate <message rate per second>] [--rand-rate <lower bound>,<upper bound>]
-  [--size <message size in bytes>] [--topics-per-namespace <number of topics to create per namespace>]`
-* Shutdown a previously created topic
-  * `stop <tenant> <namespace> <topic>`
-* Shutdown a previously created group of topics
-  * `stop_group <tenant> <group>`
-* Copy the historical data from one ZooKeeper to another and simulate based on the message rates and sizes in that history
-  * `copy <tenant> <source zookeeper> <target zookeeper> [--rate-multiplier value]`
-* Simulate the load of the historical data on the current ZooKeeper (should be same ZooKeeper being simulated on)
-  * `simulate <tenant> <zookeeper> [--rate-multiplier value]`
-* Stream the latest data from the given active ZooKeeper to simulate the real-time load of that ZooKeeper.
-  * `stream <tenant> <zookeeper> [--rate-multiplier value]`
-
-The "group" arguments in these commands allow the user to create or affect multiple topics at once. Groups are created
-when calling the `trade_group` command, and all topics from these groups may be subsequently modified or stopped
-with the `change_group` and `stop_group` commands respectively. All ZooKeeper arguments are of the form
-`zookeeper_host:port`.
-
-### Difference Between Copy, Simulate, and Stream
-The commands `copy`, `simulate`, and `stream` are very similar but have significant differences. `copy` is used when
-you want to simulate the load of a static, external ZooKeeper on the ZooKeeper you are simulating on. Thus,
-`source zookeeper` should be the ZooKeeper you want to copy and `target zookeeper` should be the ZooKeeper you are
-simulating on, and then it will get the full benefit of the historical data of the source in both load manager
-implementations. `simulate` on the other hand takes in only one ZooKeeper, the one you are simulating on. It assumes
-that you are simulating on a ZooKeeper that has historical data for `SimpleLoadManagerImpl` and creates equivalent
-historical data for `ModularLoadManagerImpl`. Then, the load according to the historical data is simulated by the
-clients. Finally, `stream` takes in an active ZooKeeper different than the ZooKeeper being simulated on and streams
-load data from it and simulates the real-time load. In all cases, the optional `rate-multiplier` argument allows the
-user to simulate some proportion of the load. For instance, using `--rate-multiplier 0.05` will cause messages to
-be sent at only `5%` of the rate of the load that is being simulated.
-
-## Broker Monitor
-To observe the behavior of the load manager in these simulations, one may utilize the broker monitor, which is
-implemented in `org.apache.pulsar.testclient.BrokerMonitor`. The broker monitor will print tabular load data to the
-console as it is updated using watchers.
-
-### Usage
-To start a broker monitor, use the `monitor-brokers` command in the `pulsar-perf` script:
-
-```
-
-pulsar-perf monitor-brokers --connect-string <zookeeper host:port>
-
-```
-
-The console will then continuously print load data until it is interrupted.
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-cli.md b/site2/website-next/versioned_docs/version-2.7.0/functions-cli.md
index e42d7b2..ba7b7fb 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-cli.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-cli.md
@@ -5,10 +5,6 @@ sidebar_label: "Reference: CLI"
 original_id: functions-cli
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The following tables list Pulsar Functions command-line tools. You can learn Pulsar Functions modes, commands, and parameters.
 
 ## localrun
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-debug.md b/site2/website-next/versioned_docs/version-2.7.0/functions-debug.md
index 2587b48..e1d55ae 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-debug.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-debug.md
@@ -5,10 +5,6 @@ sidebar_label: "How-to: Debug"
 original_id: functions-debug
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the following methods to debug Pulsar Functions:
 
 * [Captured stderr](functions-debug.md#captured-stderr)
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-deploy.md b/site2/website-next/versioned_docs/version-2.7.0/functions-deploy.md
index 03eb08c..8ae4be9 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-deploy.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-deploy.md
@@ -5,10 +5,6 @@ sidebar_label: "How-to: Deploy"
 original_id: functions-deploy
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Requirements
 
 To deploy and manage Pulsar Functions, you need to have a Pulsar cluster running. There are several options for this:
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-develop.md b/site2/website-next/versioned_docs/version-2.7.0/functions-develop.md
index 26a46f2..21bbbfc 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-develop.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-develop.md
@@ -23,16 +23,7 @@ The language-native function, which adds an exclamation point to all incoming st
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 ```Java
@@ -84,20 +75,7 @@ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
 The following example uses Pulsar Functions SDK.
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 ```Java
@@ -173,20 +151,7 @@ SerDe stands for **Ser**ialization and **De**serialization. Pulsar Functions use
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 When you write Pulsar Functions in Java, the following basic Java types are built in and supported by default: `String`, `Double`, `Integer`, `Float`, `Long`, `Short`, and `Byte`.
@@ -207,7 +172,7 @@ SerDe works in the following ways in Java Functions.
 - If the input or output topics do not exist, Pulsar Functions adopt the following rules to determine SerDe:
   - If the schema type is specified, Pulsar Functions use the specified schema type.
   - If SerDe is specified, Pulsar Functions use the specified SerDe, and the schema type for input and output topics is `Byte`.
-  - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema type, the built-in SerDe serializes and deserializes objects in the `JSON` format. 
+  - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema type, the built-in SerDe serializes and deserializes objects in the `JSON` format.
 
 </TabItem>
 <TabItem value="Python">
@@ -260,16 +225,7 @@ Imagine that you're writing Pulsar Functions that are processing tweet objects,
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 ```java
@@ -392,20 +348,7 @@ Java, Python and Go SDKs provide access to a **context object** that can be used
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 The [Context](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/Context.java) interface provides a number of methods that you can use to access the function [context](#context). The various method signatures for the `Context` interface are listed as follows.
@@ -643,20 +586,7 @@ $ bin/pulsar-admin functions create \
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java"> 
 
 The Java SDK [`Context`](#context) object enables you to access key/value pairs provided to Pulsar Functions via the command line (as JSON). The following example passes a key/value pair.
@@ -803,20 +733,7 @@ func contextFunc(ctx context.Context) {
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 Pulsar Functions that use the Java SDK have access to an [SLF4j](https://www.slf4j.org/) [`Logger`](https://www.slf4j.org/api/org/apache/log4j/Logger.html) object that can be used to produce logs at the chosen log level. The following example logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`.
@@ -922,7 +839,7 @@ func main() {
 
 ```
 
-When you use `logTopic` related functionalities in Go Function, import `github.com/apache/pulsar/pulsar-function-go/logutil`, and you do not have to use the `getLogger()` context object. 
+When you use `logTopic` related functionalities in Go Function, import `github.com/apache/pulsar/pulsar-function-go/logutil`, and you do not have to use the `getLogger()` context object.
 
 </TabItem>
 
@@ -935,20 +852,7 @@ Pulsar Functions can publish arbitrary metrics to the metrics interface which ca
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 You can record metrics using the [`Context`](#context) object on a per-key basis. For example, you can set a metric for the `process-count` key and a different metric for the `elevens-count` key every time the function processes a message. 
@@ -1022,20 +926,7 @@ At the same time, Pulsar Functions provides two interfaces, **SecretsProvider**
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 You can get secret provider using the [`Context`](#context) object. The following is an example:
@@ -1113,16 +1004,7 @@ State storage is not available in Go.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 Currently Pulsar Functions expose the following APIs for mutating and accessing State. These APIs are available in the [Context](functions-develop.md#context) object when you are using Java SDK functions.
@@ -1359,16 +1241,7 @@ If `--watch` is specified, the CLI will watch the value of the provided `state-k
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 {@inject: github:WordCountFunction:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is a very good example
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-metrics.md b/site2/website-next/versioned_docs/version-2.7.0/functions-metrics.md
index 2fe0735..8add669 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-metrics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-metrics.md
@@ -5,7 +5,3 @@ sidebar_label: "Metrics"
 original_id: functions-metrics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-overview.md b/site2/website-next/versioned_docs/version-2.7.0/functions-overview.md
index 9e92f5a..25dc602 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: functions-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 **Pulsar Functions** are lightweight compute processes that
 
 * consume messages from one or more Pulsar topics,
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-package.md b/site2/website-next/versioned_docs/version-2.7.0/functions-package.md
index 42e53cb..82346aa 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-package.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-package.md
@@ -5,10 +5,6 @@ sidebar_label: "How-to: Package"
 original_id: functions-package
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can package Pulsar functions in Java, Python, and Go. Packaging the window function in Java is the same as [packaging a function in Java](#java).
 
 :::note
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-runtime.md b/site2/website-next/versioned_docs/version-2.7.0/functions-runtime.md
index 139ead1..1806028 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-runtime.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-runtime.md
@@ -5,10 +5,6 @@ sidebar_label: "Setup: Configure Functions runtime"
 original_id: functions-runtime
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the following methods to run functions.
 
 - *Thread*: Invoke functions threads in functions worker.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/functions-worker.md b/site2/website-next/versioned_docs/version-2.7.0/functions-worker.md
index 537877b..f542716 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/functions-worker.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/functions-worker.md
@@ -4,10 +4,6 @@ title: Deploy and manage functions worker
 sidebar_label: "Setup: Pulsar Functions Worker"
 original_id: functions-worker
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 Before using Pulsar Functions, you need to learn how to set up Pulsar Functions worker and how to [configure Functions runtime](functions-runtime).  
 
 Pulsar `functions-worker` is a logic component to run Pulsar Functions in cluster mode. Two options are available, and you can select either based on your requirements. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/getting-started-concepts-and-architecture.md b/site2/website-next/versioned_docs/version-2.7.0/getting-started-concepts-and-architecture.md
index be300de..fe9c3fb 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/getting-started-concepts-and-architecture.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/getting-started-concepts-and-architecture.md
@@ -5,10 +5,6 @@ sidebar_label: "Concepts and architecture"
 original_id: concepts-architecture
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/getting-started-docker.md b/site2/website-next/versioned_docs/version-2.7.0/getting-started-docker.md
deleted file mode 100644
index 2d4dc04..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/getting-started-docker.md
+++ /dev/null
@@ -1,183 +0,0 @@
----
-id: standalone-docker
-title: Set up a standalone Pulsar in Docker
-sidebar_label: "Run Pulsar in Docker"
-original_id: standalone-docker
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-For local development and testing, you can run Pulsar in standalone
-mode on your own machine within a Docker container.
-
-If you have not installed Docker, download the [Community edition](https://www.docker.com/community-edition)
-and follow the instructions for your OS.
-
-## Start Pulsar in Docker
-
-* For MacOS, Linux, and Windows:
-
-  ```shell
-  
-  $ docker run -it \
-  -p 6650:6650 \
-  -p 8080:8080 \
-  --mount source=pulsardata,target=/pulsar/data \
-  --mount source=pulsarconf,target=/pulsar/conf \
-  apachepulsar/pulsar:@pulsar:version@ \
-  bin/pulsar standalone
-  
-  ```
-
-A few things to note about this command:
- * The data, metadata, and configuration are persisted on Docker volumes in order to not start "fresh" every 
-time the container is restarted. For details on the volumes you can use `docker volume inspect <sourcename>`
- * For Docker on Windows make sure to configure it to use Linux containers
-
-If you start Pulsar successfully, you will see `INFO`-level log messages like this:
-
-```
-
-2017-08-09 22:34:04,030 - INFO  - [main:WebService@213] - Web Service started at http://127.0.0.1:8080
-2017-08-09 22:34:04,038 - INFO  - [main:PulsarService@335] - messaging service is ready, bootstrap service on port=8080, broker url=pulsar://127.0.0.1:6650, cluster=standalone, configs=org.apache.pulsar.broker.ServiceConfiguration@4db60246
-...
-
-```
-
-:::tip
-
-When you start a local standalone cluster, a `public/default`
-
-:::
-
-namespace is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces.
-For more information, see [Topics](concepts-messaging.md#topics).
-
-## Use Pulsar in Docker
-
-Pulsar offers client libraries for [Java](client-libraries-java.md), [Go](client-libraries-go.md), [Python](client-libraries-python) 
-and [C++](client-libraries-cpp). If you're running a local standalone cluster, you can
-use one of these root URLs to interact with your cluster:
-
-* `pulsar://localhost:6650`
-* `http://localhost:8080`
-
-The following example will guide you get started with Pulsar quickly by using the [Python](client-libraries-python)
-client API.
-
-Install the Pulsar Python client library directly from [PyPI](https://pypi.org/project/pulsar-client/):
-
-```shell
-
-$ pip install pulsar-client
-
-```
-
-### Consume a message
-
-Create a consumer and subscribe to the topic:
-
-```python
-
-import pulsar
-
-client = pulsar.Client('pulsar://localhost:6650')
-consumer = client.subscribe('my-topic',
-                            subscription_name='my-sub')
-
-while True:
-    msg = consumer.receive()
-    print("Received message: '%s'" % msg.data())
-    consumer.acknowledge(msg)
-
-client.close()
-
-```
-
-### Produce a message
-
-Now start a producer to send some test messages:
-
-```python
-
-import pulsar
-
-client = pulsar.Client('pulsar://localhost:6650')
-producer = client.create_producer('my-topic')
-
-for i in range(10):
-    producer.send(('hello-pulsar-%d' % i).encode('utf-8'))
-
-client.close()
-
-```
-
-## Get the topic statistics
-
-In Pulsar, you can use REST, Java, or command-line tools to control every aspect of the system.
-For details on APIs, refer to [Admin API Overview](admin-api-overview).
-
-In the simplest example, you can use curl to probe the stats for a particular topic:
-
-```shell
-
-$ curl http://localhost:8080/admin/v2/persistent/public/default/my-topic/stats | python -m json.tool
-
-```
-
-The output is something like this:
-
-```json
-
-{
-  "averageMsgSize": 0.0,
-  "msgRateIn": 0.0,
-  "msgRateOut": 0.0,
-  "msgThroughputIn": 0.0,
-  "msgThroughputOut": 0.0,
-  "publishers": [
-    {
-      "address": "/172.17.0.1:35048",
-      "averageMsgSize": 0.0,
-      "clientVersion": "1.19.0-incubating",
-      "connectedSince": "2017-08-09 20:59:34.621+0000",
-      "msgRateIn": 0.0,
-      "msgThroughputIn": 0.0,
-      "producerId": 0,
-      "producerName": "standalone-0-1"
-    }
-  ],
-  "replication": {},
-  "storageSize": 16,
-  "subscriptions": {
-    "my-sub": {
-      "blockedSubscriptionOnUnackedMsgs": false,
-      "consumers": [
-        {
-          "address": "/172.17.0.1:35064",
-          "availablePermits": 996,
-          "blockedConsumerOnUnackedMsgs": false,
-          "clientVersion": "1.19.0-incubating",
-          "connectedSince": "2017-08-09 21:05:39.222+0000",
-          "consumerName": "166111",
-          "msgRateOut": 0.0,
-          "msgRateRedeliver": 0.0,
-          "msgThroughputOut": 0.0,
-          "unackedMessages": 0
-        }
-      ],
-      "msgBacklog": 0,
-      "msgRateExpired": 0.0,
-      "msgRateOut": 0.0,
-      "msgRateRedeliver": 0.0,
-      "msgThroughputOut": 0.0,
-      "type": "Exclusive",
-      "unackedMessages": 0
-    }
-  }
-}
-
-```
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/getting-started-helm.md b/site2/website-next/versioned_docs/version-2.7.0/getting-started-helm.md
deleted file mode 100644
index c5c428a..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/getting-started-helm.md
+++ /dev/null
@@ -1,442 +0,0 @@
----
-id: kubernetes-helm
-title: Get started in Kubernetes
-sidebar_label: "Run Pulsar in Kubernetes"
-original_id: kubernetes-helm
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-This section guides you through every step of installing and running Apache Pulsar with Helm on Kubernetes quickly, including the following sections:
-
-- Install the Apache Pulsar on Kubernetes using Helm
-- Start and stop Apache Pulsar
-- Create topics using `pulsar-admin`
-- Produce and consume messages using Pulsar clients
-- Monitor Apache Pulsar status with Prometheus and Grafana
-
-For deploying a Pulsar cluster for production usage, read the documentation on [how to configure and install a Pulsar Helm chart](helm-deploy).
-
-## Prerequisite
-
-- Kubernetes server 1.14.0+
-- kubectl 1.14.0+
-- Helm 3.0+
-
-:::tip
-
-For the following steps, step 2 and step 3 are for **developers** and step 4 and step 5 are for **administrators**.
-
-:::
-
-## Step 0: Prepare a Kubernetes cluster
-
-Before installing a Pulsar Helm chart, you have to create a Kubernetes cluster. You can follow [the instructions](helm-prepare) to prepare a Kubernetes cluster.
-
-We use [Minikube](https://minikube.sigs.k8s.io/docs/start/) in this quick start guide. To prepare a Kubernetes cluster, follow these steps:
-
-1. Create a Kubernetes cluster on Minikube.
-
-   ```bash
-   
-   minikube start --memory=8192 --cpus=4 --kubernetes-version=<k8s-version>
-   
-   ```
-
-   The `<k8s-version>` can be any [Kubernetes version supported by your Minikube installation](https://minikube.sigs.k8s.io/docs/reference/configuration/kubernetes/), such as `v1.16.1`.
-
-2. Set `kubectl` to use Minikube.
-
-   ```bash
-   
-   kubectl config use-context minikube
-   
-   ```
-
-3. To use the [Kubernetes Dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) with the local Kubernetes cluster on Minikube, enter the command below:
-
-   ```bash
-   
-   minikube dashboard
-   
-   ```
-
-   The command automatically triggers opening a webpage in your browser. 
-
-## Step 1: Install Pulsar Helm chart
-
-0. Add Pulsar charts repo.
-
-   ```bash
-   
-   helm repo add apache https://pulsar.apache.org/charts
-   
-   ```
-
-   ```bash
-   
-   helm repo update
-   
-   ```
-
-1. Clone the Pulsar Helm chart repository.
-
-   ```bash
-   
-   git clone https://github.com/apache/pulsar-helm-chart
-   cd pulsar-helm-chart
-   
-   ```
-
-2. Run the script `prepare_helm_release.sh` to create secrets required for installing the Apache Pulsar Helm chart. The username `pulsar` and password `pulsar` are used for logging into the Grafana dashboard and Pulsar Manager.
-
-   ```bash
-   
-   ./scripts/pulsar/prepare_helm_release.sh \
-       -n pulsar \
-       -k pulsar-mini \
-       -c
-   
-   ```
-
-3. Use the Pulsar Helm chart to install a Pulsar cluster to Kubernetes.
-
-   > **NOTE**  
-   > You need to specify `--set initialize=true` when installing Pulsar the first time. This command installs and starts Apache Pulsar.
-
-   ```bash
-   
-   helm install \
-       --values examples/values-minikube.yaml \
-       --set initialize=true \
-       --namespace pulsar \
-       pulsar-mini apache/pulsar
-   
-   ```
-
-4. Check the status of all pods.
-
-   ```bash
-   
-   kubectl get pods -n pulsar
-   
-   ```
-
-   If all pods start up successfully, you can see that the `STATUS` is changed to `Running` or `Completed`.
-
-   **Output**
-
-   ```bash
-   
-   NAME                                         READY   STATUS      RESTARTS   AGE
-   pulsar-mini-bookie-0                         1/1     Running     0          9m27s
-   pulsar-mini-bookie-init-5gphs                0/1     Completed   0          9m27s
-   pulsar-mini-broker-0                         1/1     Running     0          9m27s
-   pulsar-mini-grafana-6b7bcc64c7-4tkxd         1/1     Running     0          9m27s
-   pulsar-mini-prometheus-5fcf5dd84c-w8mgz      1/1     Running     0          9m27s
-   pulsar-mini-proxy-0                          1/1     Running     0          9m27s
-   pulsar-mini-pulsar-init-t7cqt                0/1     Completed   0          9m27s
-   pulsar-mini-pulsar-manager-9bcbb4d9f-htpcs   1/1     Running     0          9m27s
-   pulsar-mini-toolset-0                        1/1     Running     0          9m27s
-   pulsar-mini-zookeeper-0                      1/1     Running     0          9m27s
-   
-   ```
-
-5. Check the status of all services in the namespace `pulsar`.
-
-   ```bash
-   
-   kubectl get services -n pulsar
-   
-   ```
-
-   **Output**
-
-   ```bash
-   
-   NAME                         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                       AGE
-   pulsar-mini-bookie           ClusterIP      None             <none>        3181/TCP,8000/TCP             11m
-   pulsar-mini-broker           ClusterIP      None             <none>        8080/TCP,6650/TCP             11m
-   pulsar-mini-grafana          LoadBalancer   10.106.141.246   <pending>     3000:31905/TCP                11m
-   pulsar-mini-prometheus       ClusterIP      None             <none>        9090/TCP                      11m
-   pulsar-mini-proxy            LoadBalancer   10.97.240.109    <pending>     80:32305/TCP,6650:31816/TCP   11m
-   pulsar-mini-pulsar-manager   LoadBalancer   10.103.192.175   <pending>     9527:30190/TCP                11m
-   pulsar-mini-toolset          ClusterIP      None             <none>        <none>                        11m
-   pulsar-mini-zookeeper        ClusterIP      None             <none>        2888/TCP,3888/TCP,2181/TCP    11m
-   
-   ```
-
-## Step 2: Use pulsar-admin to create Pulsar tenants/namespaces/topics
-
-`pulsar-admin` is the CLI (command-Line Interface) tool for Pulsar. In this step, you can use `pulsar-admin` to create resources, including tenants, namespaces, and topics.
-
-1. Enter the `toolset` container.
-
-   ```bash
-   
-   kubectl exec -it -n pulsar pulsar-mini-toolset-0 -- /bin/bash
-   
-   ```
-
-2. In the `toolset` container, create a tenant named `apache`.
-
-   ```bash
-   
-   bin/pulsar-admin tenants create apache
-   
-   ```
-
-   Then you can list the tenants to see if the tenant is created successfully.
-
-   ```bash
-   
-   bin/pulsar-admin tenants list
-   
-   ```
-
-   You should see a similar output as below. The tenant `apache` has been successfully created. 
-
-   ```bash
-   
-   "apache"
-   "public"
-   "pulsar"
-   
-   ```
-
-3. In the `toolset` container, create a namespace named `pulsar` in the tenant `apache`.
-
-   ```bash
-   
-   bin/pulsar-admin namespaces create apache/pulsar
-   
-   ```
-
-   Then you can list the namespaces of tenant `apache` to see if the namespace is created successfully.
-
-   ```bash
-   
-   bin/pulsar-admin namespaces list apache
-   
-   ```
-
-   You should see a similar output as below. The namespace `apache/pulsar` has been successfully created. 
-
-   ```bash
-   
-   "apache/pulsar"
-   
-   ```
-
-4. In the `toolset` container, create a topic `test-topic` with `4` partitions in the namespace `apache/pulsar`.
-
-   ```bash
-   
-   bin/pulsar-admin topics create-partitioned-topic apache/pulsar/test-topic -p 4
-   
-   ```
-
-5. In the `toolset` container, list all the partitioned topics in the namespace `apache/pulsar`.
-
-   ```bash
-   
-   bin/pulsar-admin topics list-partitioned-topics apache/pulsar
-   
-   ```
-
-   Then you can see all the partitioned topics in the namespace `apache/pulsar`.
-
-   ```bash
-   
-   "persistent://apache/pulsar/test-topic"
-   
-   ```
-
-## Step 3: Use Pulsar client to produce and consume messages
-
-You can use the Pulsar client to create producers and consumers to produce and consume messages.
-
-By default, the Pulsar Helm chart exposes the Pulsar cluster through a Kubernetes `LoadBalancer`. In Minikube, you can use the following command to check the proxy service.
-
-```bash
-
-kubectl get services -n pulsar | grep pulsar-mini-proxy
-
-```
-
-You will see a similar output as below.
-
-```bash
-
-pulsar-mini-proxy            LoadBalancer   10.97.240.109    <pending>     80:32305/TCP,6650:31816/TCP   28m
-
-```
-
-This output tells what are the node ports that Pulsar cluster's binary port and HTTP port are mapped to. The port after `80:` is the HTTP port while the port after `6650:` is the binary port.
-
-Then you can find the IP address and exposed ports of your Minikube server by running the following command.
-
-```bash
-
-minikube service pulsar-mini-proxy -n pulsar
-
-```
-
-**Output**
-
-```bash
-
-|-----------|-------------------|-------------|-------------------------|
-| NAMESPACE |       NAME        | TARGET PORT |           URL           |
-|-----------|-------------------|-------------|-------------------------|
-| pulsar    | pulsar-mini-proxy | http/80     | http://172.17.0.4:32305 |
-|           |                   | pulsar/6650 | http://172.17.0.4:31816 |
-|-----------|-------------------|-------------|-------------------------|
-🏃  Starting tunnel for service pulsar-mini-proxy.
-|-----------|-------------------|-------------|------------------------|
-| NAMESPACE |       NAME        | TARGET PORT |          URL           |
-|-----------|-------------------|-------------|------------------------|
-| pulsar    | pulsar-mini-proxy |             | http://127.0.0.1:61853 |
-|           |                   |             | http://127.0.0.1:61854 |
-|-----------|-------------------|-------------|------------------------|
-
-```
-
-At this point, you can get the service URLs to connect to your Pulsar client. Here are URL examples:
-
-```
-
-webServiceUrl=http://127.0.0.1:61853/
-brokerServiceUrl=pulsar://127.0.0.1:61854/
-
-```
-
-Then you can proceed with the following steps:
-
-1. Download the Apache Pulsar tarball from the [downloads page](https://pulsar.apache.org/en/download/).
-
-2. Decompress the tarball based on your download file.
-
-   ```bash
-   
-   tar -xf <file-name>.tar.gz
-   
-   ```
-
-3. Expose `PULSAR_HOME`.
-
-   (1) Enter the directory of the decompressed download file.
-
-   (2) Expose `PULSAR_HOME` as the environment variable.
-
-   ```bash
-   
-   export PULSAR_HOME=$(pwd)
-   
-   ```
-
-4. Configure the Pulsar client.
-
-   In the `${PULSAR_HOME}/conf/client.conf` file, replace `webServiceUrl` and `brokerServiceUrl` with the service URLs you get from the above steps.
-
-5. Create a subscription to consume messages from `apache/pulsar/test-topic`.
-
-   ```bash
-   
-   bin/pulsar-client consume -s sub apache/pulsar/test-topic  -n 0
-   
-   ```
-
-6. Open a new terminal. In the new terminal, create a producer and send 10 messages to the `test-topic` topic.
-
-   ```bash
-   
-   bin/pulsar-client produce apache/pulsar/test-topic  -m "---------hello apache pulsar-------" -n 10
-   
-   ```
-
-7. Verify the results.
-
-   - From the producer side
-
-       **Output**
-       
-       The messages have been produced successfully.
-
-       ```bash
-       
-       18:15:15.489 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
-       
-       ```
-
-   - From the consumer side
-
-       **Output**
-
-       At the same time, you can receive the messages as below.
-
-       ```bash
-       
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       ----- got message -----
-       ---------hello apache pulsar-------
-       
-       ```
-
-## Step 4: Use Pulsar Manager to manage the cluster
-
-[Pulsar Manager](administration-pulsar-manager) is a web-based GUI management tool for managing and monitoring Pulsar.
-
-1. By default, the `Pulsar Manager` is exposed as a separate `LoadBalancer`. You can open the Pulsar Manager UI using the following command:
-
-   ```bash
-   
-   minikube service -n pulsar pulsar-mini-pulsar-manager
-   
-   ```
-
-2. The Pulsar Manager UI will be open in your browser. You can use the username `pulsar` and password `pulsar` to log into Pulsar Manager.
-
-3. In Pulsar Manager UI, you can create an environment. 
-
-   - Click `New Environment` button in the top-left corner.
-   - Type `pulsar-mini` for the field `Environment Name` in the popup window.
-   - Type `http://pulsar-mini-broker:8080` for the field `Service URL` in the popup window.
-   - Click `Confirm` button in the popup window.
-
-4. After successfully created an environment, you are redirected to the `tenants` page of that environment. Then you can create `tenants`, `namespaces` and `topics` using the Pulsar Manager.
-
-## Step 5: Use Prometheus and Grafana to monitor cluster
-
-Grafana is an open-source visualization tool, which can be used for visualizing time series data into dashboards.
-
-1. By default, the Grafana is exposed as a separate `LoadBalancer`. You can open the Grafana UI using the following command:
-
-   ```bash
-   
-   minikube service pulsar-mini-grafana -n pulsar
-   
-   ```
-
-2. The Grafana UI is open in your browser. You can use the username `pulsar` and password `pulsar` to log into the Grafana Dashboard.
-
-3. You can view dashboards for different components of a Pulsar cluster.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/getting-started-pulsar.md b/site2/website-next/versioned_docs/version-2.7.0/getting-started-pulsar.md
index d1dd8bf..11c5e66 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/getting-started-pulsar.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/getting-started-pulsar.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar 2.0"
 original_id: pulsar-2.0
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar 2.0 is a major new release for Pulsar that brings some bold changes to the platform, including [simplified topic names](#topic-names), the addition of the [Pulsar Functions](functions-overview) feature, some terminology changes, and more.
 
 ## New features in Pulsar 2.0
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-deploy.md b/site2/website-next/versioned_docs/version-2.7.0/helm-deploy.md
index e64ca2d..0cfaaff 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-deploy.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-deploy.md
@@ -5,10 +5,6 @@ sidebar_label: "Deployment"
 original_id: helm-deploy
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before running `helm install`, you need to decide how to run Pulsar.
 Options can be specified using Helm's `--set option.name=value` command line option.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-install.md b/site2/website-next/versioned_docs/version-2.7.0/helm-install.md
index 7db5d91..edb1226 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-install.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-install.md
@@ -5,10 +5,6 @@ sidebar_label: "Install"
 original_id: helm-install
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Install Apache Pulsar on Kubernetes with the official Pulsar Helm chart.
 
 ## Requirements
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-overview.md b/site2/website-next/versioned_docs/version-2.7.0/helm-overview.md
index 1f9d2b0..5cf8905 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: helm-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This is the official supported Helm chart to install Apache Pulsar on a cloud-native environment. It was enhanced based on StreamNative's [Helm Chart](https://github.com/streamnative/charts).
 
 ## Introduction
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-prepare.md b/site2/website-next/versioned_docs/version-2.7.0/helm-prepare.md
index 705e357..4814851 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-prepare.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-prepare.md
@@ -5,10 +5,6 @@ sidebar_label: "Prepare"
 original_id: helm-prepare
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For a fully functional Pulsar cluster, you need a few resources before deploying the Apache Pulsar Helm chart. The following provides instructions to prepare the Kubernetes cluster before deploying the Pulsar Helm chart.
 
 - [Google Kubernetes Engine](#google-kubernetes-engine)
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-tools.md b/site2/website-next/versioned_docs/version-2.7.0/helm-tools.md
index 773c681..efd61ea 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-tools.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-tools.md
@@ -5,10 +5,6 @@ sidebar_label: "Required Tools"
 original_id: helm-tools
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before deploying Pulsar to your Kubernetes cluster, there are some tools you must have installed locally.
 
 ## kubectl
diff --git a/site2/website-next/versioned_docs/version-2.7.0/helm-upgrade.md b/site2/website-next/versioned_docs/version-2.7.0/helm-upgrade.md
index 8b00b8e..1ebe4b4 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/helm-upgrade.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/helm-upgrade.md
@@ -5,10 +5,6 @@ sidebar_label: "Upgrade"
 original_id: helm-upgrade
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before upgrading your Pulsar installation, you need to check the change log corresponding to the specific release you want to upgrade to and look for any release notes that might pertain to the new Pulsar helm chart version.
 
 We also recommend that you need to provide all values using the `helm upgrade --set key=value` syntax or the `-f values.yml` instead of using `--reuse-values`, because some of the current values might be deprecated.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-aerospike-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-aerospike-sink.md
index 7ff9805..63d7338 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-aerospike-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-aerospike-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Aerospike sink connector"
 original_id: io-aerospike-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Aerospike sink connector pulls messages from Pulsar topics to Aerospike clusters.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-canal-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-canal-source.md
index 853b387..d1fd43b 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-canal-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-canal-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Canal source connector"
 original_id: io-canal-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Canal source connector pulls messages from MySQL to Pulsar topics.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-cassandra-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-cassandra-sink.md
index c79917c..b27a754 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-cassandra-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-cassandra-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Cassandra sink connector"
 original_id: io-cassandra-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Cassandra sink connector pulls messages from Pulsar topics to Cassandra clusters.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-cdc-debezium.md b/site2/website-next/versioned_docs/version-2.7.0/io-cdc-debezium.md
index 6680fbc..fa2efe9 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-cdc-debezium.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-cdc-debezium.md
@@ -5,10 +5,6 @@ sidebar_label: "Debezium source connector"
 original_id: io-cdc-debezium
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Debezium source connector pulls messages from MySQL or PostgreSQL 
 and persists the messages to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-cdc.md b/site2/website-next/versioned_docs/version-2.7.0/io-cdc.md
index 9ce8f7f..20f16ae 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-cdc.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-cdc.md
@@ -5,10 +5,6 @@ sidebar_label: "CDC connector"
 original_id: io-cdc
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 CDC source connectors capture log changes of databases (such as MySQL, MongoDB, and PostgreSQL) into Pulsar.
 
 > CDC source connectors are built on top of [Canal](https://github.com/alibaba/canal) and [Debezium](https://debezium.io/) and store all data into Pulsar cluster in a persistent, replicated, and partitioned way.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-cli.md b/site2/website-next/versioned_docs/version-2.7.0/io-cli.md
index 886affe..1763839 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-cli.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-cli.md
@@ -5,10 +5,6 @@ sidebar_label: "CLI"
 original_id: io-cli
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The `pulsar-admin` tool helps you manage Pulsar connectors.
   
 ## `sources`
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-connectors.md b/site2/website-next/versioned_docs/version-2.7.0/io-connectors.md
index 3e0924a..75be9a1 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-connectors.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-connectors.md
@@ -5,10 +5,6 @@ sidebar_label: "Built-in connector"
 original_id: io-connectors
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar distribution includes a set of common connectors that have been packaged and tested with the rest of Apache Pulsar. These connectors import and export data from some of the most commonly used data systems.
 
 Using any of these connectors is as easy as writing a simple connector and running the connector locally or submitting the connector to a Pulsar Functions cluster.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-debezium-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-debezium-source.md
index 076de62..03082d2 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-debezium-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-debezium-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Debezium source connector"
 original_id: io-debezium-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Debezium source connector pulls messages from MySQL or PostgreSQL 
 and persists the messages to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-debug.md b/site2/website-next/versioned_docs/version-2.7.0/io-debug.md
index f815e86..7557d44 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-debug.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-debug.md
@@ -4,10 +4,6 @@ title: How to debug Pulsar connectors
 sidebar_label: "Debug"
 original_id: io-debug
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 This guide explains how to debug connectors in localrun or cluster mode and gives a debugging checklist.
 To better demonstrate how to debug Pulsar connectors, here takes a Mongo sink connector as an example.   
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-develop.md b/site2/website-next/versioned_docs/version-2.7.0/io-develop.md
index d7531a0..4a815b3 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-develop.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-develop.md
@@ -5,10 +5,6 @@ sidebar_label: "Develop"
 original_id: io-develop
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This guide describes how to develop Pulsar connectors to move data
 between Pulsar and other systems. 
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-dynamodb-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-dynamodb-source.md
index 4a93683..ce58578 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-dynamodb-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-dynamodb-source.md
@@ -5,10 +5,6 @@ sidebar_label: "AWS DynamoDB source connector"
 original_id: io-dynamodb-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The DynamoDB source connector pulls data from DynamoDB table streams and persists data into Pulsar.
 
 This connector uses the [DynamoDB Streams Kinesis Adapter](https://github.com/awslabs/dynamodb-streams-kinesis-adapter),
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-elasticsearch-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-elasticsearch-sink.md
index a2624bd..4acedd3 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-elasticsearch-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-elasticsearch-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "ElasticSearch sink connector"
 original_id: io-elasticsearch-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The ElasticSearch sink connector pulls messages from Pulsar topics and persists the messages to indexes.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-file-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-file-source.md
index 66ae7bb..e9d710c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-file-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-file-source.md
@@ -5,10 +5,6 @@ sidebar_label: "File source connector"
 original_id: io-file-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The File source connector pulls messages from files in directories and persists the messages to Pulsar topics.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-flume-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-flume-sink.md
index ded05d8..b2ace53 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-flume-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-flume-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Flume sink connector"
 original_id: io-flume-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Flume sink connector pulls messages from Pulsar topics to logs.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-flume-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-flume-source.md
index 42f35e7..b7fd7ed 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-flume-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-flume-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Flume source connector"
 original_id: io-flume-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Flume source connector pulls messages from logs to Pulsar topics.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-hbase-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-hbase-sink.md
index ed1587e..1737b00 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-hbase-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-hbase-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "HBase sink connector"
 original_id: io-hbase-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HBase sink connector pulls the messages from Pulsar topics 
 and persists the messages to HBase tables
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-hdfs2-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-hdfs2-sink.md
index 1036999..4a85271 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-hdfs2-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-hdfs2-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "HDFS2 sink connector"
 original_id: io-hdfs2-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HDFS2 sink connector pulls the messages from Pulsar topics 
 and persists the messages to HDFS files.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-hdfs3-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-hdfs3-sink.md
index 6bd77ee..aec065a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-hdfs3-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-hdfs3-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "HDFS3 sink connector"
 original_id: io-hdfs3-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HDFS3 sink connector pulls the messages from Pulsar topics 
 and persists the messages to HDFS files.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-influxdb-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-influxdb-sink.md
index 4023423..9382f8c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-influxdb-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-influxdb-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "InfluxDB sink connector"
 original_id: io-influxdb-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The InfluxDB sink connector pulls messages from Pulsar topics 
 and persists the messages to InfluxDB.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-jdbc-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-jdbc-sink.md
index e992e72..77dbb61 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-jdbc-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-jdbc-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "JDBC sink connector"
 original_id: io-jdbc-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The JDBC sink connectors allow pulling messages from Pulsar topics 
 and persists the messages to ClickHouse, MariaDB, PostgreSQL, and SQLite.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-kafka-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-kafka-sink.md
index 743f785..09dad4c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-kafka-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-kafka-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Kafka sink connector"
 original_id: io-kafka-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kafka sink connector pulls messages from Pulsar topics and persists the messages
 to Kafka topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-kafka-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-kafka-source.md
index e353aea..8d68e29 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-kafka-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-kafka-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Kafka source connector"
 original_id: io-kafka-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kafka source connector pulls messages from Kafka topics and persists the messages
 to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-sink.md
index 483c861..153587d 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Kinesis sink connector"
 original_id: io-kinesis-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kinesis sink connector pulls data from Pulsar and persists data into Amazon Kinesis.
 
 ## Configuration
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-source.md
index 3e593a3..0d07eef 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-kinesis-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Kinesis source connector"
 original_id: io-kinesis-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kinesis source connector pulls data from Amazon Kinesis and persists data into Pulsar.
 
 This connector uses the [Kinesis Consumer Library](https://github.com/awslabs/amazon-kinesis-client) (KCL) to do the actual consuming of messages. The KCL uses DynamoDB to track state for consumers.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-mongo-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-mongo-sink.md
index b370464..3e6b3e6 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-mongo-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-mongo-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "MongoDB sink connector"
 original_id: io-mongo-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The MongoDB sink connector pulls messages from Pulsar topics 
 and persists the messages to collections.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-netty-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-netty-source.md
index d41265f..e1ec8d8 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-netty-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-netty-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Netty source connector"
 original_id: io-netty-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Netty source connector opens a port that accepts incoming data via the configured network protocol 
 and publish it to user-defined Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-nsq-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-nsq-source.md
index 4a89e91..b61e7e1 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-nsq-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-nsq-source.md
@@ -5,10 +5,6 @@ sidebar_label: "NSQ source connector"
 original_id: io-nsq-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The NSQ source connector receives messages from NSQ topics 
 and writes messages to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-overview.md b/site2/website-next/versioned_docs/version-2.7.0/io-overview.md
index 3a55ff2..ed75016 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-overview.md
@@ -73,16 +73,7 @@ Here takes **Admin CLI** as an example. For more information about **REST API**
 
 <Tabs 
   defaultValue="Source"
-  values={[
-  {
-    "label": "Source",
-    "value": "Source"
-  },
-  {
-    "label": "Sink",
-    "value": "Sink"
-  }
-]}>
+  values={[{"label":"Source","value":"Source"},{"label":"Sink","value":"Sink"}]}>
 
 <TabItem value="Source">
 
@@ -127,16 +118,7 @@ Here takes **Admin CLI** as an example. For more information about **REST API**
 
 <Tabs 
   defaultValue="Source"
-  values={[
-  {
-    "label": "Source",
-    "value": "Source"
-  },
-  {
-    "label": "Sink",
-    "value": "Sink"
-  }
-]}>
+  values={[{"label":"Source","value":"Source"},{"label":"Sink","value":"Sink"}]}>
 
 <TabItem value="Source">
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-quickstart.md b/site2/website-next/versioned_docs/version-2.7.0/io-quickstart.md
index 67ca971..842899c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-quickstart.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-quickstart.md
@@ -5,10 +5,6 @@ sidebar_label: "Get started"
 original_id: io-quickstart
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This tutorial provides a hands-on look at how you can move data out of Pulsar without writing a single line of code.  
 
 It is helpful to review the [concepts](io-overview) for Pulsar I/O with running the steps in this guide to gain a deeper understanding.   
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-sink.md
index 48f1c75..d7fda99 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "RabbitMQ sink connector"
 original_id: io-rabbitmq-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The RabbitMQ sink connector pulls messages from Pulsar topics 
 and persist the messages to RabbitMQ queues.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-source.md
index 0a10cfa..c2c31cc 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-rabbitmq-source.md
@@ -5,10 +5,6 @@ sidebar_label: "RabbitMQ source connector"
 original_id: io-rabbitmq-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The RabbitMQ source connector receives messages from RabbitMQ clusters 
 and writes messages to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-redis-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-redis-sink.md
index 49eb119..793d74a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-redis-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-redis-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Redis sink connector"
 original_id: io-redis-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The  Redis sink connector pulls messages from Pulsar topics 
 and persists the messages to a Redis database.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-solr-sink.md b/site2/website-next/versioned_docs/version-2.7.0/io-solr-sink.md
index d7b31ad..df2c361 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-solr-sink.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-solr-sink.md
@@ -5,10 +5,6 @@ sidebar_label: "Solr sink connector"
 original_id: io-solr-sink
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Solr sink connector pulls messages from Pulsar topics 
 and persists the messages to Solr collections.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-twitter-source.md b/site2/website-next/versioned_docs/version-2.7.0/io-twitter-source.md
index 101602e..8de3504 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-twitter-source.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-twitter-source.md
@@ -5,10 +5,6 @@ sidebar_label: "Twitter Firehose source connector"
 original_id: io-twitter-source
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Twitter Firehose source connector receives tweets from Twitter Firehose and 
 writes the tweets to Pulsar topics.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-twitter.md b/site2/website-next/versioned_docs/version-2.7.0/io-twitter.md
index 53f9498..3b2f632 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-twitter.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-twitter.md
@@ -5,7 +5,3 @@ sidebar_label: "Twitter Firehose Connector"
 original_id: io-twitter
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/io-use.md b/site2/website-next/versioned_docs/version-2.7.0/io-use.md
index 43b7a30..61b5bce 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/io-use.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/io-use.md
@@ -193,20 +193,7 @@ Create a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -295,20 +282,7 @@ Create a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -401,16 +375,7 @@ Start a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -445,16 +410,7 @@ Start a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -493,12 +449,7 @@ Run a source connector locally.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -522,12 +473,7 @@ Run a sink connector locally.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -565,20 +511,7 @@ Get the information of a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -689,20 +622,7 @@ Get the information of a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -810,20 +730,7 @@ Get the list of all running source connectors.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -880,20 +787,7 @@ Get the list of all running sink connectors.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -954,20 +848,7 @@ Get the current status of a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -991,7 +872,7 @@ For more information, see [here](io-cli.md#status).
 * Gets the current status of a **specified** source connector.
 
   Send a `GET` request to this endpoint: {@inject: endpoint|GET|/admin/v3/sources/:tenant/:namespace/:sourceName/:instanceId/status|operation/getSourceStatus?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1061,20 +942,7 @@ Get the current status of a Pulsar sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1174,20 +1042,7 @@ Update a running Pulsar source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1205,7 +1060,7 @@ For more information, see [here](io-cli.md#update).
 <TabItem value="REST API">
 
 Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v3/sources/:tenant/:namespace/:sourceName|operation/updateSource?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1280,20 +1135,7 @@ Update a running Pulsar sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1311,7 +1153,7 @@ For more information, see [here](io-cli.md#update-1).
 <TabItem value="REST API">
 
 Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v3/sinks/:tenant/:namespace/:sinkName|operation/updateSink?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1392,20 +1234,7 @@ Stop a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1499,20 +1328,7 @@ Stop a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1612,20 +1428,7 @@ Restart a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1719,20 +1522,7 @@ Restart a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1832,20 +1622,7 @@ Delete a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1909,20 +1686,7 @@ Delete a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
diff --git a/site2/website-next/versioned_docs/version-2.7.3/getting-started-helm.md b/site2/website-next/versioned_docs/version-2.7.0/kubernetes-helm.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/getting-started-helm.md
copy to site2/website-next/versioned_docs/version-2.7.0/kubernetes-helm.md
diff --git a/site2/website-next/versioned_docs/version-2.7.0/performance-pulsar-perf.md b/site2/website-next/versioned_docs/version-2.7.0/performance-pulsar-perf.md
index 780f986..f4cd2de 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/performance-pulsar-perf.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/performance-pulsar-perf.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar Perf"
 original_id: performance-pulsar-perf
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This document describes how to use the Pulsar Perf for performance testing. For detailed information about performance tuning, see [here](https://streamnative.io/whitepaper/taking-a-deep-dive-into-apache-pulsar-architecture-for-performance-tuning/).
 
 ## Pulsar Perf
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-pulsar-admin.md b/site2/website-next/versioned_docs/version-2.7.0/pulsar-admin.md
similarity index 99%
rename from site2/website-next/versioned_docs/version-2.7.0/reference-pulsar-admin.md
rename to site2/website-next/versioned_docs/version-2.7.0/pulsar-admin.md
index 189afd0..fc1610c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-pulsar-admin.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/pulsar-admin.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar Admin CLI"
 original_id: pulsar-admin
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > **Important**
 >
 > This page is deprecated and not updated anymore. For the latest and complete information about `pulsar-admin`, including commands, flags, descriptions, and more, see [pulsar-admin doc](https://pulsar.apache.org/tools/pulsar-admin/).
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-cli-tools.md b/site2/website-next/versioned_docs/version-2.7.0/reference-cli-tools.md
index 6e56071..74c6284 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-cli-tools.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/reference-cli-tools.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar CLI tools"
 original_id: reference-cli-tools
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar offers several command-line tools that you can use for managing Pulsar installations, performance testing, using command-line producers and consumers, and more.
 
 All Pulsar command-line tools can be run from the `bin` directory of your [installed Pulsar package](getting-started-standalone). The following tools are currently documented:
@@ -815,7 +811,7 @@ The table below lists the environment variables that you can use to configure th
 |BOOKIE_STOP_TIMEOUT|Wait time before forcefully killing the Bookie server instance if attempts to stop it are not successful||
 
 
-### `autorecovery`
+### `auto-recovery`
 Runs an auto-recovery service
 
 Usage
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-configuration.md b/site2/website-next/versioned_docs/version-2.7.0/reference-configuration.md
index f829567..e7df07b 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-configuration.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/reference-configuration.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar configuration"
 original_id: reference-configuration
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-connector-admin.md b/site2/website-next/versioned_docs/version-2.7.0/reference-connector-admin.md
index 5a2eaa8..7b73ae8 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-connector-admin.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/reference-connector-admin.md
@@ -5,10 +5,6 @@ sidebar_label: "Connector Admin CLI"
 original_id: reference-connector-admin
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > **Important**
 >
 > For the latest and complete information about `Pulsar admin`, including commands, flags, descriptions, and more information, see [Pulsar admin doc](https://pulsar.apache.org/tools/pulsar-admin/).
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-metrics.md b/site2/website-next/versioned_docs/version-2.7.0/reference-metrics.md
index 6e0b31c..7b31e51 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-metrics.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/reference-metrics.md
@@ -5,10 +5,6 @@ sidebar_label: "Pulsar Metrics"
 original_id: reference-metrics
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 Pulsar exposes the following metrics in Prometheus format. You can monitor your clusters with those metrics.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/reference-terminology.md b/site2/website-next/versioned_docs/version-2.7.0/reference-terminology.md
index cce3a3f..d0e7368 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/reference-terminology.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/reference-terminology.md
@@ -5,10 +5,6 @@ sidebar_label: "Terminology"
 original_id: reference-terminology
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Here is a glossary of terms related to Apache Pulsar:
 
 ### Concepts
diff --git a/site2/website-next/versioned_docs/version-2.7.0/schema-evolution-compatibility.md b/site2/website-next/versioned_docs/version-2.7.0/schema-evolution-compatibility.md
index 6e08e16..3e78429 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/schema-evolution-compatibility.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/schema-evolution-compatibility.md
@@ -5,10 +5,6 @@ sidebar_label: "Schema evolution and compatibility"
 original_id: schema-evolution-compatibility
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Normally, schemas do not stay the same over a long period of time. Instead, they undergo evolutions to satisfy new needs. 
 
 This chapter examines how Pulsar schema evolves and what Pulsar schema compatibility check strategies are.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/schema-get-started.md b/site2/website-next/versioned_docs/version-2.7.0/schema-get-started.md
index 97529fb..97e2705 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/schema-get-started.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/schema-get-started.md
@@ -5,10 +5,6 @@ sidebar_label: "Get started"
 original_id: schema-get-started
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter introduces Pulsar schemas and explains why they are important. 
 
 ## Schema Registry
diff --git a/site2/website-next/versioned_docs/version-2.7.0/schema-manage.md b/site2/website-next/versioned_docs/version-2.7.0/schema-manage.md
index 2837e4c..a57c581 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/schema-manage.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/schema-manage.md
@@ -168,20 +168,7 @@ To upload (register) a new schema for a topic, you can use one of the following
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -264,7 +251,7 @@ The post payload includes the following fields:
 | --- | --- |
 |  `type`  |   The schema type. | 
 |  `schema`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -307,20 +294,7 @@ To get the latest schema for a topic, you can use one of the following methods.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -370,7 +344,7 @@ The response includes the following fields:
 |  `type`  |   The schema type. | 
 |  `timestamp`  |   The timestamp of creating this version of schema. | 
 |  `data`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -410,20 +384,7 @@ To get a specific version of a schema, you can use one of the following methods.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -462,7 +423,7 @@ The response includes the following fields:
 |  `type`  |   The schema type. | 
 |  `timestamp`  |   The timestamp of creating this version of schema. | 
 |  `data`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -502,12 +463,7 @@ To provide a schema via a topic, you can use the following method.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -535,20 +491,7 @@ In any case, the **delete** action deletes **all versions** of a schema register
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -579,7 +522,7 @@ The response includes the following field:
 
 Field | Description |
 ---|---|
-`version` | The schema version, which is a long number. | 
+`version` | The schema version, which is a long number. |
 
 </TabItem>
 <TabItem value="Java Admin API">
diff --git a/site2/website-next/versioned_docs/version-2.7.0/schema-understand.md b/site2/website-next/versioned_docs/version-2.7.0/schema-understand.md
index 25fd65e..4fdb49d 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/schema-understand.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/schema-understand.md
@@ -5,10 +5,6 @@ sidebar_label: "Understand schema"
 original_id: schema-understand
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter explains the basic concepts of Pulsar schema, focuses on the topics of particular importance, and provides additional background.
 
 ## SchemaInfo
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-athenz.md b/site2/website-next/versioned_docs/version-2.7.0/security-athenz.md
index c4f79cb..947c3f4 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-athenz.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-athenz.md
@@ -5,10 +5,6 @@ sidebar_label: "Authentication using Athenz"
 original_id: security-athenz
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 [Athenz](https://github.com/AthenZ/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify of the client.
 
 ## Athenz authentication settings
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-authorization.md b/site2/website-next/versioned_docs/version-2.7.0/security-authorization.md
index a74a2d0..e678587 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-authorization.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-authorization.md
@@ -5,10 +5,6 @@ sidebar_label: "Authorization and ACLs"
 original_id: security-authorization
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 In Pulsar, the [authentication provider](security-overview.md#authentication-providers) is responsible for properly identifying clients and associating the clients with [role tokens](security-overview.md#role-tokens). If you only enable authentication, an authenticated role token has the ability to access all resources in the cluster. *Authorization* is the process that determines *what* clients are able to do.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-bouncy-castle.md b/site2/website-next/versioned_docs/version-2.7.0/security-bouncy-castle.md
index b9bb815..abc25c7 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-bouncy-castle.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-bouncy-castle.md
@@ -5,10 +5,6 @@ sidebar_label: "Bouncy Castle Providers"
 original_id: security-bouncy-castle
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## BouncyCastle Introduce
 
 `Bouncy Castle` is a Java library that complements the default Java Cryptographic Extension (JCE), 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-encryption.md b/site2/website-next/versioned_docs/version-2.7.0/security-encryption.md
index b0f2f46..6879ff1 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-encryption.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-encryption.md
@@ -5,10 +5,6 @@ sidebar_label: "End-to-End Encryption"
 original_id: security-encryption
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the application configures to perform encryption. Only the consumers with a valid key can decrypt the encrypted messages.
 
 ## Asymmetric and symmetric encryption
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-extending.md b/site2/website-next/versioned_docs/version-2.7.0/security-extending.md
index 57128da..c088e3a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-extending.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-extending.md
@@ -5,10 +5,6 @@ sidebar_label: "Extending"
 original_id: security-extending
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar provides a way to use custom authentication and authorization mechanisms.
 
 ## Authentication
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-jwt.md b/site2/website-next/versioned_docs/version-2.7.0/security-jwt.md
index 7a57e47..b0f7755 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-jwt.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-jwt.md
@@ -61,28 +61,7 @@ You can use tokens to authenticate the following Pulsar clients.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "C#",
-    "value": "C#"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"},{"label":"C++","value":"C++"},{"label":"C#","value":"C#"}]}>
 <TabItem value="Java">
 
 ```java
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-kerberos.md b/site2/website-next/versioned_docs/version-2.7.0/security-kerberos.md
index 32e12f1..670586a 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-kerberos.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-kerberos.md
@@ -5,10 +5,6 @@ sidebar_label: "Authentication using Kerberos"
 original_id: security-kerberos
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 [Kerberos](https://web.mit.edu/kerberos/) is a network authentication protocol. By using secret-key cryptography, [Kerberos](https://web.mit.edu/kerberos/) is designed to provide strong authentication for client applications and server applications. 
 
 In Pulsar, you can use Kerberos with [SASL](https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer) as a choice for authentication. And Pulsar uses the [Java Authentication and Authorization Service (JAAS)](https://en.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service) for SASL configuration. You need to provide JAAS configurations for Kerberos authentication. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-oauth2.md b/site2/website-next/versioned_docs/version-2.7.0/security-oauth2.md
index 3596302..600b2cf 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-oauth2.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-oauth2.md
@@ -5,10 +5,6 @@ sidebar_label: "Authentication using OAuth 2.0 access tokens"
 original_id: security-oauth2
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar supports authenticating clients using OAuth 2.0 access tokens. You can use OAuth 2.0 access tokens to identify a Pulsar client and associate the Pulsar client with some "principal" (or "role"), which is permitted to do some actions, such as publishing messages to a topic or consume messages from a topic.
 
 This module is used to support the Pulsar client authentication plugin for OAuth 2.0. After communicating with the Oauth 2.0 server, the Pulsar client gets an `access token` from the Oauth 2.0 server, and passes this `access token` to the Pulsar broker to do the authentication. The broker can use the `org.apache.pulsar.broker.authentication.AuthenticationProviderToken`. Or, you can add your own `AuthenticationProvider` to make it with this module.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-overview.md b/site2/website-next/versioned_docs/version-2.7.0/security-overview.md
index 989c083..82a289f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: security-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 As the central message bus for a business, Apache Pulsar is frequently used for storing mission-critical data. Therefore, enabling security features in Pulsar is crucial.
 
 By default, Pulsar configures no encryption, authentication, or authorization. Any client can communicate to Apache Pulsar via plain text service URLs. So we must ensure that Pulsar accessing via these plain text service URLs is restricted to trusted clients only. In such cases, you can use Network segmentation and/or authorization ACLs to restrict access to trusted IPs. If you use neither, the state of cluster is wide open and anyone can access the cluster.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-tls-authentication.md b/site2/website-next/versioned_docs/version-2.7.0/security-tls-authentication.md
index 2fb9c84..20a6604 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-tls-authentication.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-tls-authentication.md
@@ -5,10 +5,6 @@ sidebar_label: "Authentication using TLS"
 original_id: security-tls-authentication
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## TLS authentication overview
 
 TLS authentication is an extension of [TLS transport encryption](security-tls-transport). Not only servers have keys and certs that the client uses to verify the identity of servers, clients also have keys and certs that the server uses to verify the identity of clients. You must have TLS transport encryption configured on your cluster before you can use TLS authentication. This guide assumes you already have TLS transport encryption configured.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-tls-keystore.md b/site2/website-next/versioned_docs/version-2.7.0/security-tls-keystore.md
index 34b7c28..5250888 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-tls-keystore.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-tls-keystore.md
@@ -5,10 +5,6 @@ sidebar_label: "Using TLS with KeyStore configure"
 original_id: security-tls-keystore
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Overview
 
 Apache Pulsar supports [TLS encryption](security-tls-transport.md) and [TLS authentication](security-tls-authentication) between clients and Apache Pulsar service. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-tls-transport.md b/site2/website-next/versioned_docs/version-2.7.0/security-tls-transport.md
index dfbfb93..478189f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-tls-transport.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-tls-transport.md
@@ -5,10 +5,6 @@ sidebar_label: "Transport Encryption using TLS"
 original_id: security-tls-transport
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## TLS overview
 
 By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.
@@ -84,13 +80,15 @@ Once you have created a CA certificate, you can create certificate requests and
 
 The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, `*.broker.usw.example.com`. This ensures that multiple machines can reuse the same certificate.
 
-> #### Tips
-> 
-> Sometimes matching the hostname is not possible or makes no sense,
-> such as when you create the brokers with random hostnames, or you
-> plan to connect to the hosts via their IP. In these cases, you 
-> should configure the client to disable TLS hostname verification. For more
-> details, you can see [the host verification section in client configuration](#hostname-verification).
+:::tip
+
+Sometimes matching the hostname is not possible or makes no sense,
+such as when you create the brokers with random hostnames, or you
+plan to connect to the hosts via their IP. In these cases, you 
+should configure the client to disable TLS hostname verification. For more
+details, you can see [the host verification section in client configuration](#hostname-verification).
+
+:::
 
 1. Enter the command below to generate the key.
 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/security-token-admin.md b/site2/website-next/versioned_docs/version-2.7.0/security-token-admin.md
index c0148f3..1679193 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/security-token-admin.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/security-token-admin.md
@@ -5,10 +5,6 @@ sidebar_label: "Token authentication admin"
 original_id: security-token-admin
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Token Authentication Overview
 
 Pulsar supports authenticating clients using security tokens that are based on [JSON Web Tokens](https://jwt.io/introduction/) ([RFC-7519](https://tools.ietf.org/html/rfc7519)).
diff --git a/site2/website-next/versioned_docs/version-2.7.0/sql-deployment-configurations.md b/site2/website-next/versioned_docs/version-2.7.0/sql-deployment-configurations.md
index c1df08c..9dafaa2 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/sql-deployment-configurations.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/sql-deployment-configurations.md
@@ -5,10 +5,6 @@ sidebar_label: "Configuration and deployment"
 original_id: sql-deployment-configurations
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can configure Presto Pulsar connector and deploy a cluster with the following instruction.
 
 ## Configure Presto Pulsar Connector
diff --git a/site2/website-next/versioned_docs/version-2.7.0/sql-getting-started.md b/site2/website-next/versioned_docs/version-2.7.0/sql-getting-started.md
index e8c4ecb..8a5cd71 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/sql-getting-started.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/sql-getting-started.md
@@ -5,10 +5,6 @@ sidebar_label: "Query data"
 original_id: sql-getting-started
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before querying data in Pulsar, you need to install Pulsar and built-in connectors. 
 
 ## Requirements
diff --git a/site2/website-next/versioned_docs/version-2.7.0/sql-overview.md b/site2/website-next/versioned_docs/version-2.7.0/sql-overview.md
index 7525309..2bb7826 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/sql-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/sql-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: sql-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started), you can store structured data in Pulsar and query the data by using [Presto](https://prestosql.io/).  
 
 As the core of Pulsar SQL, Presto Pulsar connector enables Presto workers within a Presto cluster to query data from Pulsar.
diff --git a/site2/website-next/versioned_docs/version-2.7.0/sql-rest-api.md b/site2/website-next/versioned_docs/version-2.7.0/sql-rest-api.md
index d2b0787..c92fd62 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/sql-rest-api.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/sql-rest-api.md
@@ -5,10 +5,6 @@ sidebar_label: "REST APIs"
 original_id: sql-rest-api
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This section lists resources that make up the Presto REST API v1. 
 
 ## Request for Presto services
diff --git a/site2/website-next/versioned_docs/version-2.7.3/getting-started-docker.md b/site2/website-next/versioned_docs/version-2.7.0/standalone-docker.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/getting-started-docker.md
copy to site2/website-next/versioned_docs/version-2.7.0/standalone-docker.md
diff --git a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-aws.md b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-aws.md
index 9ddfceb..5d3076f 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-aws.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-aws.md
@@ -5,10 +5,6 @@ sidebar_label: "AWS S3 offloader"
 original_id: tiered-storage-aws
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the AWS S3 offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-azure.md b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-azure.md
index 1382439..e1485af 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-azure.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-azure.md
@@ -5,10 +5,6 @@ sidebar_label: "Azure BlobStore offloader"
 original_id: tiered-storage-azure
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the Azure BlobStore offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-filesystem.md b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-filesystem.md
index c988c98..cc9c0f8 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-filesystem.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-filesystem.md
@@ -13,13 +13,11 @@ This chapter guides you through every step of installing and configuring the fil
 
 ## Installation
 
-Follow the steps below to install the filesystem offloader.
+This section describes how to install the filesystem offloader.
 
 ### Prerequisite
 
-- Pulsar: 2.4.2 or later versions
-
-- Hadoop: 3.x.x
+- Pulsar: 2.4.2 or higher versions
 
 ### Step
 
@@ -27,11 +25,11 @@ This example uses Pulsar 2.5.1.
 
 1. Download the Pulsar tarball using one of the following ways:
 
-   * Download from the [Apache mirror](https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz)
+   * Download the Pulsar tarball from the [Apache mirror](https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz)
 
-   * Download from the Pulsar [download page](https://pulsar.apache.org/download)
+   * Download the Pulsar tarball from the Pulsar [download page](https://pulsar.apache.org/download)
 
-   * Use [wget](https://www.gnu.org/software/wget)
+   * Use the [wget](https://www.gnu.org/software/wget) command to dowload the Pulsar tarball.
 
     ```shell
     
@@ -51,8 +49,8 @@ This example uses Pulsar 2.5.1.
 
    :::note
 
-   * If you are running Pulsar in a bare metal cluster, make sure that `offloaders` tarball is unzipped in every broker's Pulsar directory.
-   * If you are running Pulsar in Docker or deploying Pulsar using a Docker image (such as K8S and DCOS), you can use the `apachepulsar/pulsar-all` image instead of the `apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
+   * If you run Pulsar in a bare metal cluster, ensure that the `offloaders` tarball is unzipped in every broker's Pulsar directory.
+   * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8S and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
 
    :::
 
@@ -77,8 +75,8 @@ This example uses Pulsar 2.5.1.
 
    :::note
 
-   * If you are running Pulsar in a bare metal cluster, make sure that `offloaders` tarball is unzipped in every broker's Pulsar directory.
-   * If you are running Pulsar in Docker or deploying Pulsar using a Docker image (such as K8s and DCOS), you can use the `apachepulsar/pulsar-all` image instead of the `apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
+   * If you run Pulsar in a bare metal cluster, ensure that `offloaders` tarball is unzipped in every broker's Pulsar directory.
+   * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8s and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
 
    :::
 
@@ -94,122 +92,68 @@ Besides, you can also configure the filesystem offloader to run it automatically
 
 ### Configure filesystem offloader driver
 
-You can configure filesystem offloader driver in the configuration file `broker.conf` or `standalone.conf`.
+You can configure the filesystem offloader driver in the `broker.conf` or `standalone.conf` configuration file.
+
+<Tabs 
+  defaultValue="HDFS"
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+<TabItem value="HDFS">
 
 - **Required** configurations are as below.
-  
-  Required configuration | Description | Example value
+
+  Parameter | Description | Example value
   |---|---|---
   `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
-  `fileSystemURI` | Connection address | hdfs://127.0.0.1:9000
-  `fileSystemProfilePath` | Hadoop profile path | ../conf/filesystem_offload_core_site.xml
+  `fileSystemURI` | Connection address, which is the URI to access the default Hadoop distributed file system. | hdfs://127.0.0.1:9000
+  `offloadersDirectory` | Offloader directory | offloaders
+  `fileSystemProfilePath` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
 
 - **Optional** configurations are as below.
 
-  Optional configuration| Description | Example value
+  Parameter| Description | Example value
   |---|---|---
-  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic<br /><br />**Note**: it is not recommended that you set this configuration in the production environment.|2
-  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended that you set this configuration in the production environment.|5000
-
-#### Offloader driver (required)
-
-Offloader driver name, which is case-insensitive.
-
-This example sets the offloader driver name as _filesystem_.
-
-```conf
-
-managedLedgerOffloadDriver=filesystem
-
-```
-
-#### Connection address (required)
-
-Connection address is the URI to access the default Hadoop distributed file system. 
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
-##### Example
-
-This example sets the connection address as _hdfs://127.0.0.1:9000_.
-
-```conf
-
-fileSystemURI=hdfs://127.0.0.1:9000
-
-```
-
-#### Hadoop profile path (required)
-
-The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning.
-
-##### Example
-
-This example sets the Hadoop profile path as _../conf/filesystem_offload_core_site.xml_.
-
-```conf
-
-fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
+</TabItem>
+<TabItem value="NFS">
 
-```
-
-You can set the following configurations in the _filesystem_offload_core_site.xml_ file.
-
-```
-
-<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>
+- **Required** configurations are as below.
+  
+  Parameter | Description | Example value
+  |---|---|---
+  `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
+  `offloadersDirectory` | Offloader directory | offloaders
+  `fileSystemProfilePath` | NFS profile path. The configuration file is stored in the NFS profile path. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-```
+- **Optional** configurations are as below.
 
-:::tip
+  Parameter| Description | Example value
+  |---|---|---
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
-For more information about the Hadoop HDFS, see [here](https://hadoop.apache.org/docs/current/).
+</TabItem>
 
-:::
+</Tabs>
 
-### Configure filesystem offloader to run automatically
+### Run filesystem offloader automatically
 
-Namespace policy can be configured to offload data automatically once a threshold is reached. The threshold is based on the size of data that a topic has stored on a Pulsar cluster. Once the topic reaches the threshold, an offload operation is triggered automatically. 
+You can configure the namespace policy to offload data automatically once a threshold is reached. The threshold is based on the size of data that a topic has stored on a Pulsar cluster. Once the topic storage reaches the threshold, an offload operation is triggered automatically. 
 
 Threshold value|Action
 |---|---
-> 0 | It triggers the offloading operation if the topic storage reaches its threshold.
+| > 0 | It triggers the offloading operation if the topic storage reaches its threshold.
 = 0|It causes a broker to offload data as soon as possible.
 < 0 |It disables automatic offloading operation.
 
-Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, offloader does not work until the current segment is full.
+Automatic offload runs when a new segment is added to a topic log. If you set the threshold on a namespace, but few messages are being produced to the topic, the filesystem offloader does not work until the current segment is full.
 
-You can configure the threshold size using CLI tools, such as pulsar-admin.
+You can configure the threshold using CLI tools, such as pulsar-admin.
 
 #### Example
 
-This example sets the filesystem offloader threshold size to 10 MB using pulsar-admin.
+This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.
 
 ```bash
 
@@ -223,19 +167,19 @@ For more information about the `pulsar-admin namespaces set-offload-threshold op
 
 :::
 
-### Configure filesystem offloader to run manually
+### Run filesystem offloader manually
 
-For individual topics, you can trigger filesystem offloader manually using one of the following methods:
+For individual topics, you can trigger the filesystem offloader manually using one of the following methods:
 
-- Use REST endpoint.
+- Use the REST endpoint.
 
 - Use CLI tools (such as pulsar-admin). 
 
-To trigger via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. If the size of the topic data on the Pulsar cluster exceeds this threshold, segments from the topic are offloaded to the filesystem until the threshold is no longer exceeded. Older segments are offloaded first.
+To manually trigger the filesystem offloader via CLI tools, you need to specify the maximum amount of data (threshold) that should be retained on a Pulsar cluster for a topic. If the size of the topic data on the Pulsar cluster exceeds this threshold, segments from the topic are offloaded to the filesystem until the threshold is no longer exceeded. Older segments are offloaded first.
 
 #### Example
 
-- This example triggers the filesystem offloader to run manually using pulsar-admin.
+- This example manually run the filesystem offloader using pulsar-admin.
 
   ```bash
   
@@ -316,4 +260,366 @@ To trigger via CLI tools, you need to specify the maximum amount of data (thresh
 
 ## Tutorial
 
-For the complete and step-by-step instructions on how to use the filesystem offloader with Pulsar, see [here](https://hub.streamnative.io/offloaders/filesystem/2.5.1).
\ No newline at end of file
+This section provides step-by-step instructions on how to use the filesystem offloader to move data from Pulsar to Hadoop Distributed File System (HDFS) or Network File system (NFS).
+
+<Tabs 
+  defaultValue="HDFS"
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+<TabItem value="HDFS">
+
+To move data from Pulsar to HDFS, follow these steps.
+
+### Step 1: Prepare the HDFS environment
+
+This tutorial sets up a Hadoop single node cluster and uses Hadoop 3.2.1.
+
+:::tip
+
+For details about how to set up a Hadoop single node cluster, see [here](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html).
+
+:::
+
+1. Download and uncompress Hadoop 3.2.1. 
+
+   ```
+   
+   wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz  
+
+   tar -zxvf hadoop-3.2.1.tar.gz -C $HADOOP_HOME
+   
+   ```
+
+2. Configure Hadoop.
+
+   ```
+   
+   # $HADOOP_HOME/etc/hadoop/core-site.xml
+   <configuration>
+       <property>
+           <name>fs.defaultFS</name>
+           <value>hdfs://localhost:9000</value>
+       </property>
+   </configuration>
+
+   # $HADOOP_HOME/etc/hadoop/hdfs-site.xml
+   <configuration>
+       <property>
+           <name>dfs.replication</name>
+           <value>1</value>
+       </property>
+   </configuration>
+   
+   ```
+
+3. Set passphraseless ssh.
+
+   ```
+   
+   # Now check that you can ssh to the localhost without a passphrase:
+   $ ssh localhost
+   # If you cannot ssh to localhost without a passphrase, execute the following commands
+   $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
+   $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
+   $ chmod 0600 ~/.ssh/authorized_keys
+   
+   ```
+
+4. Start HDFS.
+
+   ```
+   
+   # don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode
+   $HADOOP_HOME/bin/hadoop namenode -format
+   $HADOOP_HOME/sbin/start-dfs.sh
+   
+   ```
+
+5. Navigate to the [HDFS website](http://localhost:9870/).
+
+   You can see the **Overview** page.
+
+   ![](/assets/FileSystem-1.png)
+
+
+   1. At the top navigation bar, click **Datanodes** to check DataNode information.
+
+       ![](/assets/FileSystem-2.png)
+
+   2. Click **HTTP Address** to get more detailed information about localhost:9866.
+
+       As can be seen below, the size of **Capacity Used** is 4 KB, which is the initial value.
+
+       ![](/assets/FileSystem-3.png)
+
+### Step 2: Install the filesystem offloader
+
+For details, see [installation](#installation).
+
+### Step 3: Configure the filesystem offloader
+
+As indicated in the [configuration](#configuration) section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in **standalone** mode.
+
+Set the following configurations in the `conf/standalone.conf` file.
+
+```conf
+
+managedLedgerOffloadDriver=filesystem
+fileSystemURI=hdfs://127.0.0.1:9000
+fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
+
+```
+
+:::note
+
+For testing purposes, you can set the following two configurations to speed up ledger rollover, but it is not recommended that you set them in the production environment.
+
+:::
+
+```
+
+managedLedgerMinLedgerRolloverTimeMinutes=1
+managedLedgerMaxEntriesPerLedger=100
+
+```
+
+</TabItem>
+<TabItem value="NFS">
+
+:::note
+
+In this section, it is assumed that you have enabled NFS service and set the shared path of your NFS service. In this section, `/Users/test` is used as the shared path of NFS service.
+
+:::
+
+To offload data to NFS, follow these steps.
+
+### Step 1: Install the filesystem offloader
+
+For details, see [installation](#installation).
+
+### Step 2: Mont your NFS to your local filesystem
+
+This example mounts mounts */Users/pulsar_nfs* to */Users/test*.
+
+```
+
+mount -e 192.168.0.103:/Users/test/Users/pulsar_nfs
+
+```
+
+### Step 3: Configure the filesystem offloader driver
+
+As indicated in the [configuration](#configuration) section, you need to configure some properties for the filesystem offloader driver before using it. This tutorial assumes that you have configured the filesystem offloader driver as below and run Pulsar in **standalone** mode.
+
+1. Set the following configurations in the `conf/standalone.conf` file.
+
+   ```conf
+   
+   managedLedgerOffloadDriver=filesystem
+   fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
+   
+   ```
+
+2. Modify the *filesystem_offload_core_site.xml* as follows.
+
+   ```
+   
+   <property>
+       <name>fs.defaultFS</name>
+       <value>file:///</value>
+   </property>
+
+   <property>
+       <name>hadoop.tmp.dir</name>
+       <value>file:///Users/pulsar_nfs</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>
+   
+   ```
+
+</TabItem>
+
+</Tabs>
+
+### Step 4: Offload data from BookKeeper to filesystem
+
+Execute the following commands in the repository where you download Pulsar tarball. For example, `~/path/to/apache-pulsar-2.5.1`.
+
+1. Start Pulsar standalone.
+
+   ```
+   
+   bin/pulsar standalone -a 127.0.0.1
+   
+   ```
+
+2. To ensure the data generated is not deleted immediately, it is recommended to set the [retention policy](https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies), which can be either a **size** limit or a **time** limit. The larger value you set for the retention policy, the longer the data can be retained.
+
+   ```
+   
+   bin/pulsar-admin namespaces set-retention public/default --size 100M --time 2d
+   
+   ```
+
+   :::tip
+
+   For more information about the `pulsarctl namespaces set-retention options` command, including flags, descriptions, default values, and shorthands, see [here](https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-). 
+
+   :::
+
+3. Produce data using pulsar-client.
+
+   ```
+   
+   bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
+   
+   ```
+
+4. The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.
+
+   ```
+   
+   bin/pulsar-admin topics stats-internal public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The data of the ledger 696 is not offloaded.
+
+   ```
+   
+   {
+   "version": 1,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:46:25.821+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
+
+5. Wait a second and send more messages to the topic.
+
+   ```
+   
+   bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
+   
+   ```
+
+6. Check the ledger status using pulsarctl.
+
+   ```
+   
+   bin/pulsar-admin topics stats-internal public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The ledger 696 is rollovered.
+
+   ```
+   
+   {
+   "version": 2,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:48:52.288+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "entries": 1001,
+       "size": 81695,
+       "isOffloaded": false
+   },
+   {
+       "ledgerId": 697,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
+
+7. Trigger the offloading operation manually using pulsarctl.
+
+   ```
+   
+   bin/pulsar-admin topics offload -s 0 public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   Data in ledgers before the ledge 697 is offloaded.
+
+   ```
+   
+   # offload info, the ledgers before 697 will be offloaded
+   Offload triggered for persistent://public/default/fs-test3 for messages before 697:0:-1
+   
+   ```
+
+8.  Check the ledger status using pulsarctl.
+
+   ```
+   
+   bin/pulsar-admin topics stats-internal public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The data of the ledger 696 is offloaded.
+
+   ```
+   
+   {
+   "version": 4,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:52:13.25+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "entries": 1001,
+       "size": 81695,
+       "isOffloaded": true
+   },
+   {
+       "ledgerId": 697,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
+
+   And the **Capacity Used** is changed from 4 KB to 116.46 KB.
+
+   ![](/assets/FileSystem-8.png)
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-gcs.md b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-gcs.md
index 5c70cd3..81e7c5c 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-gcs.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-gcs.md
@@ -5,10 +5,6 @@ sidebar_label: "GCS offloader"
 original_id: tiered-storage-gcs
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the GCS offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-overview.md b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-overview.md
index 8536268..846a5a5 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-overview.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/tiered-storage-overview.md
@@ -5,10 +5,6 @@ sidebar_label: "Overview"
 original_id: tiered-storage-overview
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's **Tiered Storage** feature allows older backlog data to be moved from BookKeeper to long term and cheaper storage, while still allowing clients to access the backlog as if nothing has changed. 
 
 * Tiered storage uses [Apache jclouds](https://jclouds.apache.org) to support [Amazon S3](https://aws.amazon.com/s3/) and [GCS (Google Cloud Storage)](https://cloud.google.com/storage/) for long term storage. 
diff --git a/site2/website-next/versioned_docs/version-2.7.0/transaction-api.md b/site2/website-next/versioned_docs/version-2.7.0/transaction-api.md
deleted file mode 100644
index ba8deda..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/transaction-api.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-id: transactions-api
-title: Transactions API (Developer Preview)
-sidebar_label: "Transactions API"
-original_id: transactions-api
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-All messages in a transaction is available only to consumers after the transaction is committed. If a transaction is aborted, all the writes and acknowledgments in this transaction rollback. 
-
-Currently, Pulsar transaction is a developer preview feature. It is disabled by default. You can enable the feature and use transactions in your application in development environment.
-
-## Prerequisites
-1. To enable transactions in Pulsar, you need to configure the parameter in the `broker.conf` file.
-
-```
-
-transactionCoordinatorEnabled=true
-
-```
-
-2. Initialize transaction coordinator metadata, so the transaction coordinators can leverage advantages of the partitioned topic, such as load balance.
-
-```
-
-bin/pulsar initialize-transaction-coordinator-metadata -cs 127.0.0.1:2181 -c standalone
-
-```
-
-After initializing transaction coordinator metadata, you can use the transactions API. The following APIs are available.
-
-## Initialize Pulsar client 
-
-You can enable transaction for transaction client and initialize transaction coordinator client.
-
-```
-
-PulsarClient pulsarClient = PulsarClient.builder()
-        .serviceUrl("pulsar://localhost:6650")
-        .enableTransaction(true)
-        .build();
-
-```
-
-## Start transactions
-You can start transaction in the following way.
-
-```
-
-Transaction txn = pulsarClient
-        .newTransaction()
-        .withTransactionTimeout(5, TimeUnit.MINUTES)
-        .build()
-        .get();
-
-```
-
-## Produce transaction messages
-
-A transaction parameter is required when producing new transaction messages. The semantic of the transaction messages in Pulsar is `read-committed`, so the consumer cannot receive the ongoing transaction messages before the transaction is committed.
-
-```
-
-producer.newMessage(txn).value("Hello Pulsar Transaction".getBytes()).sendAsync();
-
-```
-
-## Acknowledge the messages with the transaction
-
-The transaction acknowledgement requires a transaction parameter. The transaction acknowledgement marks the messages state to pending-ack state. When the transaction is committed, the pending-ack state becomes ack state. If the transaction is aborted, the pending-ack state becomes unack state.
-
-```
-
-Message<byte[]> message = consumer.receive();
-consumer.acknowledgeAsync(message.getMessageId(), txn);
-
-```
-
-## Commit transactions 
-
-When the transaction is committed, consumers receive the transaction messages and the pending-ack state becomes ack state.
-
-```
-
-txn.commit().get();
-
-```
-
-## Abort transaction
-
-When the transaction is aborted, the transaction acknowledgement is canceled and the pending-ack messages are redelivered.
-
-```
-
-txn.abort().get();
-
-```
-
-### Example
-The following example shows how messages are processed in transaction.
-
-```
-
-PulsarClient pulsarClient = PulsarClient.builder()
-        .serviceUrl(getPulsarServiceList().get(0).getBrokerServiceUrl())
-        .statsInterval(0, TimeUnit.SECONDS)
-        .enableTransaction(true)
-        .build();
-
-String sourceTopic = "public/default/source-topic";
-String sinkTopic = "public/default/sink-topic";
-
-Producer<String> sourceProducer = pulsarClient
-        .newProducer(Schema.STRING)
-        .topic(sourceTopic)
-        .create();
-sourceProducer.newMessage().value("hello pulsar transaction").sendAsync();
-
-Consumer<String> sourceConsumer = pulsarClient
-        .newConsumer(Schema.STRING)
-        .topic(sourceTopic)
-        .subscriptionName("test")
-        .subscriptionType(SubscriptionType.Shared)
-        .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
-        .subscribe();
-
-Producer<String> sinkProducer = pulsarClient
-        .newProducer(Schema.STRING)
-        .topic(sinkTopic)
-        .sendTimeout(0, TimeUnit.MILLISECONDS)
-        .create();
-
-Transaction txn = pulsarClient
-        .newTransaction()
-        .withTransactionTimeout(5, TimeUnit.MINUTES)
-        .build()
-        .get();
-
-// source message acknowledgement and sink message produce belong to one transaction,
-// they are combined into an atomic operation.
-Message<String> message = sourceConsumer.receive();
-sourceConsumer.acknowledgeAsync(message.getMessageId(), txn);
-sinkProducer.newMessage(txn).value("sink data").sendAsync();
-
-txn.commit().get();
-
-```
-
-## Enable batch messages in transactions
-
-To enable batch messages in transactions, you need to enable the batch index acknowledgement feature. The transaction acks check whether the batch index acknowledgement conflicts.
-
-To enable batch index acknowledgement, you need to set `acknowledgmentAtBatchIndexLevelEnabled` to `true` in the `broker.conf` or `standalone.conf` file.
-
-```
-
-acknowledgmentAtBatchIndexLevelEnabled=true
-
-```
-
-And then you need to call the `enableBatchIndexAcknowledgment(true)` method in the consumer builder.
-
-```
-
-Consumer<byte[]> sinkConsumer = pulsarClient
-        .newConsumer()
-        .topic(transferTopic)
-        .subscriptionName("sink-topic")
-        .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
-        .subscriptionType(SubscriptionType.Shared)
-        .enableBatchIndexAcknowledgment(true) // enable batch index acknowledgement
-        .subscribe();
-
-```
-
diff --git a/site2/website-next/versioned_docs/version-2.7.0/transaction-guarantee.md b/site2/website-next/versioned_docs/version-2.7.0/transaction-guarantee.md
deleted file mode 100644
index b75c94a..0000000
--- a/site2/website-next/versioned_docs/version-2.7.0/transaction-guarantee.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-id: transactions-guarantee
-title: Transactions Guarantee
-sidebar_label: "Transactions Guarantee"
-original_id: transactions-guarantee
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
-Pulsar transactions support the following guarantee.
-
-## Atomic multi-partition writes and multi-subscription acknowledges
-Transactions enable atomic writes to multiple topics and partitions. A batch of messages in a transaction can be received from, produced to, and acknowledged by many partitions. All the operations involved in a transaction succeed or fail as a single unit. 
-
-## Read transactional message
-All the messages in a transaction are available only for consumers until the transaction is committed.
-
-## Acknowledge transactional message
-A message is acknowledged successfully only once by a consumer under the subscription when acknowledging the message with the transaction ID.
\ No newline at end of file
diff --git a/site2/website-next/versioned_docs/version-2.7.3/transaction-api.md b/site2/website-next/versioned_docs/version-2.7.0/transactions-api.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/transaction-api.md
copy to site2/website-next/versioned_docs/version-2.7.0/transactions-api.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/transaction-guarantee.md b/site2/website-next/versioned_docs/version-2.7.0/transactions-guarantee.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.1/transaction-guarantee.md
copy to site2/website-next/versioned_docs/version-2.7.0/transactions-guarantee.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/concepts-transactions.md b/site2/website-next/versioned_docs/version-2.7.0/transactions.md
similarity index 100%
copy from site2/website-next/versioned_docs/version-2.7.3/concepts-transactions.md
copy to site2/website-next/versioned_docs/version-2.7.0/transactions.md
diff --git a/site2/website-next/versioned_docs/version-2.7.0/window-functions-context.md b/site2/website-next/versioned_docs/version-2.7.0/window-functions-context.md
index 940c06c..f80fea5 100644
--- a/site2/website-next/versioned_docs/version-2.7.0/window-functions-context.md
+++ b/site2/website-next/versioned_docs/version-2.7.0/window-functions-context.md
@@ -5,10 +5,6 @@ sidebar_label: "Window Functions: Context"
 original_id: window-functions-context
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Java SDK provides access to a **window context object** that can be used by a window function. This context object provides a wide variety of information and functionality for Pulsar window functions as below.
 
 - [Spec](#spec)
diff --git a/site2/website-next/versioned_docs/version-2.7.1/administration-pulsar-manager.md b/site2/website-next/versioned_docs/version-2.7.1/administration-pulsar-manager.md
index 49f0a63..dd8a392 100644
--- a/site2/website-next/versioned_docs/version-2.7.1/administration-pulsar-manager.md
+++ b/site2/website-next/versioned_docs/version-2.7.1/administration-pulsar-manager.md
@@ -103,7 +103,7 @@ If you want to enable JWT authentication, use one of the following methods.
 
 ```
 
-wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/apache-pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
+wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
 tar -zxvf apache-pulsar-manager-0.2.0-bin.tar.gz
 cd pulsar-manager
 tar -zxvf pulsar-manager.tar
diff --git a/site2/website-next/versioned_docs/version-2.7.1/client-libraries-go.md b/site2/website-next/versioned_docs/version-2.7.1/client-libraries-go.md
index c8b5047..df40107 100644
--- a/site2/website-next/versioned_docs/version-2.7.1/client-libraries-go.md
+++ b/site2/website-next/versioned_docs/version-2.7.1/client-libraries-go.md
@@ -192,8 +192,9 @@ if err != nil {
 defer client.Close()
 
 topicName := newTopicName()
-producer, err := client.CreateProducer(ProducerOptions{
-	Topic: topicName,
+producer, err := client.CreateProducer(pulsar.ProducerOptions{
+    Topic:           topicName,
+    DisableBatching: true,
 })
 if err != nil {
 	log.Fatal(err)
diff --git a/site2/website-next/versioned_docs/version-2.7.1/concepts-messaging.md b/site2/website-next/versioned_docs/version-2.7.1/concepts-messaging.md
index 26d2747..a285cc9 100644
--- a/site2/website-next/versioned_docs/version-2.7.1/concepts-messaging.md
+++ b/site2/website-next/versioned_docs/version-2.7.1/concepts-messaging.md
@@ -70,7 +70,7 @@ When you enable chunking, read the following instructions.
 - Chunking is only supported for persisted topics.
 - Chunking is only supported for the exclusive and failover subscription types.
 
-When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
+When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
 
 The consumer consumes the chunked messages and buffers them until the consumer receives all the chunks of a message. And then the consumer stitches chunked messages together and places them into the receiver-queue. Clients consume messages from the receiver-queue. Once the consumer consumes the entire large message and acknowledges it, the consumer internally sends acknowledgement of all the chunk messages associated to that large message. You can set the `maxPendingChuckedMessage` param [...]
 
diff --git a/site2/website-next/versioned_docs/version-2.7.1/developing-binary-protocol.md b/site2/website-next/versioned_docs/version-2.7.1/develop-binary-protocol.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/developing-binary-protocol.md
rename to site2/website-next/versioned_docs/version-2.7.1/develop-binary-protocol.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/developing-cpp.md b/site2/website-next/versioned_docs/version-2.7.1/develop-cpp.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/developing-cpp.md
rename to site2/website-next/versioned_docs/version-2.7.1/develop-cpp.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/developing-load-manager.md b/site2/website-next/versioned_docs/version-2.7.1/develop-load-manager.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/developing-load-manager.md
rename to site2/website-next/versioned_docs/version-2.7.1/develop-load-manager.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/developing-tools.md b/site2/website-next/versioned_docs/version-2.7.1/develop-tools.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/developing-tools.md
rename to site2/website-next/versioned_docs/version-2.7.1/develop-tools.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/getting-started-helm.md b/site2/website-next/versioned_docs/version-2.7.1/kubernetes-helm.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.2/getting-started-helm.md
rename to site2/website-next/versioned_docs/version-2.7.1/kubernetes-helm.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/reference-cli-tools.md b/site2/website-next/versioned_docs/version-2.7.1/reference-cli-tools.md
index 2c215bf..d17bd3e 100644
--- a/site2/website-next/versioned_docs/version-2.7.1/reference-cli-tools.md
+++ b/site2/website-next/versioned_docs/version-2.7.1/reference-cli-tools.md
@@ -813,7 +813,7 @@ The table below lists the environment variables that you can use to configure th
 |BOOKIE_STOP_TIMEOUT|Wait time before forcefully killing the Bookie server instance if attempts to stop it are not successful||
 
 
-### `autorecovery`
+### `auto-recovery`
 Runs an auto-recovery service
 
 Usage
diff --git a/site2/website-next/versioned_docs/version-2.7.2/getting-started-docker.md b/site2/website-next/versioned_docs/version-2.7.1/standalone-docker.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.2/getting-started-docker.md
rename to site2/website-next/versioned_docs/version-2.7.1/standalone-docker.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/tiered-storage-filesystem.md b/site2/website-next/versioned_docs/version-2.7.1/tiered-storage-filesystem.md
index 24084ea..337acd8 100644
--- a/site2/website-next/versioned_docs/version-2.7.1/tiered-storage-filesystem.md
+++ b/site2/website-next/versioned_docs/version-2.7.1/tiered-storage-filesystem.md
@@ -93,13 +93,12 @@ Besides, you can also configure the filesystem offloader to run it automatically
 
 You can configure the filesystem offloader driver in the `broker.conf` or `standalone.conf` configuration file.
 
-- **Required** configurations are as below.
-
-  <Tabs 
-    defaultValue="HDFS"
-    values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>    
+<Tabs 
+  defaultValue="HDFS"
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+<TabItem value="HDFS">
 
-  <TabItem value="HDFS">
+- **Required** configurations are as below.
 
   Parameter | Description | Example value
   |---|---|---
@@ -108,19 +107,24 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-  <TabItem value="NFS">
+- **Optional** configurations are as below.
+
+  Parameter| Description | Example value
+  |---|---|---
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+<TabItem value="NFS">
+
+- **Required** configurations are as below.
+  
   Parameter | Description | Example value
   |---|---|---
   `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | NFS profile path. The configuration file is stored in the NFS profile path. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-
-  </Tabs>
-
 - **Optional** configurations are as below.
 
   Parameter| Description | Example value
@@ -128,6 +132,10 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
   `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+
+</Tabs>
+
 ### Run filesystem offloader automatically
 
 You can configure the namespace policy to offload data automatically once a threshold is reached. The threshold is based on the size of data that a topic has stored on a Pulsar cluster. Once the topic storage reaches the threshold, an offload operation is triggered automatically. 
@@ -256,7 +264,6 @@ This section provides step-by-step instructions on how to use the filesystem off
 <Tabs 
   defaultValue="HDFS"
   values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
-
 <TabItem value="HDFS">
 
 To move data from Pulsar to HDFS, follow these steps.
diff --git a/site2/website-next/versioned_docs/version-2.7.2/transaction-api.md b/site2/website-next/versioned_docs/version-2.7.1/transactions-api.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.2/transaction-api.md
rename to site2/website-next/versioned_docs/version-2.7.1/transactions-api.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/transaction-guarantee.md b/site2/website-next/versioned_docs/version-2.7.1/transactions-guarantee.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/transaction-guarantee.md
rename to site2/website-next/versioned_docs/version-2.7.1/transactions-guarantee.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/concepts-transactions.md b/site2/website-next/versioned_docs/version-2.7.1/transactions.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.2/concepts-transactions.md
rename to site2/website-next/versioned_docs/version-2.7.1/transactions.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/administration-pulsar-manager.md b/site2/website-next/versioned_docs/version-2.7.2/administration-pulsar-manager.md
index 49f0a63..dd8a392 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/administration-pulsar-manager.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/administration-pulsar-manager.md
@@ -103,7 +103,7 @@ If you want to enable JWT authentication, use one of the following methods.
 
 ```
 
-wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/apache-pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
+wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
 tar -zxvf apache-pulsar-manager-0.2.0-bin.tar.gz
 cd pulsar-manager
 tar -zxvf pulsar-manager.tar
diff --git a/site2/website-next/versioned_docs/version-2.7.2/client-libraries-dotnet.md b/site2/website-next/versioned_docs/version-2.7.2/client-libraries-dotnet.md
index ade664c..4e0afe3 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/client-libraries-dotnet.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/client-libraries-dotnet.md
@@ -9,7 +9,7 @@ You can use the Pulsar C# client (DotPulsar) to create Pulsar producers and cons
 
 ## Installation
 
-You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio , see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
+You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio, see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
 
 ### Prerequisites
 
diff --git a/site2/website-next/versioned_docs/version-2.7.2/client-libraries-go.md b/site2/website-next/versioned_docs/version-2.7.2/client-libraries-go.md
index c8b5047..df40107 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/client-libraries-go.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/client-libraries-go.md
@@ -192,8 +192,9 @@ if err != nil {
 defer client.Close()
 
 topicName := newTopicName()
-producer, err := client.CreateProducer(ProducerOptions{
-	Topic: topicName,
+producer, err := client.CreateProducer(pulsar.ProducerOptions{
+    Topic:           topicName,
+    DisableBatching: true,
 })
 if err != nil {
 	log.Fatal(err)
diff --git a/site2/website-next/versioned_docs/version-2.7.2/concepts-messaging.md b/site2/website-next/versioned_docs/version-2.7.2/concepts-messaging.md
index aa543b6..c1242bc 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/concepts-messaging.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/concepts-messaging.md
@@ -70,7 +70,7 @@ When you enable chunking, read the following instructions.
 - Chunking is only supported for persisted topics.
 - Chunking is only supported for the exclusive and failover subscription types.
 
-When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
+When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
 
 The consumer consumes the chunked messages and buffers them until the consumer receives all the chunks of a message. And then the consumer stitches chunked messages together and places them into the receiver-queue. Clients consume messages from the receiver-queue. Once the consumer consumes the entire large message and acknowledges it, the consumer internally sends acknowledgement of all the chunk messages associated to that large message. You can set the `maxPendingChuckedMessage` param [...]
 
diff --git a/site2/website-next/versioned_docs/version-2.7.2/deploy-aws.md b/site2/website-next/versioned_docs/version-2.7.2/deploy-aws.md
index 7ae3bb0..6323051 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/deploy-aws.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/deploy-aws.md
@@ -210,7 +210,7 @@ Remember to enter this command just only once. If you attempt to enter this comm
 
 Once you have created the necessary AWS resources using Terraform, you can install and run Pulsar on the Terraform-created EC2 instances using Ansible. 
 
-(Optional) If you want to use any [built-in IO connectors](io-connectors) , edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
+(Optional) If you want to use any [built-in IO connectors](io-connectors), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
 
 To run the playbook, enter this command:
 
diff --git a/site2/website-next/versioned_docs/version-2.7.2/deploy-bare-metal.md b/site2/website-next/versioned_docs/version-2.7.2/deploy-bare-metal.md
index 72f0712..f814a11 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/deploy-bare-metal.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/deploy-bare-metal.md
@@ -53,7 +53,7 @@ Broker is only supported on 64-bit JVM.
 
 > If you do not have a DNS server, you can use the multi-host format in the service URL instead.
 
-Each machine in your cluster needs to have [Java 8](https://adoptopenjdk.net/?variant=openjdk8) or [Java 11](https://adoptopenjdk.net/?variant=openjdk11) installed.
+Each machine in your cluster needs to have [Java 8](https://adoptium.net/?variant=openjdk8) or [Java 11](https://adoptium.net/?variant=openjdk11) installed.
 
 The following is a diagram showing the basic setup:
 
diff --git a/site2/website-next/versioned_docs/version-2.7.1/getting-started-helm.md b/site2/website-next/versioned_docs/version-2.7.2/kubernetes-helm.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/getting-started-helm.md
rename to site2/website-next/versioned_docs/version-2.7.2/kubernetes-helm.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/reference-cli-tools.md b/site2/website-next/versioned_docs/version-2.7.2/reference-cli-tools.md
index 2c215bf..d17bd3e 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/reference-cli-tools.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/reference-cli-tools.md
@@ -813,7 +813,7 @@ The table below lists the environment variables that you can use to configure th
 |BOOKIE_STOP_TIMEOUT|Wait time before forcefully killing the Bookie server instance if attempts to stop it are not successful||
 
 
-### `autorecovery`
+### `auto-recovery`
 Runs an auto-recovery service
 
 Usage
diff --git a/site2/website-next/versioned_docs/version-2.7.1/getting-started-docker.md b/site2/website-next/versioned_docs/version-2.7.2/standalone-docker.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/getting-started-docker.md
rename to site2/website-next/versioned_docs/version-2.7.2/standalone-docker.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/tiered-storage-filesystem.md b/site2/website-next/versioned_docs/version-2.7.2/tiered-storage-filesystem.md
index 6d7331a..cc9c0f8 100644
--- a/site2/website-next/versioned_docs/version-2.7.2/tiered-storage-filesystem.md
+++ b/site2/website-next/versioned_docs/version-2.7.2/tiered-storage-filesystem.md
@@ -94,13 +94,12 @@ Besides, you can also configure the filesystem offloader to run it automatically
 
 You can configure the filesystem offloader driver in the `broker.conf` or `standalone.conf` configuration file.
 
-- **Required** configurations are as below.
-
-  <Tabs 
-    defaultValue="HDFS"
-    values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>    
+<Tabs 
+  defaultValue="HDFS"
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+<TabItem value="HDFS">
 
-  <TabItem value="HDFS">
+- **Required** configurations are as below.
 
   Parameter | Description | Example value
   |---|---|---
@@ -109,19 +108,24 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-  <TabItem value="NFS">
+- **Optional** configurations are as below.
+
+  Parameter| Description | Example value
+  |---|---|---
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+<TabItem value="NFS">
+
+- **Required** configurations are as below.
+  
   Parameter | Description | Example value
   |---|---|---
   `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | NFS profile path. The configuration file is stored in the NFS profile path. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-
-  </Tabs>
-
 - **Optional** configurations are as below.
 
   Parameter| Description | Example value
@@ -129,6 +133,10 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
   `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+
+</Tabs>
+
 ### Run filesystem offloader automatically
 
 You can configure the namespace policy to offload data automatically once a threshold is reached. The threshold is based on the size of data that a topic has stored on a Pulsar cluster. Once the topic storage reaches the threshold, an offload operation is triggered automatically. 
@@ -257,7 +265,6 @@ This section provides step-by-step instructions on how to use the filesystem off
 <Tabs 
   defaultValue="HDFS"
   values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
-
 <TabItem value="HDFS">
 
 To move data from Pulsar to HDFS, follow these steps.
diff --git a/site2/website-next/versioned_docs/version-2.7.1/transaction-api.md b/site2/website-next/versioned_docs/version-2.7.2/transactions-api.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/transaction-api.md
rename to site2/website-next/versioned_docs/version-2.7.2/transactions-api.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/transaction-guarantee.md b/site2/website-next/versioned_docs/version-2.7.2/transactions-guarantee.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/transaction-guarantee.md
rename to site2/website-next/versioned_docs/version-2.7.2/transactions-guarantee.md
diff --git a/site2/website-next/versioned_docs/version-2.7.1/concepts-transactions.md b/site2/website-next/versioned_docs/version-2.7.2/transactions.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.1/concepts-transactions.md
rename to site2/website-next/versioned_docs/version-2.7.2/transactions.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/administration-pulsar-manager.md b/site2/website-next/versioned_docs/version-2.7.3/administration-pulsar-manager.md
index 49f0a63..dd8a392 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/administration-pulsar-manager.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/administration-pulsar-manager.md
@@ -103,7 +103,7 @@ If you want to enable JWT authentication, use one of the following methods.
 
 ```
 
-wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/apache-pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
+wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
 tar -zxvf apache-pulsar-manager-0.2.0-bin.tar.gz
 cd pulsar-manager
 tar -zxvf pulsar-manager.tar
diff --git a/site2/website-next/versioned_docs/version-2.7.3/client-libraries-dotnet.md b/site2/website-next/versioned_docs/version-2.7.3/client-libraries-dotnet.md
index ade664c..4e0afe3 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/client-libraries-dotnet.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/client-libraries-dotnet.md
@@ -9,7 +9,7 @@ You can use the Pulsar C# client (DotPulsar) to create Pulsar producers and cons
 
 ## Installation
 
-You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio , see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
+You can install the Pulsar C# client library either through the dotnet CLI or through the Visual Studio. This section describes how to install the Pulsar C# client library through the dotnet CLI. For information about how to install the Pulsar C# client library through the Visual Studio, see [here](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough?view=vsmac-2019).
 
 ### Prerequisites
 
diff --git a/site2/website-next/versioned_docs/version-2.7.3/client-libraries-go.md b/site2/website-next/versioned_docs/version-2.7.3/client-libraries-go.md
index c8b5047..df40107 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/client-libraries-go.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/client-libraries-go.md
@@ -192,8 +192,9 @@ if err != nil {
 defer client.Close()
 
 topicName := newTopicName()
-producer, err := client.CreateProducer(ProducerOptions{
-	Topic: topicName,
+producer, err := client.CreateProducer(pulsar.ProducerOptions{
+    Topic:           topicName,
+    DisableBatching: true,
 })
 if err != nil {
 	log.Fatal(err)
diff --git a/site2/website-next/versioned_docs/version-2.7.3/concepts-messaging.md b/site2/website-next/versioned_docs/version-2.7.3/concepts-messaging.md
index 26d2747..a285cc9 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/concepts-messaging.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/concepts-messaging.md
@@ -70,7 +70,7 @@ When you enable chunking, read the following instructions.
 - Chunking is only supported for persisted topics.
 - Chunking is only supported for the exclusive and failover subscription types.
 
-When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
+When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
 
 The consumer consumes the chunked messages and buffers them until the consumer receives all the chunks of a message. And then the consumer stitches chunked messages together and places them into the receiver-queue. Clients consume messages from the receiver-queue. Once the consumer consumes the entire large message and acknowledges it, the consumer internally sends acknowledgement of all the chunk messages associated to that large message. You can set the `maxPendingChuckedMessage` param [...]
 
diff --git a/site2/website-next/versioned_docs/version-2.7.3/deploy-aws.md b/site2/website-next/versioned_docs/version-2.7.3/deploy-aws.md
index 7ae3bb0..6323051 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/deploy-aws.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/deploy-aws.md
@@ -210,7 +210,7 @@ Remember to enter this command just only once. If you attempt to enter this comm
 
 Once you have created the necessary AWS resources using Terraform, you can install and run Pulsar on the Terraform-created EC2 instances using Ansible. 
 
-(Optional) If you want to use any [built-in IO connectors](io-connectors) , edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
+(Optional) If you want to use any [built-in IO connectors](io-connectors), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
 
 To run the playbook, enter this command:
 
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-binary-protocol.md b/site2/website-next/versioned_docs/version-2.7.3/develop-binary-protocol.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/developing-binary-protocol.md
rename to site2/website-next/versioned_docs/version-2.7.3/develop-binary-protocol.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-cpp.md b/site2/website-next/versioned_docs/version-2.7.3/develop-cpp.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/developing-cpp.md
rename to site2/website-next/versioned_docs/version-2.7.3/develop-cpp.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-load-manager.md b/site2/website-next/versioned_docs/version-2.7.3/develop-load-manager.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/developing-load-manager.md
rename to site2/website-next/versioned_docs/version-2.7.3/develop-load-manager.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/develop-schema.md b/site2/website-next/versioned_docs/version-2.7.3/develop-schema.md
index cc0606a..e71c04e 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/develop-schema.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/develop-schema.md
@@ -1,14 +1,10 @@
 ---
 id: develop-schema
 title: Custom schema storage
-sidebar_label: Custom schema storage
+sidebar_label: "Custom schema storage"
 original_id: develop-schema
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 By default, Pulsar stores data type [schemas](concepts-schema-registry) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
 
 In order to use a non-default (i.e. non-BookKeeper) storage system for Pulsar schemas, you need to implement two Java interfaces: [`SchemaStorage`](#schemastorage-interface) and [`SchemaStorageFactory`](#schemastoragefactory-interface).
diff --git a/site2/website-next/versioned_docs/version-2.7.3/developing-tools.md b/site2/website-next/versioned_docs/version-2.7.3/develop-tools.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/developing-tools.md
rename to site2/website-next/versioned_docs/version-2.7.3/develop-tools.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/getting-started-helm.md b/site2/website-next/versioned_docs/version-2.7.3/kubernetes-helm.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/getting-started-helm.md
rename to site2/website-next/versioned_docs/version-2.7.3/kubernetes-helm.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/reference-cli-tools.md b/site2/website-next/versioned_docs/version-2.7.3/reference-cli-tools.md
index 2c215bf..d17bd3e 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/reference-cli-tools.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/reference-cli-tools.md
@@ -813,7 +813,7 @@ The table below lists the environment variables that you can use to configure th
 |BOOKIE_STOP_TIMEOUT|Wait time before forcefully killing the Bookie server instance if attempts to stop it are not successful||
 
 
-### `autorecovery`
+### `auto-recovery`
 Runs an auto-recovery service
 
 Usage
diff --git a/site2/website-next/versioned_docs/version-2.7.3/getting-started-docker.md b/site2/website-next/versioned_docs/version-2.7.3/standalone-docker.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/getting-started-docker.md
rename to site2/website-next/versioned_docs/version-2.7.3/standalone-docker.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/tiered-storage-filesystem.md b/site2/website-next/versioned_docs/version-2.7.3/tiered-storage-filesystem.md
index 6d7331a..cc9c0f8 100644
--- a/site2/website-next/versioned_docs/version-2.7.3/tiered-storage-filesystem.md
+++ b/site2/website-next/versioned_docs/version-2.7.3/tiered-storage-filesystem.md
@@ -94,13 +94,12 @@ Besides, you can also configure the filesystem offloader to run it automatically
 
 You can configure the filesystem offloader driver in the `broker.conf` or `standalone.conf` configuration file.
 
-- **Required** configurations are as below.
-
-  <Tabs 
-    defaultValue="HDFS"
-    values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>    
+<Tabs 
+  defaultValue="HDFS"
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+<TabItem value="HDFS">
 
-  <TabItem value="HDFS">
+- **Required** configurations are as below.
 
   Parameter | Description | Example value
   |---|---|---
@@ -109,19 +108,24 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-  <TabItem value="NFS">
+- **Optional** configurations are as below.
+
+  Parameter| Description | Example value
+  |---|---|---
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+<TabItem value="NFS">
+
+- **Required** configurations are as below.
+  
   Parameter | Description | Example value
   |---|---|---
   `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
   `offloadersDirectory` | Offloader directory | offloaders
   `fileSystemProfilePath` | NFS profile path. The configuration file is stored in the NFS profile path. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
 
-  </TabItem>
-
-  </Tabs>
-
 - **Optional** configurations are as below.
 
   Parameter| Description | Example value
@@ -129,6 +133,10 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
   `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
   `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
+</TabItem>
+
+</Tabs>
+
 ### Run filesystem offloader automatically
 
 You can configure the namespace policy to offload data automatically once a threshold is reached. The threshold is based on the size of data that a topic has stored on a Pulsar cluster. Once the topic storage reaches the threshold, an offload operation is triggered automatically. 
@@ -257,7 +265,6 @@ This section provides step-by-step instructions on how to use the filesystem off
 <Tabs 
   defaultValue="HDFS"
   values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
-
 <TabItem value="HDFS">
 
 To move data from Pulsar to HDFS, follow these steps.
diff --git a/site2/website-next/versioned_docs/version-2.7.3/transaction-api.md b/site2/website-next/versioned_docs/version-2.7.3/transactions-api.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/transaction-api.md
rename to site2/website-next/versioned_docs/version-2.7.3/transactions-api.md
diff --git a/site2/website-next/versioned_docs/version-2.7.2/transaction-guarantee.md b/site2/website-next/versioned_docs/version-2.7.3/transactions-guarantee.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.2/transaction-guarantee.md
rename to site2/website-next/versioned_docs/version-2.7.3/transactions-guarantee.md
diff --git a/site2/website-next/versioned_docs/version-2.7.3/concepts-transactions.md b/site2/website-next/versioned_docs/version-2.7.3/transactions.md
similarity index 100%
rename from site2/website-next/versioned_docs/version-2.7.3/concepts-transactions.md
rename to site2/website-next/versioned_docs/version-2.7.3/transactions.md
diff --git a/site2/website-next/versioned_sidebars/version-2.7.0-sidebars.json b/site2/website-next/versioned_sidebars/version-2.7.0-sidebars.json
index 0378a01..649eb15 100644
--- a/site2/website-next/versioned_sidebars/version-2.7.0-sidebars.json
+++ b/site2/website-next/versioned_sidebars/version-2.7.0-sidebars.json
@@ -575,4 +575,4 @@
       ]
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/site2/website-next/versioned_sidebars/version-2.7.3-sidebars.json b/site2/website-next/versioned_sidebars/version-2.7.3-sidebars.json
index 9ad1ecf..e9d87ac 100644
--- a/site2/website-next/versioned_sidebars/version-2.7.3-sidebars.json
+++ b/site2/website-next/versioned_sidebars/version-2.7.3-sidebars.json
@@ -593,4 +593,4 @@
       ]
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/site2/website-next/versions.json b/site2/website-next/versions.json
index 3c22abe..a338f8b 100644
--- a/site2/website-next/versions.json
+++ b/site2/website-next/versions.json
@@ -1 +1 @@
-["2.9.1", "2.9.0"]
+["2.7.3"]