You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2019/06/06 09:05:27 UTC

[pulsar] branch asf-site updated: Updated site at revision c540e28

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0762793  Updated site at revision c540e28
0762793 is described below

commit 07627930bcd544e0673ffbb91385261ee4689cb4
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Jun 6 09:05:18 2019 +0000

    Updated site at revision c540e28
---
 content/docs/en/next/administration-zk-bk.html     |   7 +-
 .../docs/en/next/administration-zk-bk/index.html   |   7 +-
 content/docs/en/next/functions-overview.html       |   2 +-
 content/docs/en/next/functions-overview/index.html |   2 +-
 content/docs/en/next/io-cdc-debezium.html          | 194 +++--
 content/docs/en/next/io-cdc-debezium/index.html    | 194 +++--
 content/docs/en/next/reference-cli-tools.html      |   3 +-
 .../docs/en/next/reference-cli-tools/index.html    |   3 +-
 content/docs/en/next/security-kerberos.html        |   9 +-
 content/docs/en/next/security-kerberos/index.html  |   9 +-
 content/docs/fr/next/administration-zk-bk.html     |   7 +-
 .../docs/fr/next/administration-zk-bk/index.html   |   7 +-
 content/docs/fr/next/functions-overview.html       |   2 +-
 content/docs/fr/next/functions-overview/index.html |   2 +-
 content/docs/fr/next/io-cdc-debezium.html          | 236 ++++--
 content/docs/fr/next/io-cdc-debezium/index.html    | 236 ++++--
 content/docs/fr/next/reference-cli-tools.html      |   3 +-
 .../docs/fr/next/reference-cli-tools/index.html    |   3 +-
 content/docs/fr/next/security-kerberos.html        |   9 +-
 content/docs/fr/next/security-kerberos/index.html  |   9 +-
 content/docs/ja/next/administration-zk-bk.html     |   7 +-
 .../docs/ja/next/administration-zk-bk/index.html   |   7 +-
 content/docs/ja/next/functions-overview.html       |   2 +-
 content/docs/ja/next/functions-overview/index.html |   2 +-
 content/docs/ja/next/io-cdc-debezium.html          | 236 ++++--
 content/docs/ja/next/io-cdc-debezium/index.html    | 236 ++++--
 content/docs/ja/next/reference-cli-tools.html      |   3 +-
 .../docs/ja/next/reference-cli-tools/index.html    |   3 +-
 content/docs/ja/next/security-kerberos.html        |   9 +-
 content/docs/ja/next/security-kerberos/index.html  |   9 +-
 content/docs/zh-CN/next/administration-zk-bk.html  |   7 +-
 .../zh-CN/next/administration-zk-bk/index.html     |   7 +-
 content/docs/zh-CN/next/functions-overview.html    |   2 +-
 .../docs/zh-CN/next/functions-overview/index.html  |   2 +-
 content/docs/zh-CN/next/io-cdc-debezium.html       | 236 ++++--
 content/docs/zh-CN/next/io-cdc-debezium/index.html | 236 ++++--
 content/docs/zh-CN/next/reference-cli-tools.html   |   3 +-
 .../docs/zh-CN/next/reference-cli-tools/index.html |   3 +-
 content/docs/zh-CN/next/security-kerberos.html     |   9 +-
 .../docs/zh-CN/next/security-kerberos/index.html   |   9 +-
 content/swagger/{ => 2.4.0-SNAPSHOT}/swagger.json  |  67 +-
 .../{ => 2.4.0-SNAPSHOT}/swaggerfunctions.json     |  20 +-
 content/swagger/2.4.0-SNAPSHOT/swaggersink.json    | 791 +++++++++++++++++++++
 content/swagger/2.4.0-SNAPSHOT/swaggersource.json  | 739 +++++++++++++++++++
 content/swagger/swagger.json                       |  67 +-
 content/swagger/swaggerfunctions.json              |  20 +-
 46 files changed, 3064 insertions(+), 612 deletions(-)

diff --git a/content/docs/en/next/administration-zk-bk.html b/content/docs/en/next/administration-zk-bk.html
index 4bdb5f5..d9cde37 100644
--- a/content/docs/en/next/administration-zk-bk.html
+++ b/content/docs/en/next/administration-zk-bk.html
@@ -197,8 +197,11 @@ of these regions is unreachable.</p>
 <p>BookKeeper bookies can be configured using the <a href="/docs/en/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/en/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/en/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/en/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/en/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/en/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/en/next/administration-zk-bk/index.html b/content/docs/en/next/administration-zk-bk/index.html
index 4bdb5f5..d9cde37 100644
--- a/content/docs/en/next/administration-zk-bk/index.html
+++ b/content/docs/en/next/administration-zk-bk/index.html
@@ -197,8 +197,11 @@ of these regions is unreachable.</p>
 <p>BookKeeper bookies can be configured using the <a href="/docs/en/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/en/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/en/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/en/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/en/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/en/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/en/next/functions-overview.html b/content/docs/en/next/functions-overview.html
index 75db7b7..38cb50a 100644
--- a/content/docs/en/next/functions-overview.html
+++ b/content/docs/en/next/functions-overview.html
@@ -265,7 +265,7 @@ Then <a href="#cluster-run-mode">deploy it</a> in your Pulsar cluster using the
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/en/next/functions-overview/index.html b/content/docs/en/next/functions-overview/index.html
index 75db7b7..38cb50a 100644
--- a/content/docs/en/next/functions-overview/index.html
+++ b/content/docs/en/next/functions-overview/index.html
@@ -265,7 +265,7 @@ Then <a href="#cluster-run-mode">deploy it</a> in your Pulsar cluster using the
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/en/next/io-cdc-debezium.html b/content/docs/en/next/io-cdc-debezium.html
index 8a4ee9b..da8e788 100644
--- a/content/docs/en/next/io-cdc-debezium.html
+++ b/content/docs/en/next/io-cdc-debezium.html
@@ -44,49 +44,37 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json">{
-    <span class="hljs-attr">"tenant"</span>: <span class="hljs-string">"public"</span>,
-    <span class="hljs-attr">"namespace"</span>: <span class="hljs-string">"default"</span>,
-    <span class="hljs-attr">"name"</span>: <span class="hljs-string">"debezium-kafka-source"</span>,
-    <span class="hljs-attr">"className"</span>: <span class="hljs-string">"org.apache.pulsar.io.kafka.connect.KafkaConnectSource"</span> ,
-    <span class="hljs-attr">"topicName"</span>: <span class="hljs-string">"kafka-connect-topic"</span>,
-    <span class="hljs-attr">"configs"</span>:
-    {
-        <span class="hljs-attr">"task.class"</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>,
-        <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
-        <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
-        <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
-        <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
-        <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
-        <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
-        <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
-        <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
-        <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
-        <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
-        <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
-        <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
-        <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
-        <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
-    },
-    <span class="hljs-attr">"archive"</span>: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
 }
 </code></pre>
-<p>You could also find the yaml example in this <a href="https://github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml">file</a>, which has similar content below:</p>
-<pre><code class="hljs css language-$yaml"><span class="hljs-attribute">tenant</span>: <span class="hljs-string">"public"</span>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml"><span class="hljs-attribute">tenant</span>: <span class="hljs-string">"pubilc"</span>
 <span class="hljs-attribute">namespace</span>: <span class="hljs-string">"default"</span>
-<span class="hljs-attribute">name</span>: <span class="hljs-string">"debezium-kafka-source"</span>
-<span class="hljs-attribute">topicName</span>: <span class="hljs-string">"kafka-connect-topic"</span>
+<span class="hljs-attribute">name</span>: <span class="hljs-string">"debezium-mysql-source"</span>
+<span class="hljs-attribute">topicName</span>: <span class="hljs-string">"debezium-mysql-topic"</span>
 <span class="hljs-attribute">archive</span>: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
 
-##<span class="hljs-attribute">autoAck</span>: true
 <span class="hljs-attribute">parallelism</span>: <span class="hljs-number">1</span>
 
 <span class="hljs-attribute">configs</span>:
-  ## sourceTask
-  task.<span class="hljs-attribute">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-
   ## config for mysql, docker <span class="hljs-attribute">image</span>: debezium/<span class="hljs-attribute">example-mysql</span>:<span class="hljs-number">0.8</span>
   database.<span class="hljs-attribute">hostname</span>: <span class="hljs-string">"localhost"</span>
   database.<span class="hljs-attribute">port</span>: <span class="hljs-string">"3306"</span>
@@ -107,44 +95,126 @@
   ## OFFSET_STORAGE_TOPIC_CONFIG
   offset.storage.<span class="hljs-attribute">topic</span>: <span class="hljs-string">"offset-topic"</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="usage-example"></a><a href="#usage-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>Here is a simple example to store MySQL change data using above example config.</p>
-<ul>
-<li>Start a MySQL server with an example database, from which Debezium can capture changes.</li>
-</ul>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a MySQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a MySQL server with an example database, from which Debezium can capture changes.</p>
 <pre><code class="hljs css language-$bash"> docker <span class="hljs-builtin-name">run</span> -it --rm --name mysql -p 3306:3306 -e <span class="hljs-attribute">MYSQL_ROOT_PASSWORD</span>=debezium -e <span class="hljs-attribute">MYSQL_USER</span>=mysqluser -e <span class="hljs-attribute">MYSQL_PASSWORD</span>=mysqlpw debezium/example-mysql:0.8
-</code></pre>
-<ul>
-<li>Start a Pulsar service locally in standalone mode.</li>
-</ul>
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
 <pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar </span>standalone
+</code></pre></li>
+<li><p>Start pulsar debezium connector, with local run mode, and using above yaml config file. Please make sure that the nar file is available as configured in path <code>connectors/pulsar-io-debezium-mysql-2.3.2.nar</code>.</p>
+<pre><code class="hljs css language-$bash"> bin/pulsar-admin <span class="hljs-keyword">source</span> localrun  --<span class="hljs-keyword">source</span>-config-<span class="hljs-keyword">file</span> debezium-mysql-<span class="hljs-keyword">source</span>-config.yaml
 </code></pre>
-<ul>
-<li>Start pulsar debezium connector, with local run mode, and using above yaml config file. Please make sure that the nar file is available as configured in path <code>connectors/pulsar-io-debezium-mysql-2.3.2.nar</code>.</li>
-</ul>
-<pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar-admin </span>sources localrun  --sourceConfigFile debezium-mysql-source-<span class="hljs-built_in">config</span>.yaml
-</code></pre>
-<ul>
-<li>Subscribe the topic for table <code>inventory.products</code>.</li>
-</ul>
+<pre><code class="hljs css language-$bash">bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{<span class="hljs-attribute">pulsar</span>:version}}<span class="hljs-variable">.nar</span> --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{"database<span class="hljs-variable">.hostname</span>": "localhost","database<span class="hljs-variable">.port</span>": "3306","database<span class [...]
+</code></pre></li>
+<li><p>Subscribe the topic for table <code>inventory.products</code>.</p>
 <pre><code class="hljs"> bin/pulsar-<span class="hljs-keyword">client</span> consume -s <span class="hljs-string">"sub-products"</span> <span class="hljs-keyword">public</span>/<span class="hljs-keyword">default</span>/dbserver1.inventory.products -n <span class="hljs-number">0</span>
-</code></pre>
-<ul>
-<li>start a MySQL cli docker connector, and use it we could change to the table <code>products</code> in MySQL server.</li>
-</ul>
+</code></pre></li>
+<li><p>start a MySQL cli docker connector, and use it we could change to the table <code>products</code> in MySQL server.</p>
 <pre><code class="hljs css language-$bash"><span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string" [...]
-</code></pre>
-<p>This command will pop out MySQL cli, in this cli, we could do a change in table products, use commands below to change the name of 2 items in table products:</p>
+</code></pre></li>
+<li><p>This command will pop out MySQL cli, in this cli, we could do a change in table products, use commands below to change the name of 2 items in table products:</p>
 <pre><code class="hljs">mysql&gt; use inventory;
 mysql&gt; <span class="hljs-keyword">show</span> <span class="hljs-keyword">tables</span>;
 mysql&gt; <span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span>  products ;
 mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> <span class="hljs-type">name</span>=<span class="hljs-string">'1111111111'</span> <span class="hljs-keyword">WHERE</span> id=<span class="hljs-number">101</span>;
 mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> <span class="hljs-type">name</span>=<span class="hljs-string">'1111111111'</span> <span class="hljs-keyword">WHERE</span> id=<span class="hljs-number">107</span>;
+</code></pre></li>
+</ol>
+<p>In above subscribe topic terminal tab, we could find that 2 changes has been kept into products topic.</p>
+<h2><a class="anchor" aria-hidden="true" id="example-of-postgresql"></a><a href="#example-of-postgresql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration-1"></a><a href="#configuration-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-postgres-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml</a>) below to the<code>debezium-postgres-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-yaml"><span class="hljs-attr">tenant:</span> <span class="hljs-string">"public"</span>
+<span class="hljs-attr">namespace:</span> <span class="hljs-string">"default"</span>
+<span class="hljs-attr">name:</span> <span class="hljs-string">"debezium-postgres-source"</span>
+<span class="hljs-attr">topicName:</span> <span class="hljs-string">"debezium-postgres-topic"</span>
+<span class="hljs-attr">archive:</span> <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-<span class="hljs-template-variable">2.3.2</span>.nar"</span>
+
+<span class="hljs-attr">parallelism:</span> <span class="hljs-number">1</span>
+
+<span class="hljs-attr">configs:</span>
+  <span class="hljs-comment">## config for pg, docker image: debezium/example-postgress:0.8</span>
+  <span class="hljs-string">database.hostname:</span> <span class="hljs-string">"localhost"</span>
+  <span class="hljs-string">database.port:</span> <span class="hljs-string">"5432"</span>
+  <span class="hljs-string">database.user:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.password:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.dbname:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.server.name:</span> <span class="hljs-string">"dbserver1"</span>
+  <span class="hljs-string">schema.whitelist:</span> <span class="hljs-string">"inventory"</span>
+
+  <span class="hljs-comment">## PULSAR_SERVICE_URL_CONFIG</span>
+  <span class="hljs-string">pulsar.service.url:</span> <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage-1"></a><a href="#usage-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs css language-$bash">docker pull debezium/example-postgres:<span class="hljs-number">0.8</span>
+docker run -d -it --rm --name pulsar-postgresql -p <span class="hljs-number">5432</span>:<span class="hljs-number">5432</span>  debezium/example-postgres:<span class="hljs-number">0.8</span>
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar </span>standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs css language-$bash">bin/pulsar-admin <span class="hljs-keyword">source</span> localrun  --<span class="hljs-keyword">source</span>-config-<span class="hljs-keyword">file</span> debezium-postgres-<span class="hljs-keyword">source</span>-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs">psql -U postgres postgres
+postgres=<span class="hljs-comment"># \c postgres;</span>
+You are now connected to database <span class="hljs-string">"postgres"</span> as user <span class="hljs-string">"postgres"</span>.
+postgres=<span class="hljs-comment"># SET search_path TO inventory;</span>
+SET
+postgres=<span class="hljs-comment"># select * from products;</span>
+ id  |<span class="hljs-string">        name        </span>|<span class="hljs-string">                       description                       </span>|<span class="hljs-string"> weight
+-----+--------------------+---------------------------------------------------------+--------
+ 102 </span>|<span class="hljs-string"> car battery        </span>|<span class="hljs-string"> 12V car battery                                         </span>|<span class="hljs-string">    8.1
+ 103 </span>|<span class="hljs-string"> 12-pack drill bits </span>|<span class="hljs-string"> 12-pack of drill bits with sizes ranging from #40 to #3 </span>|<span class="hljs-string">    0.8
+ 104 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 12oz carpenter's hammer                                 </span>|<span class="hljs-string">   0.75
+ 105 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 14oz carpenter's hammer                                 </span>|<span class="hljs-string">  0.875
+ 106 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 16oz carpenter's hammer                                 </span>|<span class="hljs-string">      1
+ 107 </span>|<span class="hljs-string"> rocks              </span>|<span class="hljs-string"> box of assorted rocks                                   </span>|<span class="hljs-string">    5.3
+ 108 </span>|<span class="hljs-string"> jacket             </span>|<span class="hljs-string"> water resistent black wind breaker                      </span>|<span class="hljs-string">    0.1
+ 109 </span>|<span class="hljs-string"> spare tire         </span>|<span class="hljs-string"> 24 inch spare tire                                      </span>|<span class="hljs-string">   22.2
+ 101 </span>|<span class="hljs-string"> 1111111111         </span>|<span class="hljs-string"> Small 2-wheel scooter                                   </span>|<span class="hljs-string">   3.14
+(9 rows)
+
+postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+UPDATE 1
+</span></code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs">bin/pulsar-<span class="hljs-keyword">client</span> consume -s <span class="hljs-string">"sub-products"</span> <span class="hljs-keyword">public</span>/<span class="hljs-keyword">default</span>/dbserver1.inventory.products -n <span class="hljs-number">0</span>
 </code></pre>
-<ul>
-<li>In above subscribe topic terminal tab, we could find that 2 changes has been kept into products topic.</li>
-</ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li><li><a href="#example-of-postgresql">Example of PostgreSQL</a><ul class="toc-headings"><li><a href="#configuration-1">Configuration</a></li><li><a href="#usage-1">Usage</a></li></ul></li></ul></nav [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/io-cdc-debezium/index.html b/content/docs/en/next/io-cdc-debezium/index.html
index 8a4ee9b..da8e788 100644
--- a/content/docs/en/next/io-cdc-debezium/index.html
+++ b/content/docs/en/next/io-cdc-debezium/index.html
@@ -44,49 +44,37 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json">{
-    <span class="hljs-attr">"tenant"</span>: <span class="hljs-string">"public"</span>,
-    <span class="hljs-attr">"namespace"</span>: <span class="hljs-string">"default"</span>,
-    <span class="hljs-attr">"name"</span>: <span class="hljs-string">"debezium-kafka-source"</span>,
-    <span class="hljs-attr">"className"</span>: <span class="hljs-string">"org.apache.pulsar.io.kafka.connect.KafkaConnectSource"</span> ,
-    <span class="hljs-attr">"topicName"</span>: <span class="hljs-string">"kafka-connect-topic"</span>,
-    <span class="hljs-attr">"configs"</span>:
-    {
-        <span class="hljs-attr">"task.class"</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>,
-        <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
-        <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
-        <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
-        <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
-        <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
-        <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
-        <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
-        <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
-        <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
-        <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
-        <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
-        <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
-        <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
-        <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
-    },
-    <span class="hljs-attr">"archive"</span>: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
 }
 </code></pre>
-<p>You could also find the yaml example in this <a href="https://github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml">file</a>, which has similar content below:</p>
-<pre><code class="hljs css language-$yaml"><span class="hljs-attribute">tenant</span>: <span class="hljs-string">"public"</span>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml"><span class="hljs-attribute">tenant</span>: <span class="hljs-string">"pubilc"</span>
 <span class="hljs-attribute">namespace</span>: <span class="hljs-string">"default"</span>
-<span class="hljs-attribute">name</span>: <span class="hljs-string">"debezium-kafka-source"</span>
-<span class="hljs-attribute">topicName</span>: <span class="hljs-string">"kafka-connect-topic"</span>
+<span class="hljs-attribute">name</span>: <span class="hljs-string">"debezium-mysql-source"</span>
+<span class="hljs-attribute">topicName</span>: <span class="hljs-string">"debezium-mysql-topic"</span>
 <span class="hljs-attribute">archive</span>: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
 
-##<span class="hljs-attribute">autoAck</span>: true
 <span class="hljs-attribute">parallelism</span>: <span class="hljs-number">1</span>
 
 <span class="hljs-attribute">configs</span>:
-  ## sourceTask
-  task.<span class="hljs-attribute">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-
   ## config for mysql, docker <span class="hljs-attribute">image</span>: debezium/<span class="hljs-attribute">example-mysql</span>:<span class="hljs-number">0.8</span>
   database.<span class="hljs-attribute">hostname</span>: <span class="hljs-string">"localhost"</span>
   database.<span class="hljs-attribute">port</span>: <span class="hljs-string">"3306"</span>
@@ -107,44 +95,126 @@
   ## OFFSET_STORAGE_TOPIC_CONFIG
   offset.storage.<span class="hljs-attribute">topic</span>: <span class="hljs-string">"offset-topic"</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="usage-example"></a><a href="#usage-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
-<p>Here is a simple example to store MySQL change data using above example config.</p>
-<ul>
-<li>Start a MySQL server with an example database, from which Debezium can capture changes.</li>
-</ul>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a MySQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a MySQL server with an example database, from which Debezium can capture changes.</p>
 <pre><code class="hljs css language-$bash"> docker <span class="hljs-builtin-name">run</span> -it --rm --name mysql -p 3306:3306 -e <span class="hljs-attribute">MYSQL_ROOT_PASSWORD</span>=debezium -e <span class="hljs-attribute">MYSQL_USER</span>=mysqluser -e <span class="hljs-attribute">MYSQL_PASSWORD</span>=mysqlpw debezium/example-mysql:0.8
-</code></pre>
-<ul>
-<li>Start a Pulsar service locally in standalone mode.</li>
-</ul>
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
 <pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar </span>standalone
+</code></pre></li>
+<li><p>Start pulsar debezium connector, with local run mode, and using above yaml config file. Please make sure that the nar file is available as configured in path <code>connectors/pulsar-io-debezium-mysql-2.3.2.nar</code>.</p>
+<pre><code class="hljs css language-$bash"> bin/pulsar-admin <span class="hljs-keyword">source</span> localrun  --<span class="hljs-keyword">source</span>-config-<span class="hljs-keyword">file</span> debezium-mysql-<span class="hljs-keyword">source</span>-config.yaml
 </code></pre>
-<ul>
-<li>Start pulsar debezium connector, with local run mode, and using above yaml config file. Please make sure that the nar file is available as configured in path <code>connectors/pulsar-io-debezium-mysql-2.3.2.nar</code>.</li>
-</ul>
-<pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar-admin </span>sources localrun  --sourceConfigFile debezium-mysql-source-<span class="hljs-built_in">config</span>.yaml
-</code></pre>
-<ul>
-<li>Subscribe the topic for table <code>inventory.products</code>.</li>
-</ul>
+<pre><code class="hljs css language-$bash">bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{<span class="hljs-attribute">pulsar</span>:version}}<span class="hljs-variable">.nar</span> --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{"database<span class="hljs-variable">.hostname</span>": "localhost","database<span class="hljs-variable">.port</span>": "3306","database<span class [...]
+</code></pre></li>
+<li><p>Subscribe the topic for table <code>inventory.products</code>.</p>
 <pre><code class="hljs"> bin/pulsar-<span class="hljs-keyword">client</span> consume -s <span class="hljs-string">"sub-products"</span> <span class="hljs-keyword">public</span>/<span class="hljs-keyword">default</span>/dbserver1.inventory.products -n <span class="hljs-number">0</span>
-</code></pre>
-<ul>
-<li>start a MySQL cli docker connector, and use it we could change to the table <code>products</code> in MySQL server.</li>
-</ul>
+</code></pre></li>
+<li><p>start a MySQL cli docker connector, and use it we could change to the table <code>products</code> in MySQL server.</p>
 <pre><code class="hljs css language-$bash"><span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string" [...]
-</code></pre>
-<p>This command will pop out MySQL cli, in this cli, we could do a change in table products, use commands below to change the name of 2 items in table products:</p>
+</code></pre></li>
+<li><p>This command will pop out MySQL cli, in this cli, we could do a change in table products, use commands below to change the name of 2 items in table products:</p>
 <pre><code class="hljs">mysql&gt; use inventory;
 mysql&gt; <span class="hljs-keyword">show</span> <span class="hljs-keyword">tables</span>;
 mysql&gt; <span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span>  products ;
 mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> <span class="hljs-type">name</span>=<span class="hljs-string">'1111111111'</span> <span class="hljs-keyword">WHERE</span> id=<span class="hljs-number">101</span>;
 mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> <span class="hljs-type">name</span>=<span class="hljs-string">'1111111111'</span> <span class="hljs-keyword">WHERE</span> id=<span class="hljs-number">107</span>;
+</code></pre></li>
+</ol>
+<p>In above subscribe topic terminal tab, we could find that 2 changes has been kept into products topic.</p>
+<h2><a class="anchor" aria-hidden="true" id="example-of-postgresql"></a><a href="#example-of-postgresql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration-1"></a><a href="#configuration-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-postgres-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml</a>) below to the<code>debezium-postgres-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-yaml"><span class="hljs-attr">tenant:</span> <span class="hljs-string">"public"</span>
+<span class="hljs-attr">namespace:</span> <span class="hljs-string">"default"</span>
+<span class="hljs-attr">name:</span> <span class="hljs-string">"debezium-postgres-source"</span>
+<span class="hljs-attr">topicName:</span> <span class="hljs-string">"debezium-postgres-topic"</span>
+<span class="hljs-attr">archive:</span> <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-<span class="hljs-template-variable">2.3.2</span>.nar"</span>
+
+<span class="hljs-attr">parallelism:</span> <span class="hljs-number">1</span>
+
+<span class="hljs-attr">configs:</span>
+  <span class="hljs-comment">## config for pg, docker image: debezium/example-postgress:0.8</span>
+  <span class="hljs-string">database.hostname:</span> <span class="hljs-string">"localhost"</span>
+  <span class="hljs-string">database.port:</span> <span class="hljs-string">"5432"</span>
+  <span class="hljs-string">database.user:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.password:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.dbname:</span> <span class="hljs-string">"postgres"</span>
+  <span class="hljs-string">database.server.name:</span> <span class="hljs-string">"dbserver1"</span>
+  <span class="hljs-string">schema.whitelist:</span> <span class="hljs-string">"inventory"</span>
+
+  <span class="hljs-comment">## PULSAR_SERVICE_URL_CONFIG</span>
+  <span class="hljs-string">pulsar.service.url:</span> <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage-1"></a><a href="#usage-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs css language-$bash">docker pull debezium/example-postgres:<span class="hljs-number">0.8</span>
+docker run -d -it --rm --name pulsar-postgresql -p <span class="hljs-number">5432</span>:<span class="hljs-number">5432</span>  debezium/example-postgres:<span class="hljs-number">0.8</span>
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs css language-$bash"> <span class="hljs-keyword">bin/pulsar </span>standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs css language-$bash">bin/pulsar-admin <span class="hljs-keyword">source</span> localrun  --<span class="hljs-keyword">source</span>-config-<span class="hljs-keyword">file</span> debezium-postgres-<span class="hljs-keyword">source</span>-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs">psql -U postgres postgres
+postgres=<span class="hljs-comment"># \c postgres;</span>
+You are now connected to database <span class="hljs-string">"postgres"</span> as user <span class="hljs-string">"postgres"</span>.
+postgres=<span class="hljs-comment"># SET search_path TO inventory;</span>
+SET
+postgres=<span class="hljs-comment"># select * from products;</span>
+ id  |<span class="hljs-string">        name        </span>|<span class="hljs-string">                       description                       </span>|<span class="hljs-string"> weight
+-----+--------------------+---------------------------------------------------------+--------
+ 102 </span>|<span class="hljs-string"> car battery        </span>|<span class="hljs-string"> 12V car battery                                         </span>|<span class="hljs-string">    8.1
+ 103 </span>|<span class="hljs-string"> 12-pack drill bits </span>|<span class="hljs-string"> 12-pack of drill bits with sizes ranging from #40 to #3 </span>|<span class="hljs-string">    0.8
+ 104 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 12oz carpenter's hammer                                 </span>|<span class="hljs-string">   0.75
+ 105 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 14oz carpenter's hammer                                 </span>|<span class="hljs-string">  0.875
+ 106 </span>|<span class="hljs-string"> hammer             </span>|<span class="hljs-string"> 16oz carpenter's hammer                                 </span>|<span class="hljs-string">      1
+ 107 </span>|<span class="hljs-string"> rocks              </span>|<span class="hljs-string"> box of assorted rocks                                   </span>|<span class="hljs-string">    5.3
+ 108 </span>|<span class="hljs-string"> jacket             </span>|<span class="hljs-string"> water resistent black wind breaker                      </span>|<span class="hljs-string">    0.1
+ 109 </span>|<span class="hljs-string"> spare tire         </span>|<span class="hljs-string"> 24 inch spare tire                                      </span>|<span class="hljs-string">   22.2
+ 101 </span>|<span class="hljs-string"> 1111111111         </span>|<span class="hljs-string"> Small 2-wheel scooter                                   </span>|<span class="hljs-string">   3.14
+(9 rows)
+
+postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+UPDATE 1
+</span></code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs">bin/pulsar-<span class="hljs-keyword">client</span> consume -s <span class="hljs-string">"sub-products"</span> <span class="hljs-keyword">public</span>/<span class="hljs-keyword">default</span>/dbserver1.inventory.products -n <span class="hljs-number">0</span>
 </code></pre>
-<ul>
-<li>In above subscribe topic terminal tab, we could find that 2 changes has been kept into products topic.</li>
-</ul>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li><li><a href="#example-of-postgresql">Example of PostgreSQL</a><ul class="toc-headings"><li><a href="#configuration-1">Configuration</a></li><li><a href="#usage-1">Usage</a></li></ul></li></ul></nav [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/reference-cli-tools.html b/content/docs/en/next/reference-cli-tools.html
index d032017..72503d0 100644
--- a/content/docs/en/next/reference-cli-tools.html
+++ b/content/docs/en/next/reference-cli-tools.html
@@ -471,7 +471,8 @@
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/en/next/reference-cli-tools/index.html b/content/docs/en/next/reference-cli-tools/index.html
index d032017..72503d0 100644
--- a/content/docs/en/next/reference-cli-tools/index.html
+++ b/content/docs/en/next/reference-cli-tools/index.html
@@ -471,7 +471,8 @@
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/en/next/security-kerberos.html b/content/docs/en/next/security-kerberos.html
index 868d8c2..ece6dc1 100644
--- a/content/docs/en/next/security-kerberos.html
+++ b/content/docs/en/next/security-kerberos.html
@@ -166,7 +166,14 @@ and the location of the keytab where the principal is stored. It allows the clie
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs"><span class="xml">    <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-auth-sasl<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>$</span><span class="hljs-template-variable">{pulsar.version}</span><span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</span></code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/en/next/security-kerberos/index.html b/content/docs/en/next/security-kerberos/index.html
index 868d8c2..ece6dc1 100644
--- a/content/docs/en/next/security-kerberos/index.html
+++ b/content/docs/en/next/security-kerberos/index.html
@@ -166,7 +166,14 @@ and the location of the keytab where the principal is stored. It allows the clie
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs"><span class="xml">    <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.pulsar<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>pulsar-client-auth-sasl<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>$</span><span class="hljs-template-variable">{pulsar.version}</span><span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</span></code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/fr/next/administration-zk-bk.html b/content/docs/fr/next/administration-zk-bk.html
index 438c19d..2e92bb5 100644
--- a/content/docs/fr/next/administration-zk-bk.html
+++ b/content/docs/fr/next/administration-zk-bk.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/fr/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/fr/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/fr/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/fr/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/fr/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/fr/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/fr/next/administration-zk-bk/index.html b/content/docs/fr/next/administration-zk-bk/index.html
index 438c19d..2e92bb5 100644
--- a/content/docs/fr/next/administration-zk-bk/index.html
+++ b/content/docs/fr/next/administration-zk-bk/index.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/fr/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/fr/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/fr/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/fr/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/fr/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/fr/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/fr/next/functions-overview.html b/content/docs/fr/next/functions-overview.html
index 5fe135d..ffef325 100644
--- a/content/docs/fr/next/functions-overview.html
+++ b/content/docs/fr/next/functions-overview.html
@@ -264,7 +264,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/fr/next/functions-overview/index.html b/content/docs/fr/next/functions-overview/index.html
index 5fe135d..ffef325 100644
--- a/content/docs/fr/next/functions-overview/index.html
+++ b/content/docs/fr/next/functions-overview/index.html
@@ -264,7 +264,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/fr/next/io-cdc-debezium.html b/content/docs/fr/next/io-cdc-debezium.html
index f7fec8f..798f6d0 100644
--- a/content/docs/fr/next/io-cdc-debezium.html
+++ b/content/docs/fr/next/io-cdc-debezium.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/io-cdc-debezium/index.html b/content/docs/fr/next/io-cdc-debezium/index.html
index f7fec8f..798f6d0 100644
--- a/content/docs/fr/next/io-cdc-debezium/index.html
+++ b/content/docs/fr/next/io-cdc-debezium/index.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/reference-cli-tools.html b/content/docs/fr/next/reference-cli-tools.html
index 82e21f2..799e942 100644
--- a/content/docs/fr/next/reference-cli-tools.html
+++ b/content/docs/fr/next/reference-cli-tools.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/fr/next/reference-cli-tools/index.html b/content/docs/fr/next/reference-cli-tools/index.html
index 82e21f2..799e942 100644
--- a/content/docs/fr/next/reference-cli-tools/index.html
+++ b/content/docs/fr/next/reference-cli-tools/index.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/fr/next/security-kerberos.html b/content/docs/fr/next/security-kerberos.html
index cb1cb66..4dbfa5a 100644
--- a/content/docs/fr/next/security-kerberos.html
+++ b/content/docs/fr/next/security-kerberos.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/fr/next/security-kerberos/index.html b/content/docs/fr/next/security-kerberos/index.html
index cb1cb66..4dbfa5a 100644
--- a/content/docs/fr/next/security-kerberos/index.html
+++ b/content/docs/fr/next/security-kerberos/index.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/ja/next/administration-zk-bk.html b/content/docs/ja/next/administration-zk-bk.html
index 3edeb52..9837329 100644
--- a/content/docs/ja/next/administration-zk-bk.html
+++ b/content/docs/ja/next/administration-zk-bk.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/ja/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/ja/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/ja/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/ja/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/ja/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/ja/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/ja/next/administration-zk-bk/index.html b/content/docs/ja/next/administration-zk-bk/index.html
index 3edeb52..9837329 100644
--- a/content/docs/ja/next/administration-zk-bk/index.html
+++ b/content/docs/ja/next/administration-zk-bk/index.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/ja/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/ja/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/ja/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/ja/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/ja/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/ja/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/ja/next/functions-overview.html b/content/docs/ja/next/functions-overview.html
index c2358c9..daa2829 100644
--- a/content/docs/ja/next/functions-overview.html
+++ b/content/docs/ja/next/functions-overview.html
@@ -264,7 +264,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/ja/next/functions-overview/index.html b/content/docs/ja/next/functions-overview/index.html
index c2358c9..daa2829 100644
--- a/content/docs/ja/next/functions-overview/index.html
+++ b/content/docs/ja/next/functions-overview/index.html
@@ -264,7 +264,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/ja/next/io-cdc-debezium.html b/content/docs/ja/next/io-cdc-debezium.html
index 96564fd..9275b03 100644
--- a/content/docs/ja/next/io-cdc-debezium.html
+++ b/content/docs/ja/next/io-cdc-debezium.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="使い方"></a><a href="#使い方" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#使い方">使い方</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather log [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/io-cdc-debezium/index.html b/content/docs/ja/next/io-cdc-debezium/index.html
index 96564fd..9275b03 100644
--- a/content/docs/ja/next/io-cdc-debezium/index.html
+++ b/content/docs/ja/next/io-cdc-debezium/index.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="使い方"></a><a href="#使い方" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#使い方">使い方</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather log [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/reference-cli-tools.html b/content/docs/ja/next/reference-cli-tools.html
index b6bf217..7a1efa3 100644
--- a/content/docs/ja/next/reference-cli-tools.html
+++ b/content/docs/ja/next/reference-cli-tools.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/ja/next/reference-cli-tools/index.html b/content/docs/ja/next/reference-cli-tools/index.html
index b6bf217..7a1efa3 100644
--- a/content/docs/ja/next/reference-cli-tools/index.html
+++ b/content/docs/ja/next/reference-cli-tools/index.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/ja/next/security-kerberos.html b/content/docs/ja/next/security-kerberos.html
index dc1b847..57edcaf 100644
--- a/content/docs/ja/next/security-kerberos.html
+++ b/content/docs/ja/next/security-kerberos.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/ja/next/security-kerberos/index.html b/content/docs/ja/next/security-kerberos/index.html
index dc1b847..57edcaf 100644
--- a/content/docs/ja/next/security-kerberos/index.html
+++ b/content/docs/ja/next/security-kerberos/index.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/zh-CN/next/administration-zk-bk.html b/content/docs/zh-CN/next/administration-zk-bk.html
index 44749ac..70fb092 100644
--- a/content/docs/zh-CN/next/administration-zk-bk.html
+++ b/content/docs/zh-CN/next/administration-zk-bk.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/zh-CN/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/zh-CN/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/zh-CN/next/administration-zk-bk/index.html b/content/docs/zh-CN/next/administration-zk-bk/index.html
index 44749ac..70fb092 100644
--- a/content/docs/zh-CN/next/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/next/administration-zk-bk/index.html
@@ -190,8 +190,11 @@
 <p>BookKeeper bookies can be configured using the <a href="/docs/zh-CN/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important aspect of configuring each bookie is ensuring that the <a href="/docs/zh-CN/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> parameter is set to the connection string for the Pulsar cluster's local ZooKeeper.</p>
 <h3><a class="anchor" aria-hidden="true" id="starting-up-bookies"></a><a href="#starting-up-bookies" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
 <p>You can start up a bookie in two ways: in the foreground or as a background daemon.</p>
-<p>To start up a bookie in the foreground, use the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a></p>
-<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-daemon start bookie</span>
+<p>To start up a bookie in the foreground, use the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper"><code>bookeeper</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/bookkeeper bookie
+</code></pre>
+<p>To start a bookie in the background, use the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
 </code></pre>
 <p>You can verify that the bookie is working properly using the <code>bookiesanity</code> command for the <a href="/docs/zh-CN/next/reference-cli-tools#bookkeeper-shell">BookKeeper shell</a>:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/bookkeeper shell bookiesanity</span>
diff --git a/content/docs/zh-CN/next/functions-overview.html b/content/docs/zh-CN/next/functions-overview.html
index f3bf90e..8f94150 100644
--- a/content/docs/zh-CN/next/functions-overview.html
+++ b/content/docs/zh-CN/next/functions-overview.html
@@ -266,7 +266,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/zh-CN/next/functions-overview/index.html b/content/docs/zh-CN/next/functions-overview/index.html
index f3bf90e..8f94150 100644
--- a/content/docs/zh-CN/next/functions-overview/index.html
+++ b/content/docs/zh-CN/next/functions-overview/index.html
@@ -266,7 +266,7 @@
         Logger LOG = context.getLogger();
         String functionTenant = context.getTenant();
         String functionNamespace = context.getNamespace();
-        String functionName = context.getName();
+        String functionName = context.getFunctionName();
         LOG.info(<span class="hljs-string">"Function tenant/namespace/name: {}/{}/{}"</span>, functionTenant, functionNamespace, functionName);
         <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
     }
diff --git a/content/docs/zh-CN/next/io-cdc-debezium.html b/content/docs/zh-CN/next/io-cdc-debezium.html
index ce18d8f..ca6eded 100644
--- a/content/docs/zh-CN/next/io-cdc-debezium.html
+++ b/content/docs/zh-CN/next/io-cdc-debezium.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/io-cdc-debezium/index.html b/content/docs/zh-CN/next/io-cdc-debezium/index.html
index ce18d8f..ca6eded 100644
--- a/content/docs/zh-CN/next/io-cdc-debezium/index.html
+++ b/content/docs/zh-CN/next/io-cdc-debezium/index.html
@@ -44,80 +44,188 @@
 <tr><td><code>offset.storage.topic</code></td><td><code>true</code></td><td><code>null</code></td><td>Record the last committed offsets that the connector successfully completed.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="configuration-example"></a><a href="#configuration-example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
-<p>Here is a configuration Json example:</p>
-<pre><code class="hljs css language-$json { &quot;tenant&quot;: &quot;public&quot;, &quot;namespace&quot;: &quot;default&quot;, &quot;name&quot;: &quot;debezium-kafka-source&quot;, &quot;className&quot;: &quot;org.apache.pulsar.io.kafka.connect.KafkaConnectSource&quot; , &quot;topicName&quot;: &quot;kafka-connect-topic&quot;, &quot;configs&quot;: { &quot;task.class&quot;: &quot;io.debezium.connector.mysql.MySqlConnectorTask&quot;, &quot;database.hostname&quot;: &quot;localhost&quot;, &qu [...]
-    &lt;<span class="hljs-keyword">br</span> /&gt;You could also find the yaml example <span class="hljs-keyword">in</span> this [<span class="hljs-keyword">file</span>](https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/kafka-connect-adaptor/src/main/resources/debezium-mysql-source-config.yaml), which has similar content below:</span>
-    
-    ```<span class="hljs-variable">$yaml</span>
-    tenant: <span class="hljs-string">"public"</span>
-    namespace: <span class="hljs-string">"default"</span>
-    name: <span class="hljs-string">"debezium-kafka-source"</span>
-    topicName: <span class="hljs-string">"kafka-connect-topic"</span>
-    archive: <span class="hljs-string">"connectors/pulsar-io-debezium-mysql-2.3.2.nar"</span>
-    
-    ##autoAck: true
-    parallelism: 1
-    
-    configs:
-      ## sourceTask
-      task.<span class="hljs-keyword">class</span>: <span class="hljs-string">"io.debezium.connector.mysql.MySqlConnectorTask"</span>
-    
-      ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8
-      database.hostname: <span class="hljs-string">"localhost"</span>
-      database.port: <span class="hljs-string">"3306"</span>
-      database.user: <span class="hljs-string">"debezium"</span>
-      database.password: <span class="hljs-string">"dbz"</span>
-      database.server.id: <span class="hljs-string">"184054"</span>
-      database.server.name: <span class="hljs-string">"dbserver1"</span>
-      database.whitelist: <span class="hljs-string">"inventory"</span>
-    
-      database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>
-      database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span>
-      database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG
-      key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      value.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>
-      ## PULSAR_SERVICE_URL_CONFIG
-      pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
-      ## OFFSET_STORAGE_TOPIC_CONFIG
-      offset.storage.topic: <span class="hljs-string">"offset-topic"</span>
-    
-
-### Usage example
+<h2><a class="anchor" aria-hidden="true" id="example-of-mysql"></a><a href="#example-of-mysql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>We need to create a configuration file before using the Pulsar Debezium connector.</p>
+<h3><a class="anchor" aria-hidden="true" id="configuration"></a><a href="#configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Here is a JSON configuration example:</p>
+<pre><code class="hljs css language-json">{
+    <span class="hljs-attr">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+    <span class="hljs-attr">"database.port"</span>: <span class="hljs-string">"3306"</span>,
+    <span class="hljs-attr">"database.user"</span>: <span class="hljs-string">"debezium"</span>,
+    <span class="hljs-attr">"database.password"</span>: <span class="hljs-string">"dbz"</span>,
+    <span class="hljs-attr">"database.server.id"</span>: <span class="hljs-string">"184054"</span>,
+    <span class="hljs-attr">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+    <span class="hljs-attr">"database.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+    <span class="hljs-attr">"database.history"</span>: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span>,
+    <span class="hljs-attr">"database.history.pulsar.topic"</span>: <span class="hljs-string">"history-topic"</span>,
+    <span class="hljs-attr">"database.history.pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"key.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"value.converter"</span>: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span>,
+    <span class="hljs-attr">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>,
+    <span class="hljs-attr">"offset.storage.topic"</span>: <span class="hljs-string">"offset-topic"</span>
+}
+</code></pre>
+<p>Optionally, you can create a <code>debezium-mysql-source-config.yaml</code> file, and copy the [contents] (<a href="https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml">https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/resources/debezium-mysql-source-config.yaml</a>) below to the <code>debezium-mysql-source-config.yaml</code> file.</p>
+<pre><code class="hljs css language-$yaml tenant: &quot;pubilc&quot; namespace: &quot;default&quot; name: &quot;debezium-mysql-source&quot; topicName: &quot;debezium-mysql-topic&quot; archive: &quot;connectors/pulsar-io-debezium-mysql-2.3.2.nar&quot;">
+<span class="hljs-attribute">parallelism</span>: 1
 
-Here is a simple example to store MySQL change data using above example config.
+<span class="stata">configs: ## config <span class="hljs-keyword">for</span> mysql, docker image: debezium/example-mysql:0.8 database.hostname: <span class="hljs-string">"localhost"</span> database.port: <span class="hljs-string">"3306"</span> database.user: <span class="hljs-string">"debezium"</span> database.password: <span class="hljs-string">"dbz"</span> database.server.id: <span class="hljs-string">"184054"</span> database.server.name: <span class="hljs-string">"dbserver1"</span> da [...]
 
-- Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes. ```<span class="hljs-variable">$bash</span> docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs [...]
+database.history: <span class="hljs-string">"org.apache.pulsar.io.debezium.PulsarDatabaseHistory"</span> database.history.pulsar.topic: <span class="hljs-string">"history-topic"</span> database.history.pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span> ## KEY_CONVERTER_CLASS_CONFIG, VALUE_CONVERTER_CLASS_CONFIG key.converter: <span class="hljs-string">"org.apache.kafka.connect.json.JsonConverter"</span> value.converter: <span class="hljs-string">"org.apache.ka [...]
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
-    ```<span class="hljs-variable">$bash</span>
-     bin/pulsar standalone
+    &lt;<span class="hljs-keyword">br</span> /&gt;### Usage
     
-
-- Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`. ```<span class="hljs-variable">$ [...]
-
-    &lt;<span class="hljs-keyword">br</span> /&gt;- Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    This example shows how to store the data changes of a MySQL <span class="hljs-keyword">table</span> using the configuration <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> the example above.
+    
+    1. Start a MySQL server with <span class="hljs-keyword">an</span> example database, from <span class="hljs-keyword">which</span> Debezium can <span class="hljs-keyword">capture</span> changes.
+    
+        ```<span class="hljs-variable">$bash</span>
+         docker <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysql -p 3306:3306 -<span class="hljs-keyword">e</span> MYSQL_ROOT_PASSWORD=debezium -<span class="hljs-keyword">e</span> MYSQL_USER=mysqluser -<span class="hljs-keyword">e</span> MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
+        ```
+    
+    2. Start a Pulsar service locally <span class="hljs-keyword">in</span> standalone mode.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar standalone
+        ```
+    
+    3. Start pulsar debezium connector, with <span class="hljs-keyword">local</span> <span class="hljs-keyword">run</span> mode, and using above yaml config <span class="hljs-keyword">file</span>. Please make sure that the nar <span class="hljs-keyword">file</span> is available <span class="hljs-keyword">as</span> configured <span class="hljs-keyword">in</span> path `connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar`.
+    
+        ```<span class="hljs-variable">$bash</span>
+         bin/pulsar-admin source localrun  --source-config-<span class="hljs-keyword">file</span> debezium-mysql-source-config.yaml
+        ```
+    
+        ```<span class="hljs-variable">$bash</span>
+        bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-mysql-{{pulsar:<span class="hljs-keyword">version</span>}}.nar --name debezium-mysql-source --destination-topic-name debezium-mysql-topic --tenant public --namespace default --source-config '{<span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,<span class="hljs-string">"database.port"</span>: <span class="hljs-string">"3306"</span>,<span class="hljs-string">"dat [...]
+        ```
+    
+    4. Subscribe the topic <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> `inventory.products`.
+    
+        ```
+         bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+        ```
+    
+    5. start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
+    
+        ```<span class="hljs-variable">$bash</span>
+        <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
+        ```
+    
+    6. This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</spa [...]
+    
+        ```
+        mysql&amp;gt; <span class="hljs-keyword">use</span> inventory;
+        mysql&amp;gt; show tables;
+        mysql&amp;gt; SELECT * FROM  products ;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
+        mysql&amp;gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
+        ```
+    
+     <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.
+    
+    ## Example of PostgreSQL
+    
+    We need to create a configuration <span class="hljs-keyword">file</span> before using the Pulsar Debezium connector.
+    
+    ### Configuration
+    
+    
+    Here is a JSON configuration example:
+    
+    ```json
+    {
+        <span class="hljs-string">"database.hostname"</span>: <span class="hljs-string">"localhost"</span>,
+        <span class="hljs-string">"database.port"</span>: <span class="hljs-string">"5432"</span>,
+        <span class="hljs-string">"database.user"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.password"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.dbname"</span>: <span class="hljs-string">"postgres"</span>,
+        <span class="hljs-string">"database.server.name"</span>: <span class="hljs-string">"dbserver1"</span>,
+        <span class="hljs-string">"schema.whitelist"</span>: <span class="hljs-string">"inventory"</span>,
+        <span class="hljs-string">"pulsar.service.url"</span>: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+    }
     
 
-bin/pulsar-client consume -s <span class="hljs-string">"sub-products"</span> public/default/dbserver1.inventory.products -<span class="hljs-keyword">n</span> 0
+Optionally, you can create a `debezium-postgres-source-config.yaml` <span class="hljs-keyword">file</span>, and <span class="hljs-keyword">copy</span> the \[contents\] (https:<span class="hljs-comment">//github.com/apache/pulsar/blob/master/pulsar-io/debezium/postgres/src/main/resources/debezium-postgres-source-config.yaml) below to the`debezium-postgres-source-config.yaml` file.</span>
 
-    &lt;<span class="hljs-keyword">br</span> /&gt;- start a MySQL <span class="hljs-keyword">cli</span> docker connector, and <span class="hljs-keyword">use</span> it we could change to the <span class="hljs-keyword">table</span> `products` <span class="hljs-keyword">in</span> MySQL server.
-    ```<span class="hljs-variable">$bash</span>
-    <span class="hljs-variable">$docker</span> <span class="hljs-keyword">run</span> -it --<span class="hljs-keyword">rm</span> --name mysqlterm --link mysql --<span class="hljs-keyword">rm</span> mysql:5.7 <span class="hljs-keyword">sh</span> -c 'exec mysql -<span class="hljs-keyword">h</span><span class="hljs-string">"$MYSQL_PORT_3306_TCP_ADDR"</span> -P<span class="hljs-string">"$MYSQL_PORT_3306_TCP_PORT"</span> -uroot -p<span class="hljs-string">"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"</span>'
-    
+```yaml
+tenant: <span class="hljs-string">"public"</span>
+namespace: <span class="hljs-string">"default"</span>
+name: <span class="hljs-string">"debezium-postgres-source"</span>
+topicName: <span class="hljs-string">"debezium-postgres-topic"</span>
+archive: <span class="hljs-string">"connectors/pulsar-io-debezium-postgres-2.3.2.nar"</span>
 
-This command will pop <span class="hljs-keyword">out</span> MySQL <span class="hljs-keyword">cli</span>, <span class="hljs-keyword">in</span> this <span class="hljs-keyword">cli</span>, we could <span class="hljs-keyword">do</span> a change <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products, <span class="hljs-keyword">use</span> commands below to change the name of 2 items <span class="hljs-keyword">in</span> <span class="hljs-keyword">table</span> products:
+parallelism: 1
 
-    mysql&gt; <span class="hljs-keyword">use</span> inventory;
-    mysql&gt; show tables;
-    mysql&gt; SELECT * FROM  products ;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=101;
-    mysql&gt; <span class="hljs-keyword">UPDATE</span> products <span class="hljs-keyword">SET</span> name='1111111111' WHERE id=107;
-    
+configs:
+  ## config <span class="hljs-keyword">for</span> pg, docker image: debezium/example-postgress:0.8
+  database.hostname: <span class="hljs-string">"localhost"</span>
+  database.port: <span class="hljs-string">"5432"</span>
+  database.user: <span class="hljs-string">"postgres"</span>
+  database.password: <span class="hljs-string">"postgres"</span>
+  database.dbname: <span class="hljs-string">"postgres"</span>
+  database.server.name: <span class="hljs-string">"dbserver1"</span>
+  schema.whitelist: <span class="hljs-string">"inventory"</span>
 
-- <span class="hljs-keyword">In</span> above subscribe topic terminal <span class="hljs-keyword">tab</span>, we could find that 2 changes has been kept into products topic.</code></pre>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
+  ## PULSAR_SERVICE_URL_CONFIG
+  pulsar.service.url: <span class="hljs-string">"pulsar://127.0.0.1:6650"</span>
+</span></code></pre>
+<h3><a class="anchor" aria-hidden="true" id="usage"></a><a href="#usage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>This example shows how to store the data changes of a PostgreSQL table using the configuration file in the example above.</p>
+<ol>
+<li><p>Start a PostgreSQL server with an example database, from which Debezium can capture changes.</p>
+<pre><code class="hljs"> $bash
+ docker pull debezium/example-postgres:0.8
+ docker run -d -it --rm --name pulsar-postgresql -p 5432:5432  debezium/example-postgres:0.8
+</code></pre></li>
+<li><p>Start a Pulsar service locally in standalone mode.</p>
+<pre><code class="hljs"> $bash
+  bin/pulsar standalone
+</code></pre></li>
+<li><p>Start the Pulsar Debezium connector in local run mode and use the JSON or YAML configuration file in the example above. Make sure the nar file is available at <code>connectors/pulsar-io-debezium-postgres-2.3.2.nar</code>.</p>
+<pre><code class="hljs"> $bash
+ bin/pulsar-admin source localrun  --source-config-file debezium-postgres-source-config.yaml
+</code></pre></li>
+</ol>
+<p>Optionally, start Pulsar Debezium connector in local run mode and use the JSON config file in the example above.</p>
+<pre><code class="hljs">```$bash
+bin/pulsar-admin source localrun --archive connectors/pulsar-io-debezium-postgres-2.3.2.nar --name debezium-postgres-source --destination-topic-name debezium-postgres-topic --tenant public --namespace default --source-config '{&quot;database.hostname&quot;: &quot;localhost&quot;,&quot;database.port&quot;: &quot;5432&quot;,&quot;database.user&quot;: &quot;postgres&quot;,&quot;database.password&quot;: &quot;postgres&quot;,&quot;database.dbname&quot;: &quot;postgres&quot;,&quot;database.ser [...]
+```
+</code></pre>
+<ol start="4">
+<li><p>PostgreSQL CLI appears after this command is executed. Use the commands below to update the <code>products</code> table.</p>
+<pre><code class="hljs css language-bash">docker <span class="hljs-built_in">exec</span> -it pulsar-postgresql /bin/bash
+</code></pre>
+<pre><code class="hljs"> psql -U postgres postgres
+ postgres=# \c postgres;
+ You are now connected to database &quot;postgres&quot; as user &quot;postgres&quot;.
+ postgres=# SET search_path TO inventory;
+ SET
+ postgres=# select * from products;
+  id  |        name        |                       description                       | weight
+ -----+--------------------+---------------------------------------------------------+--------
+  102 | car battery        | 12V car battery                                         |    8.1
+  103 | 12-pack drill bits | 12-pack of drill bits with sizes ranging from #40 to #3 |    0.8
+  104 | hammer             | 12oz carpenter's hammer                                 |   0.75
+  105 | hammer             | 14oz carpenter's hammer                                 |  0.875
+  106 | hammer             | 16oz carpenter's hammer                                 |      1
+  107 | rocks              | box of assorted rocks                                   |    5.3
+  108 | jacket             | water resistent black wind breaker                      |    0.1
+  109 | spare tire         | 24 inch spare tire                                      |   22.2
+  101 | 1111111111         | Small 2-wheel scooter                                   |   3.14
+ (9 rows)
+ 
+ postgres=# UPDATE products SET name='1111111111' WHERE id=107;
+ UPDATE 1
+</code></pre></li>
+<li><p>Subscribe the topic for the <code>inventory.products</code> table.</p>
+<pre><code class="hljs"> bin/pulsar-client consume -s &quot;sub-products&quot; public/default/dbserver1.inventory.products -n 0
+</code></pre>
+<p>At this time, you will receive the following information:</p>
+<pre><code class="hljs css language-bash">----- got message -----
+{<span class="hljs-string">"schema"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"struct"</span>,<span class="hljs-string">"fields"</span>:[{<span class="hljs-string">"type"</span>:<span class="hljs-string">"int32"</span>,<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false</span>,<span class="hljs-string">"field"</span>:<span class="hljs-string">"id"</span>}],<span class="hljs-string">"optional"</span>:<span class="hljs-literal">false [...]
+</code></pre></li>
+</ol>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-of-mysql">Example of MySQL</a><ul class="toc-headings"><li><a href="#configuration">Configuration</a></li><li><a href="#usage">Usage</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2019 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/reference-cli-tools.html b/content/docs/zh-CN/next/reference-cli-tools.html
index a30136e..6302d1b 100644
--- a/content/docs/zh-CN/next/reference-cli-tools.html
+++ b/content/docs/zh-CN/next/reference-cli-tools.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/zh-CN/next/reference-cli-tools/index.html b/content/docs/zh-CN/next/reference-cli-tools/index.html
index a30136e..6302d1b 100644
--- a/content/docs/zh-CN/next/reference-cli-tools/index.html
+++ b/content/docs/zh-CN/next/reference-cli-tools/index.html
@@ -445,7 +445,8 @@ $ pulsar command
 <tr><td><code>-m</code>, <code>--num-messages</code></td><td>Number of messages to publish in total. If set to 0, it will keep publishing.</td><td>0</td></tr>
 <tr><td><code>-n</code>, <code>--num-producers</code></td><td>The number of producers (per topic)</td><td>1</td></tr>
 <tr><td><code>-t</code>, <code>--num-topic</code></td><td>The number of topics</td><td>1</td></tr>
-<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from a file instead of an empty buffer</td><td></td></tr>
+<tr><td><code>-f</code>, <code>--payload-file</code></td><td>Use payload from an UTF-8 encoded text file and a payload will be randomly selected when publishing messages</td><td></td></tr>
+<tr><td><code>-e</code>, <code>--payload-delimiter</code></td><td>The delimiter used to split lines when using payload from a file</td><td>\n</td></tr>
 <tr><td><code>-r</code>, <code>--rate</code></td><td>Publish rate msg/s across topics</td><td>100</td></tr>
 <tr><td><code>-u</code>, <code>--service-url</code></td><td>Pulsar service URL</td><td></td></tr>
 <tr><td><code>-s</code>, <code>--size</code></td><td>Message size (in bytes)</td><td>1024</td></tr>
diff --git a/content/docs/zh-CN/next/security-kerberos.html b/content/docs/zh-CN/next/security-kerberos.html
index df2a174..1bb6e0b 100644
--- a/content/docs/zh-CN/next/security-kerberos.html
+++ b/content/docs/zh-CN/next/security-kerberos.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/docs/zh-CN/next/security-kerberos/index.html b/content/docs/zh-CN/next/security-kerberos/index.html
index df2a174..1bb6e0b 100644
--- a/content/docs/zh-CN/next/security-kerberos/index.html
+++ b/content/docs/zh-CN/next/security-kerberos/index.html
@@ -162,7 +162,14 @@ saslJaasBrokerSectionName=PulsarBroker</p></li>
 <p>You can add this at the end of <code>PULSAR_EXTRA_OPTS</code> in the file <a href="https://github.com/apache/pulsar/blob/master/conf/pulsar_env.sh"><code>pulsar_env.sh</code></a></p>
 <p>Make sure that the keytabs configured in the <code>pulsar_jaas.conf</code> file and kdc server in the <code>krb5.conf</code> file are reachable by the operating system user who is starting broker.</p>
 <h3><a class="anchor" aria-hidden="true" id="kerberos-configuration-for-clients"></a><a href="#kerberos-configuration-for-clients" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>In client, we need to configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
+<p>In client application, include <code>pulsar-client-auth-sasl</code> in your project dependency.</p>
+<pre><code class="hljs">    &lt;dependency&gt;
+      &lt;groupId&gt;org.apache.pulsar&lt;/groupId&gt;
+      &lt;artifactId&gt;pulsar-client-auth-sasl&lt;/artifactId&gt;
+      &lt;version&gt;${pulsar.version}&lt;/version&gt;
+    &lt;/dependency&gt;
+</code></pre>
+<p>configure the authentication type to use <code>AuthenticationSasl</code>, and also provide the authentication parameters to it.</p>
 <p>There are 2 parameters needed:</p>
 <ul>
 <li><code>saslJaasClientSectionName</code> is corresponding to the section in JAAS configuration file for client;</li>
diff --git a/content/swagger/swagger.json b/content/swagger/2.4.0-SNAPSHOT/swagger.json
similarity index 99%
copy from content/swagger/swagger.json
copy to content/swagger/2.4.0-SNAPSHOT/swagger.json
index eba7d32..645a3f2 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/2.4.0-SNAPSHOT/swagger.json
@@ -6602,7 +6602,7 @@
     "/tenants" : {
       "get" : {
         "tags" : [ "tenants" ],
-        "summary" : "Get the list of tenants.",
+        "summary" : "Get the list of existing tenants.",
         "description" : "",
         "operationId" : "getTenants",
         "consumes" : [ "application/json" ],
@@ -6637,6 +6637,7 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
         } ],
@@ -6665,8 +6666,17 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "TenantInfo",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/definitions/TenantInfo"
+          }
         } ],
         "responses" : {
           "403" : {
@@ -6693,8 +6703,17 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "TenantInfo",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/definitions/TenantInfo"
+          }
         } ],
         "responses" : {
           "403" : {
@@ -6718,6 +6737,7 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
         } ],
@@ -7270,25 +7290,23 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
+        "cpu" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
-        "overLoaded" : {
-          "type" : "boolean"
+        "directMemory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
-        "loadReportType" : {
-          "type" : "string"
+        "lastUpdate" : {
+          "type" : "integer",
+          "format" : "int64"
         },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "lastUpdate" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "cpu" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
@@ -7299,12 +7317,14 @@
         "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "underLoaded" : {
+          "type" : "boolean"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -8302,11 +8322,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "resourceId" : {
-          "type" : "string"
-        },
         "availableResource" : {
           "$ref" : "#/definitions/ResourceDescription"
+        },
+        "resourceId" : {
+          "type" : "string"
         }
       }
     },
@@ -8429,6 +8449,7 @@
       "properties" : {
         "adminRoles" : {
           "type" : "array",
+          "description" : "Comma separated list of auth principal allowed to administrate the tenant.",
           "uniqueItems" : true,
           "items" : {
             "type" : "string"
@@ -8436,12 +8457,14 @@
         },
         "allowedClusters" : {
           "type" : "array",
+          "description" : "Comma separated allowed clusters.",
           "uniqueItems" : true,
           "items" : {
             "type" : "string"
           }
         }
-      }
+      },
+      "description" : "Information of adminRoles and allowedClusters for tenant"
     },
     "TopicStats" : {
       "type" : "object",
diff --git a/content/swagger/swaggerfunctions.json b/content/swagger/2.4.0-SNAPSHOT/swaggerfunctions.json
similarity index 99%
copy from content/swagger/swaggerfunctions.json
copy to content/swagger/2.4.0-SNAPSHOT/swaggerfunctions.json
index 580bd92..5ec27fb 100644
--- a/content/swagger/swaggerfunctions.json
+++ b/content/swagger/2.4.0-SNAPSHOT/swaggerfunctions.json
@@ -1263,6 +1263,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "schemaVersion" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "publishTime" : {
           "type" : "integer",
           "format" : "int64"
@@ -1274,16 +1284,6 @@
         "topicName" : {
           "type" : "string"
         },
-        "producerName" : {
-          "type" : "string"
-        },
-        "schemaVersion" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "data" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.4.0-SNAPSHOT/swaggersink.json b/content/swagger/2.4.0-SNAPSHOT/swaggersink.json
new file mode 100644
index 0000000..1f93fb7
--- /dev/null
+++ b/content/swagger/2.4.0-SNAPSHOT/swaggersink.json
@@ -0,0 +1,791 @@
+{
+  "swagger" : "2.0",
+  "info" : {
+    "description" : "This provides the REST API for Pulsar Sink operations",
+    "version" : "v3",
+    "title" : "Pulsar Sink REST API",
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "basePath" : "/admin/v3",
+  "tags" : [ {
+    "name" : "sinks"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/sinks/builtinsinks" : {
+      "get" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Fetches a list of supported Pulsar IO sink connectors currently running in cluster mode",
+        "description" : "",
+        "operationId" : "getSinkList",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "type" : "array",
+              "items" : {
+                "type" : "object"
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}" : {
+      "get" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Lists all Pulsar Sinks currently deployed in a given namespace",
+        "description" : "",
+        "operationId" : "listSinks",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "type" : "string"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}" : {
+      "get" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Fetches information about a Pulsar Sink currently running in cluster mode",
+        "description" : "",
+        "operationId" : "getSinkInfo",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SinkConfig"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The function doesn't exist"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Creates a new Pulsar Sink in cluster mode",
+        "description" : "",
+        "operationId" : "registerSink",
+        "consumes" : [ "multipart/form-data" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Pulsar Function successfully created"
+          },
+          "400" : {
+            "description" : "Invalid request (function already exists, etc.)"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Updates a Pulsar Sink currently running in cluster mode",
+        "description" : "",
+        "operationId" : "updateSink",
+        "consumes" : [ "multipart/form-data" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Pulsar Function successfully updated"
+          },
+          "400" : {
+            "description" : "Invalid request (function doesn't exist, etc.)"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Deletes a Pulsar Sink currently running in cluster mode",
+        "description" : "",
+        "operationId" : "deregisterSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "The function was successfully deleted"
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The function doesn't exist"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/restart" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Restart all sink instances",
+        "description" : "",
+        "operationId" : "restartSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/start" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Start all sink instances",
+        "description" : "",
+        "operationId" : "startSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/status" : {
+      "get" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Displays the status of a Pulsar Sink running in cluster mode",
+        "description" : "",
+        "operationId" : "getSinkStatus",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SinkStatus"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The sink doesn't exist"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/stop" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Stop all sink instances",
+        "description" : "",
+        "operationId" : "stopSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/{instanceId}/restart" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Restart sink instance",
+        "description" : "",
+        "operationId" : "restartSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/{instanceId}/start" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Start sink instance",
+        "description" : "",
+        "operationId" : "startSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/{instanceId}/status" : {
+      "get" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Displays the status of a Pulsar Sink instance",
+        "description" : "",
+        "operationId" : "getSinkInstanceStatus",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SinkInstanceStatusData"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The sink doesn't exist"
+          }
+        }
+      }
+    },
+    "/sinks/{tenant}/{namespace}/{sinkName}/{instanceId}/stop" : {
+      "post" : {
+        "tags" : [ "sinks" ],
+        "summary" : "Stop sink instance",
+        "description" : "",
+        "operationId" : "stopSink",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sinkName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    }
+  },
+  "definitions" : {
+    "ConsumerConfig" : {
+      "type" : "object",
+      "properties" : {
+        "schemaType" : {
+          "type" : "string"
+        },
+        "serdeClassName" : {
+          "type" : "string"
+        },
+        "receiverQueueSize" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "regexPattern" : {
+          "type" : "boolean"
+        }
+      }
+    },
+    "ExceptionInformation" : {
+      "type" : "object",
+      "properties" : {
+        "exceptionString" : {
+          "type" : "string"
+        },
+        "timestampMs" : {
+          "type" : "integer",
+          "format" : "int64"
+        }
+      }
+    },
+    "Resources" : {
+      "type" : "object",
+      "properties" : {
+        "cpu" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "ram" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "disk" : {
+          "type" : "integer",
+          "format" : "int64"
+        }
+      }
+    },
+    "SinkConfig" : {
+      "type" : "object",
+      "properties" : {
+        "tenant" : {
+          "type" : "string"
+        },
+        "namespace" : {
+          "type" : "string"
+        },
+        "name" : {
+          "type" : "string"
+        },
+        "className" : {
+          "type" : "string"
+        },
+        "sourceSubscriptionName" : {
+          "type" : "string"
+        },
+        "inputs" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string"
+          }
+        },
+        "topicToSerdeClassName" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "topicsPattern" : {
+          "type" : "string"
+        },
+        "topicToSchemaType" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "inputSpecs" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/ConsumerConfig"
+          }
+        },
+        "configs" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "object"
+          }
+        },
+        "secrets" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "object"
+          }
+        },
+        "parallelism" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "processingGuarantees" : {
+          "type" : "string",
+          "enum" : [ "ATLEAST_ONCE", "ATMOST_ONCE", "EFFECTIVELY_ONCE" ]
+        },
+        "retainOrdering" : {
+          "type" : "boolean"
+        },
+        "resources" : {
+          "$ref" : "#/definitions/Resources"
+        },
+        "autoAck" : {
+          "type" : "boolean"
+        },
+        "timeoutMs" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "archive" : {
+          "type" : "string"
+        },
+        "cleanupSubscription" : {
+          "type" : "boolean"
+        },
+        "runtimeFlags" : {
+          "type" : "string"
+        }
+      }
+    },
+    "SinkInstanceStatus" : {
+      "type" : "object",
+      "properties" : {
+        "instanceId" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "status" : {
+          "$ref" : "#/definitions/SinkInstanceStatusData"
+        }
+      }
+    },
+    "SinkInstanceStatusData" : {
+      "type" : "object",
+      "properties" : {
+        "running" : {
+          "type" : "boolean"
+        },
+        "error" : {
+          "type" : "string"
+        },
+        "numRestarts" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "numReadFromPulsar" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "numSystemExceptions" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "latestSystemExceptions" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ExceptionInformation"
+          }
+        },
+        "numSinkExceptions" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "latestSinkExceptions" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ExceptionInformation"
+          }
+        },
+        "numWrittenToSink" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "lastReceivedTime" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "workerId" : {
+          "type" : "string"
+        }
+      }
+    },
+    "SinkStatus" : {
+      "type" : "object",
+      "properties" : {
+        "numInstances" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "numRunning" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "instances" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/SinkInstanceStatus"
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/content/swagger/2.4.0-SNAPSHOT/swaggersource.json b/content/swagger/2.4.0-SNAPSHOT/swaggersource.json
new file mode 100644
index 0000000..3e0f658
--- /dev/null
+++ b/content/swagger/2.4.0-SNAPSHOT/swaggersource.json
@@ -0,0 +1,739 @@
+{
+  "swagger" : "2.0",
+  "info" : {
+    "description" : "This provides the REST API for Pulsar Source operations",
+    "version" : "v3",
+    "title" : "Pulsar Source REST API",
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "basePath" : "/admin/v3",
+  "tags" : [ {
+    "name" : "sources"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/sources/builtinsources" : {
+      "get" : {
+        "tags" : [ "sources" ],
+        "summary" : "Fetches a list of supported Pulsar IO source connectors currently running in cluster mode",
+        "description" : "",
+        "operationId" : "getSourceList",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "type" : "array",
+              "items" : {
+                "type" : "object"
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}" : {
+      "get" : {
+        "tags" : [ "sources" ],
+        "summary" : "Lists all Pulsar Sources currently deployed in a given namespace",
+        "description" : "",
+        "operationId" : "listSources",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "type" : "string"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}" : {
+      "get" : {
+        "tags" : [ "sources" ],
+        "summary" : "Fetches information about a Pulsar Source currently running in cluster mode",
+        "description" : "",
+        "operationId" : "getSourceInfo",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SourceConfig"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The function doesn't exist"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      },
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Creates a new Pulsar Source in cluster mode",
+        "description" : "",
+        "operationId" : "registerSource",
+        "consumes" : [ "multipart/form-data" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Pulsar Function successfully created"
+          },
+          "400" : {
+            "description" : "Invalid request (function already exists, etc.)"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      },
+      "put" : {
+        "tags" : [ "sources" ],
+        "summary" : "Updates a Pulsar Source currently running in cluster mode",
+        "description" : "",
+        "operationId" : "updateSource",
+        "consumes" : [ "multipart/form-data" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Pulsar Function successfully updated"
+          },
+          "400" : {
+            "description" : "Invalid request (function doesn't exist, etc.)"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          }
+        }
+      },
+      "delete" : {
+        "tags" : [ "sources" ],
+        "summary" : "Deletes a Pulsar Source currently running in cluster mode",
+        "description" : "",
+        "operationId" : "deregisterSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "The function was successfully deleted"
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The function doesn't exist"
+          },
+          "408" : {
+            "description" : "Request timeout"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/restart" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Restart all source instances",
+        "description" : "",
+        "operationId" : "restartSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/start" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Start all source instances",
+        "description" : "",
+        "operationId" : "startSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/status" : {
+      "get" : {
+        "tags" : [ "sources" ],
+        "summary" : "Displays the status of a Pulsar Source running in cluster mode",
+        "description" : "",
+        "operationId" : "getSourceStatus",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SourceStatus"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The source doesn't exist"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/stop" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Stop all source instances",
+        "description" : "",
+        "operationId" : "stopSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/{instanceId}/restart" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Restart source instance",
+        "description" : "",
+        "operationId" : "restartSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/{instanceId}/start" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Start source instance",
+        "description" : "",
+        "operationId" : "startSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/{instanceId}/status" : {
+      "get" : {
+        "tags" : [ "sources" ],
+        "summary" : "Displays the status of a Pulsar Source instance",
+        "description" : "",
+        "operationId" : "getSourceInstanceStatus",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation",
+            "schema" : {
+              "$ref" : "#/definitions/SourceInstanceStatusData"
+            }
+          },
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "403" : {
+            "description" : "The requester doesn't have admin permissions"
+          },
+          "404" : {
+            "description" : "The source doesn't exist"
+          }
+        }
+      }
+    },
+    "/sources/{tenant}/{namespace}/{sourceName}/{instanceId}/stop" : {
+      "post" : {
+        "tags" : [ "sources" ],
+        "summary" : "Stop source instance",
+        "description" : "",
+        "operationId" : "stopSource",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "tenant",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "namespace",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "sourceName",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "instanceId",
+          "in" : "path",
+          "required" : true,
+          "type" : "string"
+        } ],
+        "responses" : {
+          "400" : {
+            "description" : "Invalid request"
+          },
+          "404" : {
+            "description" : "The function does not exist"
+          },
+          "500" : {
+            "description" : "Internal server error"
+          }
+        }
+      }
+    }
+  },
+  "definitions" : {
+    "ExceptionInformation" : {
+      "type" : "object",
+      "properties" : {
+        "exceptionString" : {
+          "type" : "string"
+        },
+        "timestampMs" : {
+          "type" : "integer",
+          "format" : "int64"
+        }
+      }
+    },
+    "Resources" : {
+      "type" : "object",
+      "properties" : {
+        "cpu" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "ram" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "disk" : {
+          "type" : "integer",
+          "format" : "int64"
+        }
+      }
+    },
+    "SourceConfig" : {
+      "type" : "object",
+      "properties" : {
+        "tenant" : {
+          "type" : "string"
+        },
+        "namespace" : {
+          "type" : "string"
+        },
+        "name" : {
+          "type" : "string"
+        },
+        "className" : {
+          "type" : "string"
+        },
+        "topicName" : {
+          "type" : "string"
+        },
+        "serdeClassName" : {
+          "type" : "string"
+        },
+        "schemaType" : {
+          "type" : "string"
+        },
+        "configs" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "object"
+          }
+        },
+        "secrets" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "object"
+          }
+        },
+        "parallelism" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "processingGuarantees" : {
+          "type" : "string",
+          "enum" : [ "ATLEAST_ONCE", "ATMOST_ONCE", "EFFECTIVELY_ONCE" ]
+        },
+        "resources" : {
+          "$ref" : "#/definitions/Resources"
+        },
+        "archive" : {
+          "type" : "string"
+        },
+        "runtimeFlags" : {
+          "type" : "string"
+        }
+      }
+    },
+    "SourceInstanceStatus" : {
+      "type" : "object",
+      "properties" : {
+        "instanceId" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "status" : {
+          "$ref" : "#/definitions/SourceInstanceStatusData"
+        }
+      }
+    },
+    "SourceInstanceStatusData" : {
+      "type" : "object",
+      "properties" : {
+        "running" : {
+          "type" : "boolean"
+        },
+        "error" : {
+          "type" : "string"
+        },
+        "numRestarts" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "numReceivedFromSource" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "numSystemExceptions" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "latestSystemExceptions" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ExceptionInformation"
+          }
+        },
+        "numSourceExceptions" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "latestSourceExceptions" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ExceptionInformation"
+          }
+        },
+        "numWritten" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "lastReceivedTime" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "workerId" : {
+          "type" : "string"
+        }
+      }
+    },
+    "SourceStatus" : {
+      "type" : "object",
+      "properties" : {
+        "numInstances" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "numRunning" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "instances" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/SourceInstanceStatus"
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index eba7d32..645a3f2 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -6602,7 +6602,7 @@
     "/tenants" : {
       "get" : {
         "tags" : [ "tenants" ],
-        "summary" : "Get the list of tenants.",
+        "summary" : "Get the list of existing tenants.",
         "description" : "",
         "operationId" : "getTenants",
         "consumes" : [ "application/json" ],
@@ -6637,6 +6637,7 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
         } ],
@@ -6665,8 +6666,17 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "TenantInfo",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/definitions/TenantInfo"
+          }
         } ],
         "responses" : {
           "403" : {
@@ -6693,8 +6703,17 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "TenantInfo",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/definitions/TenantInfo"
+          }
         } ],
         "responses" : {
           "403" : {
@@ -6718,6 +6737,7 @@
         "parameters" : [ {
           "name" : "tenant",
           "in" : "path",
+          "description" : "The tenant name",
           "required" : true,
           "type" : "string"
         } ],
@@ -7270,25 +7290,23 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
+        "cpu" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
-        "overLoaded" : {
-          "type" : "boolean"
+        "directMemory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         },
-        "loadReportType" : {
-          "type" : "string"
+        "lastUpdate" : {
+          "type" : "integer",
+          "format" : "int64"
         },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "lastUpdate" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "cpu" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
@@ -7299,12 +7317,14 @@
         "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "underLoaded" : {
+          "type" : "boolean"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -8302,11 +8322,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "resourceId" : {
-          "type" : "string"
-        },
         "availableResource" : {
           "$ref" : "#/definitions/ResourceDescription"
+        },
+        "resourceId" : {
+          "type" : "string"
         }
       }
     },
@@ -8429,6 +8449,7 @@
       "properties" : {
         "adminRoles" : {
           "type" : "array",
+          "description" : "Comma separated list of auth principal allowed to administrate the tenant.",
           "uniqueItems" : true,
           "items" : {
             "type" : "string"
@@ -8436,12 +8457,14 @@
         },
         "allowedClusters" : {
           "type" : "array",
+          "description" : "Comma separated allowed clusters.",
           "uniqueItems" : true,
           "items" : {
             "type" : "string"
           }
         }
-      }
+      },
+      "description" : "Information of adminRoles and allowedClusters for tenant"
     },
     "TopicStats" : {
       "type" : "object",
diff --git a/content/swagger/swaggerfunctions.json b/content/swagger/swaggerfunctions.json
index 580bd92..5ec27fb 100644
--- a/content/swagger/swaggerfunctions.json
+++ b/content/swagger/swaggerfunctions.json
@@ -1263,6 +1263,16 @@
           "type" : "integer",
           "format" : "int32"
         },
+        "schemaVersion" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "publishTime" : {
           "type" : "integer",
           "format" : "int64"
@@ -1274,16 +1284,6 @@
         "topicName" : {
           "type" : "string"
         },
-        "producerName" : {
-          "type" : "string"
-        },
-        "schemaVersion" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "data" : {
           "type" : "array",
           "items" : {